<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>ViNull, Off the Record</title><link>http://devlicio.us/blogs/vinull/default.aspx</link><description>Distilled ramblings of &lt;a href="http://www.vinull.com/"&gt;Michael C. Neel&lt;/a&gt; delivered right to your browser.</description><dc:language>en</dc:language><generator>CommunityServer 2008.5 SP1 (Build: 31106.3070)</generator><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/MichaelCNeel" /><feedburner:info uri="michaelcneel" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item><title>Moving to Azure: Worker Roles for Nothing and Tasks for Free</title><link>http://feedproxy.google.com/~r/MichaelCNeel/~3/_ZSgNJLERpU/moving-to-azure-worker-roles-for-nothing-and-tasks-for-free.aspx</link><pubDate>Mon, 24 Oct 2011 03:14:00 GMT</pubDate><guid isPermaLink="false">40756a8b-6212-4073-9d98-6c26781577de:68322</guid><dc:creator>Michael C. Neel</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;If you&amp;rsquo;ve been to at least one Azure presentation you&amp;rsquo;ve probably heard Azure has two primary roles: Web Roles and Worker Roles.&amp;nbsp; Web Roles run websites, and Worker Roles run tasks.&amp;nbsp; The two sites I&amp;rsquo;m moving, &lt;a href="http://XboxIndies.com"&gt;XboxIndies.com&lt;/a&gt; (which is moved, yay!) and &lt;a href="http://GameMarx.com"&gt;GameMarx.com&lt;/a&gt;, use a few automation scripts to update the database and aggregate news feeds.&amp;nbsp; This sounds like a perfect excuse for a Worker Role, but there is a draw back to spinning up another server: cost.&amp;nbsp; There is a cheaper alternative though&amp;hellip;&lt;/p&gt;
&lt;p&gt;Roles in Azure are really customized VMs running some flavor of Windows Server 2008.&amp;nbsp; This means there is a Task Scheduler we can use to run automation tasks!&lt;/p&gt;
&lt;p&gt;The easy way to setup a scheduled task in an Azure Web Role is to enable Remote Desktop, log in and add a task.&amp;nbsp; I won&amp;rsquo;t cover details, but &lt;a href="http://msdn.microsoft.com/en-us/library/windowsazure/gg443832.aspx"&gt;setting up Remote Desktop access with the Azure SDK 1.5 is simple and 100% GUI supported&lt;/a&gt;.&amp;nbsp; You will have to start the Task Scheduler service as by default the service is set to start up &amp;ldquo;Manual&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;Setting up the task manually is good for development, but you&amp;rsquo;ll probably want to automate the process to simplify deployments.&amp;nbsp; &lt;strong&gt;Note:&lt;/strong&gt;&amp;nbsp; Any startup scripts will be run per &lt;em&gt;instance&lt;/em&gt; of your Web Role, so make sure there is no harm in the application by having multiple servers run the same script.&lt;/p&gt;
&lt;p&gt;Now, before I show you my solution, I want to say I tried to use PowerShell like the cool kids.&amp;nbsp; An hour into to trying to figure how the &lt;a href="http://msdn.microsoft.com/en-us/library/windows/desktop/aa383607(v=vs.85).aspx"&gt;Task Scheduler API&lt;/a&gt; works inside of PowerShell I decided to scrap that approach and go with what I know works without fuss &amp;ndash; Windows Shell Scripts!&lt;/p&gt;
&lt;p&gt;Here is my startup script:&lt;/p&gt;
&lt;pre class="code"&gt;net start &amp;quot;task scheduler&amp;quot;
net user autoguy n0t@RF45$_ /add
net localgroup Administrators autoguy /add
schtasks /create /SC DAILY /MO 1 /ST 08:00 /TN DBUpdate /TR %~dp0XBLIGUpdate.exe /F /RU autoguy /RP n0t@RF45$_ /RL HIGHEST
schtasks /create /SC MINUTE /MO 15 /ST 00:00 /TN StoryUpdate /TR &amp;quot;%~dp0SitePing.exe http://www.xboxindies.com/hiddenupdateurl&amp;quot; /F /RU autoguy /RP n0t@RF45$_ /RL HIGHEST&lt;/pre&gt;
&lt;p&gt;I saved this script as &amp;ldquo;startup.cmd&amp;rdquo; in a folder called &amp;ldquo;ServerScripts&amp;rdquo; in the root of my WebRole.&amp;nbsp; I also placed a web.config file in this folder set to deny all access from the web.&amp;nbsp; &amp;lt;/&amp;gt;&lt;/p&gt;
&lt;p&gt;A quick rundown of the commands in the script:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;ldquo;net start&amp;rdquo; starts the task scheduler service. &lt;/li&gt;
&lt;li&gt;&amp;rdquo;net user&amp;rdquo; creates a new user on the server.&amp;nbsp; The arguments are the username and password. &lt;/li&gt;
&lt;li&gt;&amp;ldquo;net localgroup&amp;rdquo; adds the new user to a local group on the server.&amp;nbsp; I am adding the new &amp;ldquo;autoguy&amp;rdquo; user to the Administrators group. &lt;/li&gt;
&lt;li&gt;The last two lines add the scheduled tasks. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You can get help on the various task creation switches by running &amp;ldquo;schtasks /create /?&amp;rdquo; at your local command prompt.&amp;nbsp; The only magic in these line is the command script variable %~dp0 which is the folder the script is in.&amp;nbsp; I added the programs XBLIGUpdate.exe and SitePing.exe to the same folder so it would be easy to reference in the script, since I can&amp;rsquo;t make full path assumptions in Azure. &lt;/p&gt;
&lt;p&gt;To run this script when the role is instanced, add the following to the &amp;lt;WebRole&amp;gt; section of your ServiceDefinition.csdef file:&lt;/p&gt;
&lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Startup&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
  &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Task &lt;/span&gt;&lt;span style="color:red;"&gt;taskType&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;background&lt;/span&gt;&amp;quot; &lt;span style="color:red;"&gt;commandLine&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;ServerScripts\startup.cmd&lt;/span&gt;&amp;quot; &lt;span style="color:red;"&gt;executionContext&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;elevated&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;/&amp;gt;      
&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Startup&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;I chose to place the task in the background so that it doesn&amp;rsquo;t block the startup of the Web Role.&amp;nbsp; If you set the script to &amp;ldquo;simple&amp;rdquo; and it fails, your Web Role could fail to start.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://devlicio.us/aggbug.aspx?PostID=68322" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/MichaelCNeel/~4/_ZSgNJLERpU" height="1" width="1"/&gt;</description><feedburner:origLink>http://devlicio.us/blogs/vinull/archive/2011/10/23/moving-to-azure-worker-roles-for-nothing-and-tasks-for-free.aspx</feedburner:origLink></item><item><title>Moving to Azure: Static Assets</title><link>http://feedproxy.google.com/~r/MichaelCNeel/~3/otfhHGW9tfg/moving-to-azure-static-assets.aspx</link><pubDate>Mon, 17 Oct 2011 03:39:00 GMT</pubDate><guid isPermaLink="false">40756a8b-6212-4073-9d98-6c26781577de:68292</guid><dc:creator>Michael C. Neel</dc:creator><slash:comments>0</slash:comments><description>&lt;p align="center"&gt;&lt;img height="360" width="640" src="http://static.gamemarx.com/games/images/66acd000-77fe-1000-9115-d80258550998/lg_screen2.jpg" style="display:block;float:none;margin-left:auto;margin-right:auto;" alt="" /&gt;You may not have noticed, but this image came from the cloud!&lt;/p&gt;
&lt;p&gt;The next stage in migrating GameMarx.com and XboxIndies.com to Azure is moving the static assets website static.gamemarx.com.&amp;nbsp; This site hosts game boxart, screenshots, video thumbnails, and &lt;a href="http://itunes.apple.com/us/podcast/gamemarx-podcast/id317779792"&gt;the podcast&lt;/a&gt;.&amp;nbsp; In a traditional web hosting scenario, it&amp;rsquo;s common to create a static site for performance.&amp;nbsp; On the server side all dynamic content and script plugins can be disabled, resulting in a faster turnaround for content.&amp;nbsp; On the client side, most browsers will limit the number of concurrent connections to a single server.&amp;nbsp; By using a second server for the same page, the number of concurrent connections will increase, resulting in a faster load time.&lt;/p&gt;
&lt;p&gt;With Azure there is another good reason to add a static site &amp;ndash; it&amp;rsquo;s cheap!&amp;nbsp; Currently Azure Storage is $0.15/GB sent (uploads are free) + $0.15/GB stored per month.&amp;nbsp; 20 GB of transfer per month would be a decently busy site, and would only cost $3!&amp;nbsp; Running a website out of Azure Storage does not require any WebRoles or VMs, so you&amp;rsquo;re only paying for data.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Cloud URLs&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;When you store a file as a blob in Azure Blob Storage, the URI is created using the blob name, storage container, and storage account.&amp;nbsp; The structure is:&lt;/p&gt;
&lt;pre&gt;http://&amp;lt;account&amp;gt;/&amp;lt;container&amp;gt;/&amp;lt;blob&amp;gt;&lt;/pre&gt;
&lt;p&gt;Within the Azure control panel, you can map a custom domain name to the account.&amp;nbsp; In my case I&amp;rsquo;ve setup a CNAME of static.gamemarx.com pointing to gamemarxstatic.blob.core.windows.net.&amp;nbsp; The container can only include letters, numbers, and dashes.&amp;nbsp; The blob name can contain pretty much anything, but special characters need to be URL escaped.&amp;nbsp; My example image above has the following URI:&lt;/p&gt;
&lt;pre&gt;http://static.gamemarx.com/games/images/66acd000-77fe-1000-9115-d80258550998/lg_screen2.jpg&lt;/pre&gt;
&lt;p&gt;Where did the extra folders come from?&amp;nbsp; Well, they don&amp;rsquo;t exist &amp;ndash; like the Matrix they are just a construct of the mind.&amp;nbsp; In my example, the blob is named &amp;ldquo;images/66acd000-77fe-1000-9115-d80258550998/lg_screen2.jpg&amp;rdquo;.&amp;nbsp; &amp;ldquo;/&amp;rdquo; is a legal character in a blob name.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;File Management&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The blob name trick may be nice for the browser, but you will have to deal with reality when managing files on the server.&amp;nbsp; In the Azure SDK Microsoft includes a class &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.windowsazure.storageclient.cloudblobdirectory.aspx"&gt;CloudBlobDirectory&lt;/a&gt; to make things easier.&amp;nbsp; When you call ListBlobs() on the container, the result will (by default) will include CloudBlob and CloudBlobDirectory objects.&amp;nbsp; The directory objects use the blob names to create a virtual hierarchy, and have their own ListBlobs() method plus a GetSubdirectory() method for walking the tree.&lt;/p&gt;
&lt;p&gt;If you need to create a file in the root of the site, such as a clientaccesspolicy.xml file, you can setup a special container named &amp;ldquo;$root&amp;rdquo;.&amp;nbsp; Blobs in &amp;ldquo;$root&amp;rdquo; can be accessed with or without the container name in the URL.&lt;/p&gt;
&lt;p&gt;Be sure all the containers you create are set to public read access to avoid clients getting 403 &amp;ndash; Forbidden errors.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Storage Issues&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Azure does not compress content automatically when requested by a client (i.e. GZip the document and send a &amp;ldquo;Content-Encoding: gzip&amp;rdquo; header).&amp;nbsp; For me, this is not a big deal &amp;ndash; I&amp;rsquo;m only serving jpegs and mp3s, which are already compressed.&amp;nbsp; If however you have text documents stored, you will want to compress these not only for the Data Out savings, but to increase the page load time as well.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;To enable content compression, you will need to compress the content before uploading, and set the ContentEncoding blob property to the method used.&amp;nbsp; &lt;a href="http://sriramk.com/blog/2008/11/compressed-gzip-content-from-windows.html"&gt;Sriram Krishnan has a good write up on sending gzip content from Azure storage&lt;/a&gt;.&amp;nbsp; There is a downside &amp;ndash; the content will always be served compressed, no matter the client&amp;rsquo;s AcceptEncoding headers.&amp;nbsp; All modern browsers accept compressed content, but if you are supporting some non-standard clients they will not be able to read the content.&lt;/p&gt;
&lt;p&gt;Finally, there is no default document feature in Azure Blob Storage.&amp;nbsp; If you publish a fully static website to Azure Blob Storage, no one could load the homepage!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Going Web Scale!&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Negatives aside, there is still another advantage for using Azure Storage beyond cost: the &lt;a href="http://www.microsoft.com/windowsazure/features/cdn/"&gt;Azure Content Deliver Network&lt;/a&gt;.&amp;nbsp; With a simple configuration change in the azure control panel I can send my content out to 24 datacenters around the world, speeding delivery and providing alternate routes during internet outages. &lt;/p&gt;
&lt;p&gt;To active the CDN once you have your content in blob storage, log into the control panel and click &amp;ldquo;Create CDN&amp;rdquo;.&amp;nbsp; Then point the CDN at the storage account as the &amp;ldquo;master&amp;rdquo; server, and setup a DNS CNAME and you are done.&lt;/p&gt;
&lt;p&gt;I did not do this with my site however, because I do not have the traffic levels to warrant the need.&amp;nbsp; The CDN rates are similar to Storage (nodes outside Europe and North America are $0.20/GB data out) but there is a &amp;ldquo;double charge&amp;rdquo; for content as it&amp;rsquo;s loaded into a CDN node. &lt;/p&gt;
&lt;p&gt;When a user in London requests an image, they will first try the Europe CDN node.&amp;nbsp; If the node hasn&amp;rsquo;t already cached the image, the node will request it from the Master Blob Storage Account.&amp;nbsp; Then the London CDN node will send the image to the user.&amp;nbsp; There will be a Data Out charge from the Master server, and again from the CDN node.&amp;nbsp; Subsequent requests to the same CDN node will only have a single charge, as they will be served from cache.&lt;/p&gt;
&lt;p&gt;Content is cached at a CDN node based upon request traffic.&amp;nbsp; Since I don&amp;rsquo;t have that much traffic, it&amp;rsquo;s likely most of my content will expire before I see a real benefit.&amp;nbsp; (and to be 100% honest, I cannot find anywhere that states CDN is included in the Bizspark Azure package &amp;ndash; sorry London!).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;I&amp;rsquo;d like to thank&amp;hellip;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Once again I&amp;rsquo;d like to thank &lt;a href="http://brianhprince.com/"&gt;Brian H. Prince&lt;/a&gt; and &lt;a href="http://twitter.com/#!/chrishayuk"&gt;Chris Hay&lt;/a&gt; for writing &lt;a href="http://www.amazon.com/Azure-Action-Chris-Hay/dp/193518248X/"&gt;Azure In Action&lt;/a&gt; &amp;ndash; which has a section on running a static website from blob storage.&lt;/p&gt;
&lt;p&gt;The screenshot is from &lt;a href="http://marketplace.xbox.com/en-US/Product/Pixel-Animator-3D/66acd000-77fe-1000-9115-d80258550998"&gt;Pixel Animator 3D&lt;/a&gt; &amp;ndash; an Xbox Indie Game that let&amp;rsquo;s you create animations using those Minecraft blocks (aka &lt;a href="http://en.wikipedia.org/wiki/Voxel"&gt;voxels&lt;/a&gt;).&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://devlicio.us/aggbug.aspx?PostID=68292" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/MichaelCNeel/~4/otfhHGW9tfg" height="1" width="1"/&gt;</description><feedburner:origLink>http://devlicio.us/blogs/vinull/archive/2011/10/16/moving-to-azure-static-assets.aspx</feedburner:origLink></item><item><title>Moving to Azure: The Database</title><link>http://feedproxy.google.com/~r/MichaelCNeel/~3/0gb4xXSHJvk/moving-to-azure-the-database.aspx</link><pubDate>Sun, 02 Oct 2011 21:57:00 GMT</pubDate><guid isPermaLink="false">40756a8b-6212-4073-9d98-6c26781577de:68238</guid><dc:creator>Michael C. Neel</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Azure has two main services for persistent data storage for application: Azure Table Storage and SQL Azure.&amp;nbsp; The really boil down to a normal SQL relational database, and an document based database.&amp;nbsp; Initially Azure had only Table Storage, but it appears Microsoft was ahead of the &lt;a href="http://en.wikipedia.org/wiki/NoSQL"&gt;NoSQL&lt;/a&gt; movement that has become popular of late and they were met with a strong cry for SQL.&amp;nbsp; The good news is both options are robust and well supported, though in many cases its likely Table Storage will be cheaper than SQL.&lt;/p&gt;
&lt;p&gt;GameMarx.com and XboxIndies.com share a single database.&amp;nbsp; The database is running on MS SQL Express 2008.&amp;nbsp; The sites are a good candidate for Table Storage.&amp;nbsp; Under the hood, all of the content is cached to disk in document format.&amp;nbsp; A game page on either site gets data from a single file that will contain all the data needed to render that page.&amp;nbsp; This simplifies the site down to pretty much applying a template to a data file for more requests and is quite speedy.&amp;nbsp; It was probably a premature optimization, as neither site does enough traffic to stress a modern database, but we built it for &lt;a href="http://www.xtranormal.com/watch/6995033/mongo-db-is-web-scale"&gt;web scale&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Even though Table Storage is an option, time is a factor.&amp;nbsp; Since I can migrate the sites to Table Storage any time, I will start off using SQL Azure.&amp;nbsp; Thanks to reading &lt;a href="http://www.amazon.com/Azure-Action-Chris-Hay/dp/193518248X/"&gt;Azure in Action&lt;/a&gt; I learned of the &lt;a href="http://sqlazuremw.codeplex.com/"&gt;SQL Azure Migration Wizard&lt;/a&gt;.&amp;nbsp; This tool makes it easy to export from an MS SQL database and import the structure and data to SQL Azure.&amp;nbsp; SQL Azure is similar to MS SQL, but not a 100% match and requires several small tweaks to DDL statements.&amp;nbsp; The Wizard will make all of these tweaks, and alert you to any structures that are not SQL Azure ready (SQL Azure does not like tables without a primary key for example).&lt;/p&gt;
&lt;p&gt;In our sites we are using the ASP.NET Membership Provider and I was concerned that database structures needed to support this would not import cleanly into SQL Azure.&amp;nbsp; I was glad to be wrong.&amp;nbsp; Our entire database imported cleanly and after changing my connections strings a local dev instance of the sites were running smoothly against SQL Azure.&lt;/p&gt;
&lt;p&gt;There was one bump in the road, and that was I did not have SQL 2008 R2 &lt;strong&gt;SP1&lt;/strong&gt; installed locally, only SQL 2008 R2.&amp;nbsp; The Wizard requires SP1 to be installed, and if it&amp;rsquo;s not you&amp;rsquo;ll get some odd errors when you attempt to connect to SQL Azure.&amp;nbsp; The good news is the latest Management Studio includes support for&amp;nbsp; SQL Azure, so many things you can do via GUI instead of command line now.&amp;nbsp; The support isn&amp;rsquo;t prefect though, the add user option for example just launches a query window with an template for adding a user via SQL.&lt;/p&gt;
&lt;p&gt;Can I be so lucky the rest of the move goes this smoothly?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://devlicio.us/aggbug.aspx?PostID=68238" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/MichaelCNeel/~4/0gb4xXSHJvk" height="1" width="1"/&gt;</description><feedburner:origLink>http://devlicio.us/blogs/vinull/archive/2011/10/02/moving-to-azure-the-database.aspx</feedburner:origLink></item><item><title>Moving to Azure: The Plan and Start</title><link>http://feedproxy.google.com/~r/MichaelCNeel/~3/62cH-YMGM20/moving-to-azure-the-plan-and-start.aspx</link><pubDate>Sun, 02 Oct 2011 16:40:00 GMT</pubDate><guid isPermaLink="false">40756a8b-6212-4073-9d98-6c26781577de:68236</guid><dc:creator>Michael C. Neel</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;After a conversation with &lt;a href="http://www.softsyshosting.com/"&gt;my former webhost&lt;/a&gt; about the meaning of &amp;quot;Recurring Annual Discount&amp;quot; (we have different definitions of the word &amp;quot;Recurring&amp;quot;), I decided it was time once again to consider hosting options.&lt;/p&gt;
&lt;p&gt;I was hosting around 15 websites on a Windows 2008 VPS server.&amp;nbsp; This server was running MS SQL Express and IIS for the ASP.NET websites, MySQL for several WordPress websites, and Apache for &lt;a href="http://www.visualsvn.com/server/"&gt;VisualSVN&lt;/a&gt; server.&amp;nbsp; Oh, the server is also running DNS for the sites. All this ran smoothly even though the server only had 512 Mb of RAM.&lt;/p&gt;
&lt;p&gt;Getting all this in one place is expensive, but if I split up the hosting things become cheaper.&amp;nbsp; The first move I made was moving all the DNS hosting to &lt;a href="http://zonomi.com/"&gt;Zonomi.com&lt;/a&gt;.&amp;nbsp; It&amp;#39;s possible I could have skipped this step, since most hosting accounts will include some DNS, but I don&amp;#39;t like having the two coupled.&amp;nbsp; On some webhosts, pointing the DNS at servers not controlled by the webhost can cause problems or is not supported, and sometimes they number and types of DNS records you can create are limited.&amp;nbsp; For $15/yr Zonomi can host all my domains, and I&amp;#39;ve been really impressed with how quickly changes propagate from their servers.&lt;/p&gt;
&lt;p&gt;The next move was moving all of our SVN source controlled projects to &lt;a href="https://bitbucket.org/"&gt;Bitbucket.org&lt;/a&gt;.&amp;nbsp; It was time to move to DVCS anyway and keep up with the times.&amp;nbsp; Bitbucket provides free Mercurial hosting for both public and private repositories.&amp;nbsp; There are some limits on private repositories for the number of users, but it&amp;#39;s plenty for small teams like ours.&lt;/p&gt;
&lt;p&gt;With DNS and source control handled, the next item was the websites.&amp;nbsp; FuncWorks had not yet joined &lt;a href="http://www.microsoft.com/bizspark/Default.aspx"&gt;BizSpark&lt;/a&gt;, which now includes a generous amount of &lt;a href="http://www.microsoft.com/windowsazure/"&gt;Azure&lt;/a&gt; hosting.&amp;nbsp; I googled a bit on running WordPress in Azure, and though its been done my experience running WordPress on Windows taught me it is not really 100% platform agnostic.&amp;nbsp; I asked around on twitter and emailed a few friends, which lead me to &lt;a href="http://www.bluehost.com/"&gt;Bluehost&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;For $5.95/mo Bluehost has an excellent shared LAMP hosting offer.&amp;nbsp; I spoke with a representative for about an hour in chat, running down all the sites I had to move and making sure they would be covered in a single plan.&amp;nbsp; The rep was even nice enough to point out their &lt;a href="https://my.bluehost.com/cgi/help/price"&gt;pricing policy&lt;/a&gt; so I wouldn&amp;#39;t have a surprise at the end of my introductory price.&amp;nbsp; Worst case is I pay $8.95/mo, but I could pay for 3 years at once and get a $6.95/mo rate.&amp;nbsp; This is so awesomely cheap I&amp;#39;m not sweating it!&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Side story on Bluehost: Shortly after moving all my WordPress sites over, I received an email from them at some of my sites had a php file with a known security hole.&amp;nbsp; It seems this file is popular in WordPress themes, but not used in WordPress iteself.&amp;nbsp; Bluehost reminded me it is my job to keep things patched and safe, but in this case they patched the file for me with the new version, closing the security hole.&amp;nbsp; Some hyper sensitive geeks may over react with a &amp;quot;how dare they!&amp;quot;, but from my view saying &amp;quot;we saw a problem on your sites and fixed it before it was exploited&amp;quot; is great.&amp;nbsp; Also knowing that they are keeping an eye out for me by monitoring the other account (it is shared hosting) makes me feel like Bluehost is getting hosting right.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Finally we are down to just the ASP.NET sites, which are the sites that run &lt;a href="http://gamemarx.com/"&gt;GameMarx.com&lt;/a&gt; and &lt;a href="http://xboxindies.com/"&gt;XboxIndies.com&lt;/a&gt;.&amp;nbsp; To buy myself some time, and so I could do things the right way, I setup temporary WordPress sites for each of these.&amp;nbsp; The sites are pretty stock ASP.NET WebForms applications, with enough interesting bits that porting to Azure won&amp;#39;t be straight ahead.&amp;nbsp; My next few blog posts will document the journey and hopefully be of use to someone else who is looking at Azure for the existing applications.&lt;/p&gt;
&lt;p&gt;PS.&amp;nbsp; If you&amp;#39;re in the Knoxville, TN area and are also a WordPress fan, come hang with us at the &lt;a href="http://www.meetup.com/wordpressknoxville/"&gt;Knoxville WordPress Meetup&lt;/a&gt; on Tuesday Oct 11, 2011.&amp;nbsp; This will be the group&amp;#39;s first meeting and is hosted by &lt;a href="http://daryl.learnhouston.com/"&gt;Daryl Houston&lt;/a&gt; who recently joined &lt;a href="http://automattic.com"&gt;Automattic&lt;/a&gt; (the company behind WordPress, WordPress.com, Akismet, Gravatar, and many other cool sites and widgets). &lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://devlicio.us/aggbug.aspx?PostID=68236" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/MichaelCNeel/~4/62cH-YMGM20" height="1" width="1"/&gt;</description><feedburner:origLink>http://devlicio.us/blogs/vinull/archive/2011/10/02/moving-to-azure-the-plan-and-start.aspx</feedburner:origLink></item><item><title>XNA 3D Primer Examples Updated, XNA 2D Example Added, Talks on Both at DevLINK</title><link>http://feedproxy.google.com/~r/MichaelCNeel/~3/J_Ttiwl_mjY/xna-3d-primer-examples-updated-xna-2d-example-added-talks-on-both-at-devlink.aspx</link><pubDate>Sat, 06 Aug 2011 21:32:00 GMT</pubDate><guid isPermaLink="false">40756a8b-6212-4073-9d98-6c26781577de:68077</guid><dc:creator>Michael C. Neel</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Almost two years ago now I was working on a short ebook &lt;a href="http://www.wrox.com/WileyCDA/WroxTitle/XNA-3D-Primer.productCd-0470596937.html"&gt;XNA 3D Primer&lt;/a&gt; (now in &lt;a href="http://www.amazon.com/XNA-3D-Primer-ebook/dp/B004GXC86G/ref=ed_oe_k"&gt;Kindle flavor&lt;/a&gt;).&amp;nbsp; A year after the book came out XNA 4.0 was released, and breaks all of the examples in the book.&amp;nbsp; The examples have always been &lt;a href="http://www.wrox.com/WileyCDA/WroxTitle/XNA-3D-Primer.productCd-0470596937,descCd-DOWNLOAD.html"&gt;free to download&lt;/a&gt; without getting the book, so I have updated all the examples to with with XNA 4.0.&amp;nbsp; &lt;a href="http://code.google.com/p/vinull/source/browse/#svn%2FPresentations%2FXNA3DPrimer"&gt;You can get the updated examples on my Google Code site&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;In moving the code from 3.1 to 4.0, the following changes were made:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Removed many Begin/End calls, as XAN 4.0 only needs Apply called for an Effect &lt;/li&gt;
&lt;li&gt;Removed Vertex Declarations, as these are not needed in 4.0 &lt;/li&gt;
&lt;li&gt;Removed the custom shader and replaced it with the SkinnedEffect that comes with 4.0 &lt;/li&gt;
&lt;li&gt;Setup a Game Library project to share a single content project across all examples &lt;/li&gt;
&lt;li&gt;Changed the method of creating the shadow      &lt;br /&gt;      &lt;br /&gt;Some explanation on that last one.&amp;nbsp; In the original book I add some shadows to a simple 3D object created from a triangle strip.&amp;nbsp; The shadows are there to provide a visual reference so you can see the camera in action.&amp;nbsp; To create the shadow I use the Matrix.CreateShadow method, followed by the BasicEffect default lighting to color the object black.&amp;nbsp; In 3.1 this worked, but in 4.0 this will throw an error &amp;quot;The current vertex declaration does not include all the elements required by the current vertex shader. Normal0 is missing.&amp;quot;       &lt;br /&gt;      &lt;br /&gt;What&amp;#39;s going on: When you calculate the effect of light on a vertex you need a normal to know which way the light should reflect off the vertex (the angles between the light, vertex, and normal provide this information).&amp;nbsp; In the example however, no normal are provided.&amp;nbsp; I had expected XNA to assume the vertex was also the normal (or can be calculated by normalizing the vertex) and this is why the model is centered at 0,0,0.&amp;nbsp; This expectation partly came from the fact the polygon surface normals have a magic default as well, based upon the order of the vertices&lt;i&gt; &lt;/i&gt;that make up the polygon.       &lt;br /&gt;      &lt;br /&gt;&lt;a href="http://forums.create.msdn.com/forums/t/82189.aspx"&gt;It turns out this is not the case, as Shawn Hargreaves points out&lt;/a&gt;.&amp;nbsp; XNA was passing the data down to the graphics drivers without change.&amp;nbsp; The graphics drivers were then adding in the expected normals (and this must be pretty common as both nVidia and ATI cards I ran the example on behaved as expected).&amp;nbsp; This isn&amp;#39;t a good thing however, as it means things could break on one system and be fine on another, so in 4.0 an error is thrown.       &lt;br /&gt;      &lt;br /&gt;I really don&amp;#39;t want to discuss all this at the point in the book I use shadows.&amp;nbsp; The truth is in any 3D game more advanced than an example, you will be using 3D modules and the 3D modeling software will take care of all of this.&amp;nbsp; It&amp;#39;s useful information to know, but it&amp;#39;s more advanced than I wanted to cover in the book.&amp;nbsp; So instead of using lighting to color the model black, I just create a second object and set all the color values to black to achieve the same effect.&amp;nbsp; (A second reason for this approach is XNA 4.0 does not have a VertexPositionColorNormal, and creating you own vertex data format is really beyond the scope of the second example in the book!). &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The purpose of the the XNA 3D Primer was to cover 3D concepts for someone just getting started.&amp;nbsp; It&amp;#39;s really a list of things I had to learn.&amp;nbsp; When I first started, I didn&amp;#39;t know enough about 3D to even know how to ask a question (without being the &amp;quot;why does my model look wrong&amp;quot; guy).&amp;nbsp; I&amp;#39;ve now created a second example with a similar purpose.&amp;nbsp; This example is a complete 2D game, small yet big enough to give an idea how the pieces of a game come together in XNA.&lt;/p&gt;
&lt;p&gt;The game is XNA Invaders From Space, and is a simple clone of the classic Space Invaders.&amp;nbsp; &lt;a href="http://code.google.com/p/vinull/source/browse/#svn%2FExamples%2FInvadersFromSpace"&gt;The code for this game is also available on my Google Code site&lt;/a&gt;.&amp;nbsp; The code is fairly fresh, so I&amp;#39;m still tweaking it as I present it to various groups, but soon I hope to create a written and video tutorial around the code.&lt;/p&gt;
&lt;p&gt;Both the XNA 3D Primer and XNA Invaders from Space will be used for my sessions at &lt;a href="http://devlink.net/"&gt;DevLINK 2011&lt;/a&gt;.&amp;nbsp; DevLINK is being held August 17-19th in Chattanooga, Tennessee.&amp;nbsp; If you&amp;#39;re going (and it&amp;#39;s a great conference) be sure to make time for some of the XNA sessions by myself, &lt;a href="http://www.twitter.com/freestylecoder"&gt;Chris Gardner&lt;/a&gt;, and &lt;a href="http://www.twitter.com/chrisgwilliams"&gt;Chris Williams&lt;/a&gt;.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://devlicio.us/aggbug.aspx?PostID=68077" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/MichaelCNeel/~4/J_Ttiwl_mjY" height="1" width="1"/&gt;</description><category domain="http://devlicio.us/blogs/vinull/archive/tags/speaking/default.aspx">speaking</category><category domain="http://devlicio.us/blogs/vinull/archive/tags/xna/default.aspx">xna</category><feedburner:origLink>http://devlicio.us/blogs/vinull/archive/2011/08/06/xna-3d-primer-examples-updated-xna-2d-example-added-talks-on-both-at-devlink.aspx</feedburner:origLink></item><item><title>Microsoft Silent as Xbox Indies Marketplace Exploited</title><link>http://feedproxy.google.com/~r/MichaelCNeel/~3/kQSIo8kQiNo/microsoft-silent-as-xbox-indies-marketplace-exploited.aspx</link><pubDate>Mon, 11 Apr 2011 19:14:00 GMT</pubDate><guid isPermaLink="false">40756a8b-6212-4073-9d98-6c26781577de:66871</guid><dc:creator>Michael C. Neel</dc:creator><slash:comments>14</slash:comments><wfw:commentRss>http://devlicio.us/blogs/vinull/rsscomments.aspx?PostID=66871</wfw:commentRss><comments>http://devlicio.us/blogs/vinull/archive/2011/04/11/microsoft-silent-as-xbox-indies-marketplace-exploited.aspx#comments</comments><description>&lt;p&gt;There have always been rumors that the game ratings on the Xbox 360 and Xbox.com website we&amp;rsquo;re being manipulated by game developers.&amp;nbsp; On March 23, 2011 rumor became fact when Robert Boyd noticed his game Cthulhu Saves the World slipped from #6 on the top rated list to #11 in a week and showed a suspicious jump in the total number of votes.&amp;nbsp; During the same time frame the game College Lacrosse 2011 rocketed into the Top 10, propelled by a request to fans to rate the game 5-stars on FaceBook.&lt;/p&gt;
&lt;p&gt;The conversation has mostly moved around which developers were suspect.&amp;nbsp; Who was up voting their game, and who was down voting other games.&amp;nbsp; Cthulhu Saves the World now sits at #29 in the Top Rated list.&amp;nbsp; To put this into perspective, I asked Robert about the change in daily sales since his games have changed position.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The ratings started dropping in the middle of March so I&amp;#39;ve provided      &lt;br /&gt;our daily averages for February &amp;amp; April. &lt;/p&gt;
&lt;p&gt;70 BoDVII average - Feb      &lt;br /&gt;40 BoDVII average - April &lt;/p&gt;
&lt;p&gt;83 CSTW average - Feb      &lt;br /&gt;53 CSTW average - April &lt;/p&gt;
&lt;p&gt;The CSTW drop is likely mostly due to it being a new game and      &lt;br /&gt;naturally dropping over time. However, the BoDVII drop is much more       &lt;br /&gt;obvious since the game had been out for nearly a year before this       &lt;br /&gt;whole mess.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;BoDVII is Breath of Death VII.&amp;nbsp; Doing some armchair math, we can put a dollar figure of sales potentially lost by this change.&lt;/p&gt;
&lt;table border="0" cellpadding="0" cellspacing="0"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td width="98"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td width="40"&gt;Feb&lt;/td&gt;
&lt;td width="40"&gt;Apr&lt;/td&gt;
&lt;td width="35"&gt;Cng&lt;/td&gt;
&lt;td width="39"&gt;Price&lt;/td&gt;
&lt;td width="59"&gt;Day Loss&lt;/td&gt;
&lt;td width="77"&gt;Month Loss&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;BoDVII&lt;/td&gt;
&lt;td&gt;70&lt;/td&gt;
&lt;td&gt;40&lt;/td&gt;
&lt;td&gt;30&lt;/td&gt;
&lt;td&gt;$1.00&lt;/td&gt;
&lt;td&gt;$30.00&lt;/td&gt;
&lt;td&gt;$900.00&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CStW&lt;/td&gt;
&lt;td&gt;83&lt;/td&gt;
&lt;td&gt;53&lt;/td&gt;
&lt;td&gt;30&lt;/td&gt;
&lt;td&gt;$3.00&lt;/td&gt;
&lt;td&gt;$90.00&lt;/td&gt;
&lt;td&gt;$2,700.00&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;$3,600.00&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;$3,600.00 USD is not much to Microsoft, but that is a huge chunk to an independent developer.&lt;/p&gt;
&lt;h2&gt;&lt;/h2&gt;
&lt;h2&gt;Manipulation is Wide Spread&lt;/h2&gt;
&lt;p&gt;I used Robert&amp;rsquo;s games as an example of the impact, but it&amp;rsquo;s not limited to just a few games.&amp;nbsp; Rampant down voting has been present in all the top titles.&amp;nbsp; Here are the number of games over time with 4 star or better rating.&lt;/p&gt;
&lt;table border="0" cellpadding="0" cellspacing="0"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td width="98"&gt;Week / Rating&lt;/td&gt;
&lt;td width="40"&gt;4&lt;/td&gt;
&lt;td width="40"&gt;4.25&lt;/td&gt;
&lt;td width="35"&gt;4.5&lt;/td&gt;
&lt;td width="39"&gt;4.75&lt;/td&gt;
&lt;td width="59"&gt;Total&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2/27/2011&lt;/td&gt;
&lt;td&gt;62&lt;/td&gt;
&lt;td&gt;17&lt;/td&gt;
&lt;td&gt;11&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;91&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3/6/2011&lt;/td&gt;
&lt;td&gt;64&lt;/td&gt;
&lt;td&gt;16&lt;/td&gt;
&lt;td&gt;11&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;92&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3/13/2011&lt;/td&gt;
&lt;td&gt;68&lt;/td&gt;
&lt;td&gt;14&lt;/td&gt;
&lt;td&gt;11&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;94&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3/20/2011&lt;/td&gt;
&lt;td&gt;64&lt;/td&gt;
&lt;td&gt;13&lt;/td&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;88&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3/27/2011&lt;/td&gt;
&lt;td&gt;62&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;78&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4/3/2011&lt;/td&gt;
&lt;td&gt;54&lt;/td&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;67&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4/10/2011&lt;/td&gt;
&lt;td&gt;37&lt;/td&gt;
&lt;td&gt;11&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;51&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Before the ratings manipulation we had over 90 games with 4 stars or better, now it&amp;rsquo;s just 50.&amp;nbsp; It&amp;rsquo;s clear looking at the volume of votes there is a good deal of ratings warfare happening, unchecked.&amp;nbsp; I have data of games by week, the ratings they&amp;rsquo;ve held, how much they&amp;rsquo;ve changed, and what the average vote would be to cause that change.&amp;nbsp; &lt;a href="http://www.gamemarx.com/news/2011/04/03/the-real-march-madness-xblig-rating-manipulation-continues.aspx"&gt;I wrote a bit on this last week&lt;/a&gt;.&amp;nbsp; I&amp;rsquo;m not posting the list of games (yet) as I don&amp;rsquo;t want to focus the conversation on developers.&amp;nbsp; The focus needs to remain on Microsoft, who continue to stand by and do nothing while this takes place.&amp;nbsp; I will talk about one game however.&lt;/p&gt;
&lt;h2&gt;Anatomy of an Exploit&lt;/h2&gt;
&lt;p&gt;I stressed on my numbers post, in the community forums, and directly in email to Microsoft how simple the ratings exploit is.&amp;nbsp; It&amp;rsquo;s clear looking at the data that it&amp;rsquo;s well known.&amp;nbsp; Some think you need legions of fans, willing to vote at xbox.com, and set aside morals to attack other games.&amp;nbsp; Others believe you need to create a voting bot to automate the process.&amp;nbsp; I believed it was much simpler than that, and I set out to test this theory Friday.&amp;nbsp; I shocked even myself how easy it was.&lt;/p&gt;
&lt;p&gt;The steps:&amp;nbsp; Visit &lt;a href="http://xbox.com"&gt;xbox.com&lt;/a&gt; and click on &amp;ldquo;Sign Up&amp;rdquo;.&amp;nbsp; On the first screen in the email box, enter a fake email address.&amp;nbsp; On the second screen fill out the form with fake data and complete the captcha.&amp;nbsp; Once you click okay, you now have a fake account that can rate games.&amp;nbsp; &lt;b&gt;There is no verification of Xbox Live Accounts.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;I used an form auto-complete extension for FireFox so the only thing I had to do manually was enter the captcha.&amp;nbsp; I did not use any automation software, not even Fiddler to replay an http request.&amp;nbsp; I could cast a vote for my game IncaBlocks every 20-30 seconds, depending on how many times I messed up the captcha.&amp;nbsp; I spent a few minutes in the morning voting, a few before lunch, and a few before I went home.&amp;nbsp; About an hour spent in total, and I had calculated 100 votes would move us from below #1400 to just around #100.&lt;/p&gt;
&lt;p&gt;Like that guy in office space, I must have made a decimal point error somewhere.&amp;nbsp; Saturday IncaBlocks launched to #28 in the Top Rated list.&amp;nbsp; One guy, with a web browser and 60 minutes of spare time can move a game from the bottom of the pack to the front.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;(The point here is to show how easy it is to manipulate the lists, but to share the rest of the IncaBlocks story we went from getting 0 to 1 trial downloads in a day to 15 trial downloads in a day, and no sales in either case.&amp;nbsp; No amount of rating manipulation is going to make IncaBlocks a fun game!&amp;nbsp; I&amp;rsquo;m also okay with this, it was a learning experience and that experience is payment enough.&amp;nbsp; If Microsoft decides to pull IncaBlocks over this, it never made the $150 requirement to get paid anyway and I&amp;rsquo;m fine using it to force Microsoft into action.&amp;nbsp; It would prove Microsoft is capable of taking action, even if they haven&amp;rsquo;t.)&lt;/p&gt;
&lt;h2&gt;Microsoft Responds, but only to WP7 Issues&lt;/h2&gt;
&lt;p&gt;Around the same time as this issue was found, a WP7 top lists issue was reported.&amp;nbsp; &lt;a href="http://forums.create.msdn.com/forums/p/79337/480824.aspx#480824"&gt;Microsoft responded the same day as it was reported&lt;/a&gt; with a personal email address and phone number.&amp;nbsp; &amp;ldquo;Top Men&amp;rdquo; are assigned the case and it&amp;rsquo;s fixed in a day.&lt;/p&gt;
&lt;p&gt;The Xbox Indie problem so far has only gotten a &lt;a href="http://twitter.com/#!/XNACommunity/status/52852501090807808"&gt;two&lt;/a&gt; &lt;a href="http://twitter.com/#!/XNACommunity/status/57476106017710080"&gt;tweets&lt;/a&gt; from Microsoft, and a &lt;a href="http://forums.create.msdn.com/forums/p/78762/485762.aspx#485762"&gt;post by a developer&lt;/a&gt; that Microsoft is still trying to figure out who should be in charge of the issue.&amp;nbsp; (I must blog too much as Microsoft doesn&amp;rsquo;t respond to my emails *sniff*).&lt;/p&gt;
&lt;p&gt;Both WP7 and Xbox use the same site &amp;ldquo;AppHub&amp;rdquo; for support.&amp;nbsp; It&amp;rsquo;s clear Microsoft has budget to support WP7, but none to support XBLIG.&amp;nbsp; Even if they cannot decide who is in charge, they can shut down the exploit at Xbox.com by temporarily removing the ability to rate.&lt;/p&gt;
&lt;p&gt;The system of exploiting ratings though Live accounts is large.&amp;nbsp; There is a story breaking now that a &lt;a href="http://www.dealspwn.com/xbox-live-rating-manipulators-unmasked/"&gt;design firm may have commissioned 5,000 fake accounts&lt;/a&gt; for manipulation.&lt;/p&gt;
&lt;h2&gt;My Personal Thoughts&lt;/h2&gt;
&lt;p&gt;In all of this I have one big thought &amp;ndash; if Microsoft cannot manage a small group of Xbox Indie games, why would I ever get involved in the larger WP7 Marketplace?&amp;nbsp; How do I know that in a year the WP7 Marketplace won&amp;rsquo;t be neglected like XBLIG?&amp;nbsp; In both marketplaces, WP7 and XBLIG, Microsoft holds back features for Microsoft Partners and sends me the message they are not as interested in developers as they are in publishers.&amp;nbsp; This is just my opinion, and others will disagree, but right now I&amp;rsquo;m not feeling Microsoft understands the needs of independent developers and are only interested in giving their big partners a heavy advantage.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://devlicio.us/aggbug.aspx?PostID=66871" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/MichaelCNeel/~4/kQSIo8kQiNo" height="1" width="1"/&gt;</description><feedburner:origLink>http://devlicio.us/blogs/vinull/archive/2011/04/11/microsoft-silent-as-xbox-indies-marketplace-exploited.aspx</feedburner:origLink></item><item><title>Anime (and Indie Game) Fans Give Back to Japan</title><link>http://feedproxy.google.com/~r/MichaelCNeel/~3/dqIAB_QFQ4k/anime-and-indie-game-fans-give-back-to-japan.aspx</link><pubDate>Thu, 17 Mar 2011 21:14:00 GMT</pubDate><guid isPermaLink="false">40756a8b-6212-4073-9d98-6c26781577de:66716</guid><dc:creator>Michael C. Neel</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://devlicio.us/blogs/vinull/rsscomments.aspx?PostID=66716</wfw:commentRss><comments>http://devlicio.us/blogs/vinull/archive/2011/03/17/anime-and-indie-game-fans-give-back-to-japan.aspx#comments</comments><description>&lt;p&gt;On the afternoon of March 11 Japan was hit by a massive 9.0-magnitude earthquake which triggered a massive tsunami hitting just minutes after.&amp;nbsp; Over 5,000 people have been confirmed dead, over 9,000 are still missing, and millions are without electricity, transportation, and even water.&amp;nbsp; It is hard to comprehend this amount amount of loss and devastation.&amp;nbsp; I went and read up on &lt;a href="http://en.wikipedia.org/wiki/Hurricane_Katrina"&gt;Hurricane Katrina&lt;/a&gt; and the confirmed death toll then was over 1,800 people and the damage is said to have cost $90 Billion USD.&lt;/p&gt;
&lt;p&gt;I remember Katrina well, although I didn&amp;#39;t live in New Orleans.&amp;nbsp; I had accepted a job offer, but wouldn&amp;#39;t start for another week when the hurricane hit.&amp;nbsp; That week I read hundreds of blogs, forums, and news stories as it all unfolded.&amp;nbsp; Rescue and recover efforts were focused on big problems, like power, water, food, and shelter, but many of the posts I read were individuals looking for loved ones.&amp;nbsp; A mother wanted to know if anyone had information on her daughter, who was only a few streets over at a relatives when the hurricane hit.&amp;nbsp; That one sticks with me most, and I never found what happened to the mother or daughter.&lt;/p&gt;
&lt;p&gt;A group of &lt;a href="http://en.wikipedia.org/wiki/Anime"&gt;Anime&lt;/a&gt; podcasts have come together to create&amp;nbsp; &lt;a href="http://helpjapan.onepiecepodcast.com/"&gt;Anime Fans Give Back to Japan&lt;/a&gt;.&amp;nbsp; From &lt;b&gt;Saturday, March 19th at &lt;a href="http://www.timezoneconverter.com/cgi-bin/tzc.tzc"&gt;6:00PM EST&lt;/a&gt; to Sunday, March 19th at 6:00PM EST&lt;/b&gt; there will be a 24 hour live show broadcast via &lt;a href="http://www.ustream.tv/channel/anime-fans-give-back-to-japan"&gt;UStream&lt;/a&gt; to raise donations for victims of the earthquake and tsunami.&amp;nbsp; There is &lt;a href="http://helpjapan.sched.org/"&gt;quite the schedule&lt;/a&gt; of interviews and panel discussions including several major Anime voice actors.&amp;nbsp; And if you clicked that link you maybe have noticed there is a slot titled &amp;quot;&lt;a href="http://helpjapan.sched.org/event/7e5a9b281a96a41c7137f7e5c964e03c"&gt;GameMarx: Indie Game Fans Give Back to Japan&lt;/a&gt;&amp;quot;.&lt;/p&gt;
&lt;p&gt;If you&amp;#39;ve listened to any of our shows, it obvious we are &lt;a href="http://en.wikipedia.org/wiki/Otaku"&gt;Otaku&lt;/a&gt;.&amp;nbsp; Video games owe a lot to the developers and companies in Japan, and many of us grew up playing Japanese game systems like the NES.&amp;nbsp; We are still working out the panel guest list, so stay tuned, but we will discuss Japanese video games and include some Xbox Live Indie games that have come from Japan.&amp;nbsp;&amp;nbsp; Hopefully the internet will be nice and the chat room will be up so we can include audience questions.&lt;/p&gt;
&lt;p&gt;To help spread the word of the event, we recorded 10 videos last night, each featuring an excellent Xbox Live Indie game from Japan.&amp;nbsp; You can watch them in the player below, though a few are still uploaded as I write this so check back if there are less than 10.&lt;/p&gt;
&lt;p align="center"&gt;&lt;embed src="http://blip.tv/play/h4APjoAfpYEI" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="360" width="600"&gt;&lt;/embed&gt;&lt;/p&gt;
&lt;p&gt;The games featured are:&lt;/p&gt;
&lt;p align="center"&gt;&lt;a href="http://www.gamemarx.com/games/other/1432/sushido.aspx"&gt;SUSHIDO&lt;/a&gt; | &lt;a href="http://www.gamemarx.com/games/puzzle-trivia/159/bloom-block.aspx"&gt;Bloom＊Block&lt;/a&gt; | &lt;a href="http://www.gamemarx.com/games/action-adventure/960/jump-in-colon.aspx"&gt;コロンでジャンプ ( Jump in colon )&lt;/a&gt; | &lt;a href="http://www.gamemarx.com/games/action-adventure/166/knights-guarded.aspx"&gt;まもって騎士 ( Knights guarded )&lt;/a&gt; | &lt;a href="http://www.gamemarx.com/games/puzzle-trivia/1197/moe-turn.aspx"&gt;萌めくり ( Moe-turn )&lt;/a&gt; |&amp;nbsp; &lt;a href="http://www.gamemarx.com/games/shooter/1601/junk-fields.aspx"&gt;Junk Fields&lt;/a&gt;&lt;/p&gt;
&lt;p align="center"&gt;&lt;a href="http://www.gamemarx.com/games/action-adventure/1616/aban-hawkins-the-1000-spikes.aspx"&gt;Aban Hawkins &amp;amp; the 1000 SPIKES&lt;/a&gt; | &lt;a href="http://www.gamemarx.com/games/shooter/1728/in-the-ear-do-you-mat.aspx"&gt;みみ いんざ すかい ( In The Ear Do you mat )&lt;/a&gt; | &lt;a href="http://www.gamemarx.com/games/platformer/1611/fire-dragon-legend-high-school.aspx"&gt;龍炎高校伝説 ( Fire Dragon Legend High School )&lt;/a&gt; | &lt;a href="http://www.gamemarx.com/games/action-adventure/1433/the-tempura-of-the-dead.aspx"&gt;The TEMPURA of the DEAD&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://devlicio.us/aggbug.aspx?PostID=66716" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/MichaelCNeel/~4/dqIAB_QFQ4k" height="1" width="1"/&gt;</description><feedburner:origLink>http://devlicio.us/blogs/vinull/archive/2011/03/17/anime-and-indie-game-fans-give-back-to-japan.aspx</feedburner:origLink></item><item><title>Fun with XNA and 2.5D</title><link>http://feedproxy.google.com/~r/MichaelCNeel/~3/1vGiADUGsRU/fun-with-xna-and-2-5d.aspx</link><pubDate>Mon, 20 Dec 2010 05:22:00 GMT</pubDate><guid isPermaLink="false">40756a8b-6212-4073-9d98-6c26781577de:64059</guid><dc:creator>Michael C. Neel</dc:creator><slash:comments>2</slash:comments><wfw:commentRss>http://devlicio.us/blogs/vinull/rsscomments.aspx?PostID=64059</wfw:commentRss><comments>http://devlicio.us/blogs/vinull/archive/2010/12/20/fun-with-xna-and-2-5d.aspx#comments</comments><description>&lt;p&gt;This weekend I had a little fun in XNA playing with the concept of 2.5D.&amp;nbsp; There are a number of things games use that can be called 2.5D - I choose to build a test project where all draw calls were in 2D, but it is also common to use 2D sprites in 3D space as well.&amp;nbsp; These sprites are referred to as billboards, and there is an &lt;a href="http://create.msdn.com/en-US/education/catalog/sample/billboard"&gt;example project for using them in XNA at the App Hub site&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;For my project, I wanted to photograph an object from multiple sides, convert this to a sprite sheet, and then render the correct side based on the direction the object was facing.&amp;nbsp; I talked about this idea with my two oldest daughters, and asked for suggestions on the object I should use.&amp;nbsp; I fully expected a debate to involve Legos or stuffed animals, but they both wanted to use themselves!&amp;nbsp; Using the green screen I have for &lt;a href="http://www.gamemarx.com/default.aspx"&gt;GameMarx&lt;/a&gt;, and a set of swords I have from &lt;a href="http://www.vinull.com/Post/2007/10/14/aspnet-zen-and-the-art-of-website-maint.aspx"&gt;this thing I used to do&lt;/a&gt;, we setup the shoot.&amp;nbsp; I had the girls stand on an ottoman so I could rotate them &amp;pi;/4 each shot (all game devs think in radians eventually):&lt;/p&gt;
&lt;p align="center"&gt;&lt;a href="http://devlicio.us/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vinull/DSCF8508.jpg"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="DSCF8508" alt="DSCF8508" src="http://devlicio.us/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vinull/DSCF8508_5F00_thumb.jpg" border="0" height="184" width="244" /&gt;&lt;/a&gt;&lt;a href="http://devlicio.us/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vinull/DSCF8524.jpg"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="DSCF8524" alt="DSCF8524" src="http://devlicio.us/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vinull/DSCF8524_5F00_thumb.jpg" border="0" height="184" width="244" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Next I took these shots and converted them into a sprite sheet, making sure to keep them in order so it will be easier later in code to manage:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://devlicio.us/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vinull/SpriteSheet_5F00_2.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:block;float:none;border-top-width:0px;border-bottom-width:0px;margin-left:auto;border-left-width:0px;margin-right:auto;padding-top:0px;" title="SpriteSheet" alt="SpriteSheet" src="http://devlicio.us/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vinull/SpriteSheet_5F00_thumb.png" border="0" height="500" width="500" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;In code, I created an array to hold the location of each sprite on the sheet.&amp;nbsp; For simplicity, I&amp;#39;m only going to post the code for Hannah - Rachel&amp;#39;s code is pretty much the same with the only difference being the start locations.&amp;nbsp; I found it easier to have the first direction facing up, so I listed the second row for Hannah first:&lt;/p&gt;
&lt;pre class="code"&gt;&lt;span style="color:#2b91af;"&gt;Rectangle&lt;/span&gt;[] hannah = &lt;span style="color:blue;"&gt;new &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;Rectangle&lt;/span&gt;[] {&lt;br /&gt;    &lt;span style="color:blue;"&gt;new &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;Rectangle&lt;/span&gt;(0, 128, 128, 128),&lt;br /&gt;    &lt;span style="color:blue;"&gt;new &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;Rectangle&lt;/span&gt;(128, 128, 128, 128),&lt;br /&gt;    &lt;span style="color:blue;"&gt;new &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;Rectangle&lt;/span&gt;(256, 128, 128, 128),&lt;br /&gt;    &lt;span style="color:blue;"&gt;new &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;Rectangle&lt;/span&gt;(384, 128, 128, 128),&lt;br /&gt;    &lt;span style="color:blue;"&gt;new &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;Rectangle&lt;/span&gt;(0, 0, 128, 128),&lt;br /&gt;    &lt;span style="color:blue;"&gt;new &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;Rectangle&lt;/span&gt;(128, 0, 128, 128),&lt;br /&gt;    &lt;span style="color:blue;"&gt;new &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;Rectangle&lt;/span&gt;(256, 0, 128, 128),&lt;br /&gt;    &lt;span style="color:blue;"&gt;new &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;Rectangle&lt;/span&gt;(384, 0, 128, 128),&lt;br /&gt;};&lt;/pre&gt;
&lt;p&gt;In the game loop update, I need to figure out from the player&amp;#39;s thumbstick what direction to move Hannah, and also which sprite to display.&amp;nbsp;&amp;nbsp; Movement is pretty straight forward, I just take the X and Y of the thumbstick as is.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;To calculate the sprite, I first need to calculate the angle of the thumbstick, using the Atan2 method.&amp;nbsp; Atan2 will return a value from -&amp;pi; to &amp;pi;, so to make it easier on myself I add &amp;pi; so that I have a range from 0 to 2&amp;pi;.&amp;nbsp; I then scale this result to the number of sprites for Hannah and offset it slightly by &amp;pi;/8.&amp;nbsp; Why do the offset?&amp;nbsp; Well, if I didn&amp;#39;t straight up would be zero, but slightly to the right would be just under 7 (we have 8 values, 0 through 7).&amp;nbsp; We want the have an even +/- &amp;pi;/8 to the direction on the stick so that Hannah heads in the direction players expect.&lt;/p&gt;
&lt;p&gt;The final step is to check an see if we need to wrap the high end back to zero, or undo our previous adjustment since it cuts off a few values for zero.&amp;nbsp; The end result looks like:&lt;/p&gt;
&lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;if &lt;/span&gt;(controller.ThumbSticks.Left.Length() &amp;gt; .2) {&lt;br /&gt;    hannahLoc.X += &lt;span style="color:#2b91af;"&gt;Convert&lt;/span&gt;.ToInt32(controller.ThumbSticks.Left.X * speed * gameTime.ElapsedGameTime.TotalSeconds);&lt;br /&gt;    hannahLoc.Y -= &lt;span style="color:#2b91af;"&gt;Convert&lt;/span&gt;.ToInt32(controller.ThumbSticks.Left.Y * speed * gameTime.ElapsedGameTime.TotalSeconds);&lt;br /&gt;    hannahAgl = &lt;span style="color:#2b91af;"&gt;Math&lt;/span&gt;.Atan2(controller.ThumbSticks.Left.X, -1 * controller.ThumbSticks.Left.Y) + &lt;span style="color:#2b91af;"&gt;MathHelper&lt;/span&gt;.Pi;&lt;br /&gt;    &lt;span style="color:blue;"&gt;double &lt;/span&gt;face = (hannahAgl + &lt;span style="color:#2b91af;"&gt;MathHelper&lt;/span&gt;.PiOver4 / 2) * (hannah.Length - 1) / &lt;span style="color:#2b91af;"&gt;MathHelper&lt;/span&gt;.TwoPi;&lt;br /&gt;    hannahFace = &lt;span style="color:#2b91af;"&gt;Convert&lt;/span&gt;.ToInt32(face &amp;gt; 7.25 || face &amp;lt; .75 ? 0 : &lt;span style="color:#2b91af;"&gt;Math&lt;/span&gt;.Round(face));&lt;br /&gt;}&lt;/pre&gt;
&lt;p&gt;And the draw call is simply:&lt;/p&gt;
&lt;pre class="code"&gt;spriteBatch.Draw(spriteSheet, hannahLoc, hannah[hannahFace], &lt;span style="color:#2b91af;"&gt;Color&lt;/span&gt;.White);&lt;/pre&gt;
&lt;p&gt;To see all this in action, I made a quick youtube video:&lt;/p&gt;
&lt;p align="center"&gt;
&lt;object height="385" width="640"&gt;
&lt;param name="movie" value="http://www.youtube.com/v/6AmBMJu8Fx8?fs=1&amp;amp;hl=en_US" /&gt;
&lt;param name="allowFullScreen" value="true" /&gt;
&lt;param name="allowscriptaccess" value="always" /&gt;&lt;embed src="http://www.youtube.com/v/6AmBMJu8Fx8?fs=1&amp;amp;hl=en_US" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="385" width="640"&gt;&lt;/embed&gt;
&lt;/object&gt;
&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://devlicio.us/aggbug.aspx?PostID=64059" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/MichaelCNeel/~4/1vGiADUGsRU" height="1" width="1"/&gt;</description><feedburner:origLink>http://devlicio.us/blogs/vinull/archive/2010/12/20/fun-with-xna-and-2-5d.aspx</feedburner:origLink></item><item><title>Creating the Parallax and Scrolling Background</title><link>http://feedproxy.google.com/~r/MichaelCNeel/~3/KuOzNiSA9Ho/creating-the-parallax-and-scrolling-background.aspx</link><pubDate>Fri, 26 Nov 2010 07:15:00 GMT</pubDate><guid isPermaLink="false">40756a8b-6212-4073-9d98-6c26781577de:63612</guid><dc:creator>Michael C. Neel</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://devlicio.us/blogs/vinull/rsscomments.aspx?PostID=63612</wfw:commentRss><comments>http://devlicio.us/blogs/vinull/archive/2010/11/26/creating-the-parallax-and-scrolling-background.aspx#comments</comments><description>&lt;blockquote&gt;
&lt;p&gt;This article is cross-posted from &lt;a href="http://www.dracowing.com"&gt;DracoWing.com&lt;/a&gt;.&amp;nbsp; Draco Wing is a new XNA based game for the Xbox 360 I am working on, and I will be keeping a &amp;ldquo;diary&amp;rdquo; of sorts on the design and development of the game.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The gameplay in Draco Wing will require the background to scroll, while the player&amp;rsquo;s spaceship stays centered in the play field.&amp;nbsp; I want the play field to be adjustable, as I don&amp;rsquo;t have a HUD designed yet, so it&amp;rsquo;s a requirement that this be configurable.&amp;nbsp; I&amp;rsquo;m also going to setup a star field behind the background so I can create a simple &lt;a href="http://en.wikipedia.org/wiki/Parallax"&gt;parallax effect&lt;/a&gt;.&amp;nbsp; The background and the star field will need to scroll in all directions and loop, e.x. the player can fly off the left side of the map and reappear on the right.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m going to start off with the background being 2048x4096, or &amp;ldquo;quite freaking huge&amp;rdquo;, and will 1-1 map ship coordinates with the background.&amp;nbsp; This is going to make the artist happy, and hopefully performance and size will let me keep it in the end product, but we might have to cut it down a bit later in production and scale the result.&amp;nbsp; With Dxt compression this image at 24 bit is 4mb (if I use a true Alpha channel instead of color keying, it&amp;rsquo;s 8mb &amp;ndash; the artist can deal with keying).&amp;nbsp; For comparison, my star field image is 256x256 at 8 bit is 33 kb.&lt;/p&gt;
&lt;p&gt;Displaying the images on screen turns out to be quite simple with XNA.&amp;nbsp; The framework ships with a group of SamplerStates for wrapping a texture that will repeat the texture to fill the target space: SamplerState.PointWrap, SamplerState.LinearWrap, and SamplerState.AnisotropicWrap.&amp;nbsp; The differences between these are explained by Shawn Hargreaves &lt;a href="http://blogs.msdn.com/b/shawnhar/archive/2009/09/24/texture-filtering-anisotropy.aspx"&gt;here&lt;/a&gt; and &lt;a href="http://blogs.msdn.com/b/shawnhar/archive/2009/09/24/texture-filtering-anisotropy.aspx"&gt;here&lt;/a&gt;, but the short answer is they tell the GPU how to map a pixel from the source texture to the screen when scaling is involved.&amp;nbsp; The point method is the fastest, by just finding the closest pixel to the target and scaling that one pixel.&amp;nbsp; Linear takes a sample of the surrounding pixels, and creates an average color value that results in a less &amp;ldquo;pixelated&amp;rdquo; or &amp;ldquo;blocky&amp;rdquo; result.&amp;nbsp; Anisotropic is similar to Linear, only takes into account any height / width ratio differences between source and target.&amp;nbsp; These different values really come into play with things like 3D terrain, but in my case I&amp;rsquo;m not doing any scaling so I can go with Point and have no loss in visual quality.&lt;/p&gt;
&lt;p&gt;With XNA and the GPU doing all the hard math for me, the only part I need to do is set the &amp;ldquo;start point&amp;rdquo; for the star field and background, which is based on the location of the ship in game space (remember in screen space, the ship doesn&amp;rsquo;t move).&amp;nbsp; In initialization I create a Rectangle called &amp;ldquo;view&amp;rdquo; that is the screen space I want the background to render in.&amp;nbsp; Then in the Update method for my custom Background class I calculate the start points:&lt;/p&gt;
&lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;public void &lt;/span&gt;Update(&lt;span style="color:#2b91af;"&gt;GameTime &lt;/span&gt;gametime, &lt;span style="color:#2b91af;"&gt;Point &lt;/span&gt;location) {&lt;br /&gt;    starfieldRect.X = location.X % starfield.Bounds.Width;&lt;br /&gt;    starfieldRect.Y = location.Y % starfield.Bounds.Height;&lt;br /&gt;    backgroundRect.X = location.X - view.Width / 2;&lt;br /&gt;    backgroundRect.Y = location.Y - view.Height / 2;&lt;br /&gt;}&lt;/pre&gt;
&lt;p&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;During initialization I set the Height and Width properties to that of the view, since these won&amp;rsquo;t change during gameplay.&amp;nbsp; By dividing the value of location by two on the starfield cause the stars to move twice as slow, and creates the desired parallax effect.&amp;nbsp; Even though the background screen space size is the same at the game space size, I have to account for the fact the ship is in the middle of the play field and thus subtract half the view from the location.&amp;nbsp; (Have I mentioned the value of keeping graph paper near your desk when developing games?)&lt;/p&gt;
&lt;p&gt;The Draw method is basic as well, just make sure to enable the desired SampleState in the Begin call:&lt;/p&gt;
&lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;public void &lt;/span&gt;Draw(&lt;span style="color:#2b91af;"&gt;SpriteBatch &lt;/span&gt;spriteBatch, &lt;span style="color:#2b91af;"&gt;GraphicsDevice &lt;/span&gt;GraphicsDevice) {&lt;br /&gt;    spriteBatch.Begin(&lt;span style="color:#2b91af;"&gt;SpriteSortMode&lt;/span&gt;.Immediate, &lt;span style="color:#2b91af;"&gt;BlendState&lt;/span&gt;.AlphaBlend, &lt;span style="color:#2b91af;"&gt;SamplerState&lt;/span&gt;.PointWrap, &lt;span style="color:#2b91af;"&gt;DepthStencilState&lt;/span&gt;.Default, &lt;span style="color:#2b91af;"&gt;RasterizerState&lt;/span&gt;.CullNone);&lt;br /&gt;    spriteBatch.Draw(starfield, view, starfieldRect, &lt;span style="color:#2b91af;"&gt;Color&lt;/span&gt;.White);&lt;br /&gt;    spriteBatch.Draw(background, view, backgroundRect, &lt;span style="color:#2b91af;"&gt;Color&lt;/span&gt;.White);&lt;br /&gt;    spriteBatch.End(); &lt;br /&gt;}&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Check me out, I&amp;rsquo;m going to Mars!&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://devlicio.us/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vinull/image_5F00_2.png"&gt;&lt;img style="border-right-width:0px;display:block;float:none;border-top-width:0px;border-bottom-width:0px;margin-left:auto;border-left-width:0px;margin-right:auto;" title="image" alt="image" src="http://devlicio.us/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vinull/image_5F00_thumb.png" border="0" height="378" width="644" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://devlicio.us/aggbug.aspx?PostID=63612" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/MichaelCNeel/~4/KuOzNiSA9Ho" height="1" width="1"/&gt;</description><feedburner:origLink>http://devlicio.us/blogs/vinull/archive/2010/11/26/creating-the-parallax-and-scrolling-background.aspx</feedburner:origLink></item><item><title>Xbox Indies: Come Play With Us</title><link>http://feedproxy.google.com/~r/MichaelCNeel/~3/ypiLwsN_BvY/xbox-indies-come-play-with-us.aspx</link><pubDate>Fri, 19 Nov 2010 14:55:00 GMT</pubDate><guid isPermaLink="false">40756a8b-6212-4073-9d98-6c26781577de:63497</guid><dc:creator>Michael C. Neel</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://devlicio.us/blogs/vinull/rsscomments.aspx?PostID=63497</wfw:commentRss><comments>http://devlicio.us/blogs/vinull/archive/2010/11/19/xbox-indies-come-play-with-us.aspx#comments</comments><description>&lt;p&gt;When I last posted on Xbox Live Indie Games, &lt;a href="http://www.vinull.com/Post/2010/11/04/microsoft-slowly-euthanizes-xbox-indie-games.aspx"&gt;things looked pretty dire&lt;/a&gt;.&amp;nbsp; In the weeks since, the #SaveXBLIG rally has been a success &amp;ndash; we got Microsoft&amp;rsquo;s attention and the Indie Games section was moved back to the Games section on the Xbox Dashboard, right along side the publisher distributed games.&amp;nbsp; Microsoft also has put Dave Mitchell in the role of temporary community manager .&lt;/p&gt;
&lt;p&gt;Dave started out by &lt;a href="http://forums.create.msdn.com/forums/t/65717.aspx"&gt;posing a thread&lt;/a&gt; and opening up many of the issues in my previous post for discussion.&amp;nbsp; Even topics such as Achievements and network access appear to be under consideration.&amp;nbsp; Time will tell if Microsoft is committed to improving these areas, or if it is just controlling the blaze to keep it from setting the WP7 forest aflame.&amp;nbsp; That&amp;rsquo;s not the topic of this post however...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Community XBLIG Trailer Project&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m please to have been involved with the creation of an XBLIG Trailer!&amp;nbsp; Started on the forums by developer &lt;a href="http://twitter.com/superboise"&gt;Super Boise&lt;/a&gt;, the idea is a simple one: create a short, 15 second video showing off how awesome Xbox Live Indie Games are.&amp;nbsp; This trailer can be used by anyone to help promote the channel as a whole.&amp;nbsp; There is a good portion of gamers out there who have the opinion the channel is filled with junk, but that is simply not true (the Xbox UI doesn&amp;rsquo;t do a good job of letting the cream rise).&amp;nbsp; Hopefully this trailer will get shared often and encourage some to take a second look and explore some of the 1400+ titles in the channel.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style="padding:0px;width:425px;display:block;float:none;margin-left:auto;margin-right:auto;" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:67040127-585d-4233-adfe-1870812d786b" class="wlWriterEditableSmartContent"&gt;
&lt;div&gt;&lt;a href="http://www.youtube.com/watch?v=HgYkWSeGWls" target="_new"&gt;&lt;img src="http://devlicio.us/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vinull/video019b04999c64_5F00_5469F44E.jpg" style="border-style:none;" alt="" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style="clear:both;font-size:.8em;"&gt;Xbox Live Indie Games Trailer&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;If you are interested in using the trailer, please check &lt;a href="http://forums.create.msdn.com/forums/t/66949.aspx"&gt;this thread&lt;/a&gt; on the XNA forums for more information.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Indie Games Winter Uprising&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;A video is good, but the best way to show we have great games is... to release great games!&amp;nbsp; That&amp;rsquo;s the idea behind the &lt;a href="http://www.indiegames-uprising.com/"&gt;Indie Games Winter Uprising&lt;/a&gt;.&amp;nbsp; Several high profile XBLIG developers have banded together to release over a dozen games the first week of December.&amp;nbsp; If you have an Xbox, this year Santa comes early...&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.indiegames-uprising.com/"&gt;&lt;img style="border-right-width:0px;display:block;float:none;border-top-width:0px;border-bottom-width:0px;margin-left:auto;border-left-width:0px;margin-right:auto;" title="big-logo" alt="big-logo" src="http://devlicio.us/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vinull/biglogo_5F00_3DAAACC5.png" border="0" height="183" width="240" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Stay up to date with GameMarx!&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Yes, this bit is self serving, but if you are interested in staying up to date on XBLIG, and finding some of the gems both old and new, that&amp;rsquo;s exactly why I helped create &lt;a href="http://www.gamemarx.com"&gt;GameMarx&lt;/a&gt;.&amp;nbsp; We plan to not only review all of the Winter Uprising titles, but also review all of the video clips in the trailer above.&amp;nbsp; &lt;a href="http://www.gamemarx.com"&gt;Jump over&lt;/a&gt;, &lt;a href="http://www.gamemarx.com/Rss.aspx"&gt;subscribe to an RSS feed&lt;/a&gt;, and play some great XBLIGs!&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Become an XBLIG Developer&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;This doesn&amp;rsquo;t get said enough, but writing games has never been easier.&amp;nbsp; If you&amp;rsquo;re reading this blog, chances are you are familiar with .Net and C# &amp;ndash; guess what, that&amp;rsquo;s all you need to get started wit XNA!&amp;nbsp; Think of how cool it would be to F5 from your laptop, running your game on the Xbox 360, hit a break point and then step though code running on the console!&amp;nbsp; Yea, you can do that!&amp;nbsp; &lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s also something you can do with your children, and it doesn&amp;rsquo;t have to mean getting them to write code.&amp;nbsp; XNA MVP George Clingerman has a great post of &lt;a href="http://geekswithblogs.net/clingermangw/archive/2010/08/29/141546.aspx"&gt;how he made an unforgettable birthday party experience&lt;/a&gt;.&amp;nbsp; The kids all drew super heroes on paper, and the awesome geek dad George is, took them and scanned them at his PC, added them to a special Xbox game made just for the party.&amp;nbsp; Imagine the fun the kids had seeing there drawings come to life &amp;ndash; you could be that awesome geek mom or dad!&lt;/p&gt;
&lt;p&gt;To get started, head to &lt;a href="http://create.msdn.com"&gt;http://create.msdn.com&lt;/a&gt; and check out the &lt;a href="http://create.msdn.com/en-US/education/catalog/?contenttype=0&amp;amp;devarea=0&amp;amp;platform=21&amp;amp;sort=1"&gt;Xbox 360 education catalog&lt;/a&gt;.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://devlicio.us/aggbug.aspx?PostID=63497" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/MichaelCNeel/~4/ypiLwsN_BvY" height="1" width="1"/&gt;</description><feedburner:origLink>http://devlicio.us/blogs/vinull/archive/2010/11/19/xbox-indies-come-play-with-us.aspx</feedburner:origLink></item><item><title>Microsoft Slowly Euthanizes Xbox Indie Games</title><link>http://feedproxy.google.com/~r/MichaelCNeel/~3/qvKYmARP9wc/microsoft-slowly-euthanizes-xbox-indie-games.aspx</link><pubDate>Thu, 04 Nov 2010 03:46:00 GMT</pubDate><guid isPermaLink="false">40756a8b-6212-4073-9d98-6c26781577de:63253</guid><dc:creator>Michael C. Neel</dc:creator><slash:comments>17</slash:comments><wfw:commentRss>http://devlicio.us/blogs/vinull/rsscomments.aspx?PostID=63253</wfw:commentRss><comments>http://devlicio.us/blogs/vinull/archive/2010/11/03/microsoft-slowly-euthanizes-xbox-indie-games.aspx#comments</comments><description>&lt;p&gt;The title may be overly dramatic, but make no mistake, Microsoft is quietly holding a pillow over Xbox Live Indie Games, hoping to smother the service while no one looks.&amp;nbsp; Window Phone 7 developers, you have reason to be concerned.&lt;/p&gt;
&lt;p&gt;A few gaming sites are covering the story, like &lt;a href="http://kotaku.com/5679096/indie-devs-not-happy-with-new-xbox-360-dashboard"&gt;Kotaku&lt;/a&gt; and &lt;a href="http://www.wired.co.uk/news/archive/2010-11/02/indies-on-xbox-360-dashboard"&gt;Wired UK&lt;/a&gt;, but so far they are only interested in reporting forum drama as news.&amp;nbsp; I&amp;rsquo;m writing this article to lay out the full picture,and raise some awareness of the problem. &lt;/p&gt;
&lt;p&gt;When Xbox Live Community Games (later renamed Indie) was announced, Microsoft pushed the message that they were going to &amp;ldquo;democratize game distribution&amp;rdquo;.&amp;nbsp; Those are the words of XNA head Chris Satchell in 2008 at the Game Developers Conference and following Microsoft press releases.&amp;nbsp; So let&amp;rsquo;s look at the democracy Microsoft has in 2010 for Indie developers XBLIG:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;XBLIG can not connect to the Internet &lt;/li&gt;
&lt;li&gt;XBLIG can not have Achievements, nor use the term &lt;/li&gt;
&lt;li&gt;XBLIG can not have high score Leaderboards &lt;/li&gt;
&lt;li&gt;XBLIG can not charge more than $5 for a game &lt;/li&gt;
&lt;li&gt;XBLIG can not be played offline &lt;/li&gt;
&lt;li&gt;XBLIG can not be played by a non-Live account &lt;/li&gt;
&lt;li&gt;XBLIG box art / titles do not show in the friends list when you are playing an XBLIG title &lt;/li&gt;
&lt;li&gt;XBLIG titles do not show in your game history &lt;/li&gt;
&lt;li&gt;XBLIG titles are separated in the Marketplace from other games &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;i&gt;(A few notes: some developers have implemented a peer to peer based leaderboard system, but these can only update when other players are online and only contain the scores their clients have seen.&amp;nbsp; Pricing options are $5, $3, and $1 (USD).&amp;nbsp; A $10 option existed at launched, but was removed and replaced with a $1 option.&amp;nbsp; For comparison, Microsoft sells virtual Avatar clothing at $1 for a shirt or pair of shoes, and $3 for an outfit).&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;The Top Lists of Terror&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;One of the top complaints for years has been the interface in which gamers use to find XBLIG titles.&amp;nbsp; There is a Top Downloads list, a Top Rated list, a New Releases list, a list of games hand selected by IGN, and a list of games that were selected as finalists in the most recent contest.&amp;nbsp; Only the of contest finalists worked as intended.&lt;/p&gt;
&lt;p&gt;The IGN list is rarely updated, and follows no rhyme or reason to the selections (quality is not a factor).&amp;nbsp; The Top Downloads list does not factor in purchases, so titles with attention grabbing box art dominate, even when these downloads are deleted and not purchased.&amp;nbsp; Ratings on Xbox do not require that you play or even download the title and have shown no correlation to actual purchases.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;The New Releases list is a developer&amp;rsquo;s one shot to &amp;ldquo;stick&amp;rdquo; to another list before &amp;ldquo;falling off the dashboard.&amp;rdquo;&amp;nbsp; Developers share sales data and it is quite clear being on a dashboard list is worth 100x any online marketing promotion.&amp;nbsp; So what could be wrong with such a simple list?&amp;nbsp; All Microsoft has to do for this list is sort by release date, but this has proven to be quite difficult for the Softies.&amp;nbsp; With an ever increasing frequency the New Releases list &amp;ldquo;freezes&amp;rdquo; and any titles released during a freeze will not be added.&amp;nbsp; When the freeze is fixed, sometimes a few days, maybe a week or more, all titles are added at once.&amp;nbsp; Because of the list size limit, some titles will skip the new release list and go straight into the abyss.&lt;/p&gt;
&lt;p&gt;Microsoft will not compensate a developer who&amp;rsquo;s title was lost in a list freeze by placing them back on the list.&amp;nbsp; Pulling and releasing the title again to get on the list, even in the case of a freeze, is against the terms of service and can result in the developer being banned.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;&lt;b&gt;The Peer Review is a Lie&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;You may have heard that XBLIG titles go through a peer review process.&amp;nbsp; This is not the case.&amp;nbsp; Peer review, as done in the academic community, is a vetting of quality by ones peers.&amp;nbsp; To quote the &lt;a href="http://www.lib.utexas.edu/lsl/help/modules/peer.html"&gt;University of Texas&lt;/a&gt;, &amp;ldquo;Peer Review is a process that journals use to ensure the articles they publish represent the best scholarship currently available&amp;rdquo;.&amp;nbsp; Peer review in XBLIG means running a game though a checklist, looking for crashes and bugs.&amp;nbsp; If it doesn&amp;rsquo;t crash, it&amp;rsquo;s a pass.&amp;nbsp; There are a few more rules than just crashing, such as allowing any controller to start the game and making sure fonts are legible, but the bulk is just QA.&lt;/p&gt;
&lt;p&gt;In theory peer review sounds like a good idea &amp;ndash; an open alterative to Apple&amp;rsquo;s infamously closed review process, while providing some safety compared to Google&amp;rsquo;s Android process which has let bank spoofing applications into the wild and apps stealing contact and location information to sell to anyone who&amp;rsquo;s interested.&amp;nbsp; In practice however, it is an unqualified disaster.&lt;/p&gt;
&lt;p&gt;The first problem is the number of titles needing review.&amp;nbsp; As of this writing there are 70 games awaiting review, and it can easily take a month for a game to pass review.&amp;nbsp; If a game makes use of any non-English words (it doesn&amp;rsquo;t have to be translated, just one line of dialog &amp;ldquo;Hey amigo, let&amp;rsquo;s get a taco&amp;rdquo; counts), the game must be flagged by the developer for multiple languages and must have at least two reviews by speakers of that language.&amp;nbsp; This can hold a title up for months waiting for a qualified developer to submit a review.&lt;/p&gt;
&lt;p&gt;The next problem in peer review is basic math.&amp;nbsp; A developer spends $59.99 a year for a required Xbox Live Gold account, plus an additional $99.00 per year for an App Hub membership, and gives up 32.24% of revenue (Microsoft sell points at $0.0125/point, but pays developers at a rate of $0.0121/point).&amp;nbsp; In addition to these payments and time spent creating their own game, the developer is expected to spend time playing and reviewing other titles awaiting review.&amp;nbsp; I know QA is a low paying job, but I think this is the first case where QA pay is negative.&amp;nbsp; Developers are not forced to review other titles, but if no one does, the entire service shuts down.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;The last failure of peer review is handling of subjective rules.&amp;nbsp; The developers are asked to fail games that infringe upon copyright as well as games that are not proper for the service.&amp;nbsp; Microsoft has full rights to censor its service, but telling the developers to decide where the line is?&amp;nbsp;&amp;nbsp; That is just being lazy.&amp;nbsp; This has resulted in the games failing when someone thought there was a copyright violation but there was express permission (the developer still had to pull the content in question), games with political content failing because someone didn&amp;#39;t agree with the view, and in one case the Bible failing for &amp;ldquo;hate speech&amp;rdquo;.&amp;nbsp; Microsoft made an exemption for the Bible, but generally a developer who emails Microsoft asking for ruling on a subjective matter gets the boiler plate reply:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Microsoft is unable to participate in Peer Review, nor can we decide whether your fellow reviewers should think certain in-game content is bad enough to fail your game or not.&amp;nbsp; We also cannot clearly define what specific content is allowed in a game since each case is different, and it&amp;rsquo;s up to the reviewers&amp;rsquo; judgment.&amp;nbsp; Your best avenue is to ask one of the moderators or fellow reviewers for their opinions in your game forum.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Okay, one more issue with peer review &amp;ndash; there is a long standing bug that if a title reaches the total number of reviews needed to complete the cycle, and the last review is a fail for a bug, it will still be published on the service.&amp;nbsp; It seems to follow the logic &amp;ldquo;10 votes required and less than 2 fails&amp;rdquo; and does not check that the 10th review was actually a fail and the broken title is approved.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Promotions of the Wrong Kind&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Microsoft has on rare occasion selected some XBLIG titles to feature in top level dashboard promotions.&amp;nbsp; These come without notice, even to the developers whose titles are selected, and result in a windfall of sales.&amp;nbsp; The titles selected however, seem to be the worst examples on the service.&amp;nbsp; Shovelware titles that make use of Avatars are use to pump up the Avatar Games section, or a screensaver is featured in a Halloween spot.&amp;nbsp; The result is not just that quality titles are passed over, but that Microsoft is actively encouraging more shovelware!&lt;/p&gt;
&lt;p&gt;&lt;b&gt;XNA MVPs&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m going to make this short, as it isn&amp;rsquo;t interesting to but a few.&amp;nbsp; In the XNA forums, the MVPs not Microsoft are expected to do all moderation.&amp;nbsp;&amp;nbsp; I&amp;rsquo;m used to MVPs in MSDN forums helping out and generally being pretty cool so it&amp;rsquo;s shocking to see an active MVP hate in the XNA forums.&amp;nbsp; I can see why there is the hate &amp;ndash; the MVPs must lock all kinds of prohibited, yet common topics such as legal questions.&amp;nbsp; Asking about the tax forms on the Microsoft web site is a banned topic.&amp;nbsp; Again, Microsoft has the right to censor, but Microsoft, run your own damn forum and let the MVPs spend time help the community instead of policing it.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Paradise Lost&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;For a brief moment, during the new Xbox Dashboard beta, it looked as if Microsoft was making improvements.&amp;nbsp; XBLIG were listed beside Games on Demand, Demos, and Xbox Live Arcade.&amp;nbsp; The top lists were replaced with genre lists, ending the reign of terror and helping more of the 1400+ (more than 360, on demand, and Arcade titles combined) surface in a manageable UI.&amp;nbsp; This was just a cruel joke, as the update went live to find XBLIG removed from the &amp;ldquo;Games&amp;rdquo; section and listed in &amp;ldquo;Specialty Shops&amp;rdquo; next to Avatar clothing and the failed Game Room (where Microsoft tried to sell Atari 2600 titles for pretty close to the same prices as XBLIG).&amp;nbsp; To add insult to injury, the section art is an image of Avatars, as if to say &amp;ldquo;make us more Avatar Shovelware!&amp;rdquo;&lt;/p&gt;
&lt;p&gt;The community manager for XBLIG has left and there is no word of a replacement.&amp;nbsp; High profile developers are already reporting the new dashboard is showing a 50% drop in sales and a 75% drop in downloads.&amp;nbsp; Microsoft has not made one announcement to the community and instead is &lt;a href="http://www.digitalspy.com/gaming/news/a285642/microsoft-comments-on-xbox-indie-changes.html"&gt;working PR to spin coverage&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;We wanted to give Xbox Live Indie Games that full marketplace experience and felt this was the best place to do it, alongside other popular channels like the Avatar Marketplace. In fact, since the launch of Avatars, Xbox Live members have made more than 290 million customisations[sic] to their Avatar&amp;#39;s clothing, so we expect many people to regularly visit the Specialty Shops section.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;It&amp;rsquo;s worth note gamers do not need to visit the Specialty Shops to purchase Avatar clothing as there are numerous hooks into the new UI to up sell the virtual threads at every turn.&amp;nbsp; Also worth note is someone looking for Games will have to pass over the &amp;ldquo;Games &amp;amp; Demos&amp;rdquo;, &amp;ldquo;Genres&amp;rdquo;, and &amp;ldquo;Titles A-Z&amp;rdquo; sections to get to Specialty Shops section.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;&lt;b&gt;Why WP7 Developers Should Take Note&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;The XNA forums are in flames, and the fate of XBLIG is uncertain as the quality developers that held up the service announce they are moving on to other platforms.&amp;nbsp; Why should WP7 developers care?&amp;nbsp; Because many XBLIG developers see history repeating itself and are considering other platforms.&lt;/p&gt;
&lt;p&gt;The current WP7 forums mimic the early days of the Creators Club &amp;ndash; so many issues being raised little to no Microsoft response.&amp;nbsp; Microsoft offers special WP7 APIs to publishers that are not available to regular developers.&amp;nbsp; The short life span of the Zune HD and App Store (less than 6 months before abandoned) and the WTF-was-that life span of the Kin are very clear reminders Microsoft does not have a successful track record marketing to consumers.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Why I Hope Things Change&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Writing games for a console is something I thought I would never do in my lifetime.&amp;nbsp; XBLIG brought down the barrier to entry so anyone could release a game.&amp;nbsp; I&amp;rsquo;m sure this does not sit will with the EA&amp;rsquo;s and Activision&amp;rsquo;s of the world who want to keep prices high buy keeping a lock on distribution channels.&amp;nbsp; I honestly don&amp;rsquo;t care about the fight-the-man angle, writing a game for a console is just so damn &lt;b&gt;awesome &lt;/b&gt;I want to be a part of it.&amp;nbsp; I have committed a serious amount of time to building newly-launched &lt;a href="http://www.gamemarx.com/"&gt;GameMarx&lt;/a&gt; with my friends at FuncWorks to spread the word on the many great games on XBLIG and I&amp;rsquo;m not ready to give up on that dream just yet.&lt;/p&gt;
&lt;p&gt;I hope this is read by more than a few and pressure is brought down on Microsoft to make good on their promise and democratize game distribution.&amp;nbsp; If you agree, pass this on and lets &lt;a href="http://search.twitter.com/search?q=savexblig"&gt;#SaveXBLIG&lt;/a&gt;!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://devlicio.us/aggbug.aspx?PostID=63253" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/MichaelCNeel/~4/qvKYmARP9wc" height="1" width="1"/&gt;</description><category domain="http://devlicio.us/blogs/vinull/archive/tags/xna/default.aspx">xna</category><feedburner:origLink>http://devlicio.us/blogs/vinull/archive/2010/11/03/microsoft-slowly-euthanizes-xbox-indie-games.aspx</feedburner:origLink></item><item><title>ASP.NET Security Vulnerability</title><link>http://feedproxy.google.com/~r/MichaelCNeel/~3/qZ1tWfgKkZk/asp-net-security-vulnerability.aspx</link><pubDate>Sat, 18 Sep 2010 17:12:00 GMT</pubDate><guid isPermaLink="false">40756a8b-6212-4073-9d98-6c26781577de:62266</guid><dc:creator>Michael C. Neel</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://devlicio.us/blogs/vinull/rsscomments.aspx?PostID=62266</wfw:commentRss><comments>http://devlicio.us/blogs/vinull/archive/2010/09/18/asp-net-security-vulnerability.aspx#comments</comments><description>&lt;p&gt;Yesterday a vulnerability was disclosed at a security conference that enables 
an attacker to gain the Machine Key of an ASP.NET website.&amp;nbsp; This key is used by 
the server to encrypt cookies, form data and other values sent to the client.&amp;nbsp; 
With this key the attacker can exploit an ASP.NET site to gain admin access and 
possibly download files from the server such as web.config (that often contains 
other sensitive data like database connection strings).&lt;/p&gt;
&lt;h2&gt;What you need to do now&lt;/h2&gt;
&lt;p&gt;Go read up on the vulnerability at:&lt;/p&gt;
&lt;p&gt;&lt;a title="http://www.microsoft.com/technet/security/advisory/2416728.mspx" href="http://www.microsoft.com/technet/security/advisory/2416728.mspx"&gt;http://www.microsoft.com/technet/security/advisory/2416728.mspx&lt;/a&gt; 
&lt;br /&gt;&lt;a title="http://weblogs.asp.net/scottgu/archive/2010/09/18/important-asp-net-security-vulnerability.aspx" href="http://weblogs.asp.net/scottgu/archive/2010/09/18/important-asp-net-security-vulnerability.aspx"&gt;http://weblogs.asp.net/scottgu/archive/2010/09/18/important-asp-net-security-vulnerability.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Then make a simple change to your web.config file and add a custom error page 
that will prevent the attack from working (the attack in simple terms is done by 
sending bad requests to the target site, and watching the error codes and time 
to return those error codes for clues in figuring out the Machine Key).&lt;/p&gt;
&lt;p&gt;The exploit is already making it&amp;rsquo;s way though the internet.&amp;nbsp; Microsoft is 
working on a patch that will be released shortly, but until then these are the 
only steps to protect your website.&amp;nbsp; It&amp;rsquo;s unfortunate, but the two who found the 
vulnerability refused to work with Microsoft and instead choose to reveal the 
details of the exploit at a conference and then toss thumb drives into the crowd 
containing code to exploit sites.&amp;nbsp; &lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://devlicio.us/aggbug.aspx?PostID=62266" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/MichaelCNeel/~4/qZ1tWfgKkZk" height="1" width="1"/&gt;</description><feedburner:origLink>http://devlicio.us/blogs/vinull/archive/2010/09/18/asp-net-security-vulnerability.aspx</feedburner:origLink></item><item><title>CodeStock and GameMarx</title><link>http://feedproxy.google.com/~r/MichaelCNeel/~3/LIsUu2nJ5Z0/codestock-and-gamemarx.aspx</link><pubDate>Thu, 10 Jun 2010 15:32:00 GMT</pubDate><guid isPermaLink="false">40756a8b-6212-4073-9d98-6c26781577de:60049</guid><dc:creator>Michael C. Neel</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Why do I love launching sites in the same month as &lt;a href="http://codestock.org"&gt;CodeStock&lt;/a&gt;?&amp;nbsp; Is it the draw to a wide audience and a perfect place to announce new, or do I just enjoy pain and no sleep to kick off summer?&lt;/p&gt;
&lt;p&gt;Last year it was &lt;a href="http://www.dragontee.com/"&gt;DragonTee&lt;/a&gt;, a t-shirt site for my then girlfriend and now wife Cicelie (nothing says commitment like building a website!).&amp;nbsp; This year it&amp;rsquo;s &lt;a href="http://gamemarx.com"&gt;GameMarx&lt;/a&gt;, a site dedicated to Xbox Live Indie Game coverage.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://gamemarx.com"&gt;&lt;img style="border-bottom:0px;border-left:0px;margin:10px auto;display:block;float:none;border-top:0px;border-right:0px;" title="image" alt="image" src="http://devlicio.us/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vinull/image_5F00_79EA41FF.png" width="384" border="0" height="94" /&gt;&lt;/a&gt;We taking a slightly different approach than the normal game review site, and will cover some XNA development as well.&amp;nbsp; Nothing deep, we are really out to be a gateway site leading current developers to XNA, and pick up some new developers along the way (I think game programming is a great way to get kids involved in computers for more than just FaceBook).&lt;/p&gt;
&lt;p&gt;Figuring out the technology behind this project has been crazy, and when things settle down I will blog how we tackled it.&amp;nbsp; How many projects do you get to not only write software for a teleprompter, but build the teleprompter as well!?&amp;nbsp; In the mean time, if you see me at &lt;a href="http://codestock.org"&gt;CodeStock&lt;/a&gt; and want to ask some questions I&amp;rsquo;ll be glad to share!&lt;/p&gt;
&lt;p&gt;&lt;a href="http://codestock.org"&gt;&lt;img style="border-bottom:0px;border-left:0px;margin:10px auto;display:block;float:none;border-top:0px;border-right:0px;" title="CodeStock-Logo" alt="CodeStock-Logo" src="http://devlicio.us/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vinull/CodeStockLogo_5F00_57290A42.png" width="253" border="0" height="145" /&gt;&lt;/a&gt;&lt;i&gt; (Going to do a shameless plug for CodeStock now)&lt;/i&gt; &lt;a href="http://codestock.org/"&gt;CodeStock 2010&lt;/a&gt; is June 25 &amp;amp; 26, in Knoxville, TN, with sessions for developers, IT pros, and technology entrepreneurs.&amp;nbsp; We also have one of the best open spaces conferences running along side the breakout sessions (yes I&amp;rsquo;m the event organizer and might be a little biased, but they really are great!).&amp;nbsp; We having some fun this year with live podcasts and panel discussions, so come out and join us!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://devlicio.us/aggbug.aspx?PostID=60049" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/MichaelCNeel/~4/LIsUu2nJ5Z0" height="1" width="1"/&gt;</description><feedburner:origLink>http://devlicio.us/blogs/vinull/archive/2010/06/10/codestock-and-gamemarx.aspx</feedburner:origLink></item><item><title>Web Deployment Projects for 2010: Microsoft Listens</title><link>http://feedproxy.google.com/~r/MichaelCNeel/~3/B4vs2VjQTH0/web-deployment-projects-for-2010-microsoft-listens.aspx</link><pubDate>Fri, 16 Apr 2010 02:00:00 GMT</pubDate><guid isPermaLink="false">40756a8b-6212-4073-9d98-6c26781577de:57324</guid><dc:creator>Michael C. Neel</dc:creator><slash:comments>2</slash:comments><wfw:commentRss>http://devlicio.us/blogs/vinull/rsscomments.aspx?PostID=57324</wfw:commentRss><comments>http://devlicio.us/blogs/vinull/archive/2010/04/15/web-deployment-projects-for-2010-microsoft-listens.aspx#comments</comments><description>&lt;p&gt;&lt;a href="http://www.flickr.com/photos/carowallis1/320695236/"&gt;&lt;img style="border-right-width:0px;margin:0px 10px 10px 0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="Perfect Heart by Caro Wallis" alt="Perfect Heart by Caro Wallis" src="http://devlicio.us/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vinull/image_5F00_3.png" width="244" align="left" border="0" height="184" /&gt;&lt;/a&gt;Some like to suggest that Microsoft MVPs are just Microsoft zealots pushing the company line.&amp;nbsp; While it&amp;rsquo;s true MVPs are fans of Microsoft, the strongest criticisms, the harshest words, the most brutally honest statements I&amp;rsquo;ve heard against Microsoft have come from MVPs, and many times are delivered in person.&lt;/p&gt;
&lt;p&gt;This past MVP summit, we were quite vocal about wanting &amp;ldquo;round trip&amp;rdquo; support in Visual Studio 2010 &amp;ndash; meaning a project or solution could be opened in 2010 and in 2008, something that&amp;rsquo;s not currently possible (upgrading a project is a one way street).&amp;nbsp; It got to the point that sessions would open for Q&amp;amp;A, and we would be asked to not bring up round trip support because it would drown out all other discussion.&lt;/p&gt;
&lt;p&gt;For me, the need for round trip support was because of Web Deployment Projects (WDP) &amp;ndash; or the lack of WDP for VS2010.&amp;nbsp; VS2010 introduces a new system called Web Deployment Packages, which support Web Application Projects but not Website Projects.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;Websites vs Web Applications is not a new debate, or even a very interesting one.&amp;nbsp; I&amp;rsquo;ve always favored Websites, and use Applications in rare cases.&amp;nbsp; The Application project structure &amp;ndash; treating my site as a class library &amp;ndash; just feels wrong.&amp;nbsp; I also edit and add files outside of Visual Studio (yes, with Vi) and don&amp;rsquo;t want to remember to add those files to the Application project.&amp;nbsp; The advantage of the Application structure though is a project build file, making it easy to create custom build scripts (such as setting database connection string based on development or production builds). Web Deployment Projects, first introduced for VS2005, fills this gap by adding an MS Build file to the Website project, kept in a different directory outside of the web root.&lt;/p&gt;
&lt;p&gt;Since VS2010&amp;rsquo;s Web Packages didn&amp;rsquo;t support Website Project, and there was no support for existing Web Deployment Projects, VS2010 left me with no deployment story.&amp;nbsp; This, more than anything else, was why round trip support was important to me &amp;ndash; I would need VS2008 to deploy projects.&lt;/p&gt;
&lt;p&gt;At the MVP summit I spent some time with the team working on deployment in VS2010.&amp;nbsp; A few weeks later they said, &amp;ldquo;here, try this out and tell us if you find any issues.&amp;rdquo;&amp;nbsp; Now &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=711a2eef-b107-4784-9063-c978edc498cd&amp;amp;displaylang=en"&gt;Web Deployment Projects for VS2010 Beta 1&lt;/a&gt; is available to all.&amp;nbsp; Though we didn&amp;rsquo;t get round trip support (which is more complex than it first seems), Microsoft is listening and acting on feedback.&amp;nbsp; That this add-in was done in the weeks before VS2010&amp;rsquo;s launch is amazing.&lt;/p&gt;
&lt;p&gt;There is also a bonus I didn&amp;rsquo;t expect: they added Package support to Website Projects.&amp;nbsp; Now you can use Web Deployment Projects to build Packages and deploy them with the &lt;a href="http://www.iis.net/download/WebDeploy"&gt;Web Deployment Tools for IIS7&lt;/a&gt;.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;That&amp;rsquo;s getting to have your cake and eat it too.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://devlicio.us/aggbug.aspx?PostID=57324" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/MichaelCNeel/~4/B4vs2VjQTH0" height="1" width="1"/&gt;</description><feedburner:origLink>http://devlicio.us/blogs/vinull/archive/2010/04/15/web-deployment-projects-for-2010-microsoft-listens.aspx</feedburner:origLink></item><item><title>Why Apple Fears Mono, Java, and Flash</title><link>http://feedproxy.google.com/~r/MichaelCNeel/~3/6aFtuWp3BaY/why-apple-fears-mono-java-and-flash.aspx</link><pubDate>Wed, 14 Apr 2010 01:56:00 GMT</pubDate><guid isPermaLink="false">40756a8b-6212-4073-9d98-6c26781577de:57145</guid><dc:creator>Michael C. Neel</dc:creator><slash:comments>6</slash:comments><wfw:commentRss>http://devlicio.us/blogs/vinull/rsscomments.aspx?PostID=57145</wfw:commentRss><comments>http://devlicio.us/blogs/vinull/archive/2010/04/13/why-apple-fears-mono-java-and-flash.aspx#comments</comments><description>&lt;p&gt;&lt;a href="http://www.flickr.com/photos/aphrodite/139378542/"&gt;&lt;img style="border-right-width:0px;margin:0px 10px 10px 0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="Goodnight by ~Aphrodite" alt="Goodnight by ~Aphrodite" src="http://devlicio.us/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vinull/image_5F00_3.png" width="244" align="left" border="0" height="184" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Much ado has been made of these few words in Apple&amp;rsquo;s iPhone SDK:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;quot;Applications may only use Documented APIs in the manner prescribed by Apple and must not use or call any private APIs. Applications must be originally written in Objective-C, C, C++, or JavaScript as executed by the iPhone OS WebKit engine, and only code written in C, C++, and Objective-C may compile and directly link against the Documented APIs (e.g., Applications that link to Documented APIs through an intermediary translation or compatibility layer or tool are prohibited).&amp;quot;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Apple is asserting it can not only control what software runs on its devices, but what that software was created with.&amp;nbsp; Steve Jobs has claimed this is to keep out bad applications that result from cross platform frameworks.&amp;nbsp; I wonder what the Mozilla Firefox developers think of that&amp;hellip;&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s get one thing straight &amp;ndash; Jobs doesn&amp;rsquo;t care about application quality, only quantity.&amp;nbsp; In the recent OS 4.0 event Jobs claimed 285,000 apps in the app store, I doubt he filtered out the iFart clones.&amp;nbsp; 50,000 games next to a chart showing the Nintendo DS at a mere 4,321.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;Why the focus on the numbers?&amp;nbsp; Because of this number: 1 Billion.&amp;nbsp; Apple is launching an advertising network iAd, and is touting 1 Billion ad impressions &lt;b&gt;per day&lt;/b&gt;.&amp;nbsp; That is a very strong number for advertisers who are trying to capture the hip new doesn&amp;rsquo;t-watch-tv, doesn&amp;rsquo;t-read-magazines crowd.&amp;nbsp; If Apple can get an exclusive lock on these people, they can charge much, much more than anyone else.&lt;/p&gt;
&lt;p&gt;Enter Mono, Java, and Flash.&amp;nbsp; These technology share one thing in common that scares Apple and threatens this advertising river of money.&amp;nbsp; Each of these let developers write their app once and deploy it to multiple devices with minimal effort.&amp;nbsp; Traditionally, developers would spend many hours porting an application across APIs and SDKs, and even more hours maintaining multiple ports.&amp;nbsp; This leads to most developers picking one platform to focus on, and ignoring the rest.&lt;/p&gt;
&lt;p&gt;If you told a developer for the same level of effort they can sell their application to all devices, who would turn it down?&amp;nbsp; All the &lt;span style="text-decoration:line-through;"&gt;locked&lt;/span&gt; exclusive applications that lead to those 1 Billion ad impressions would dissolve away.&amp;nbsp; Most smart phone hardware is the same &amp;ndash; big touch screen, or big touch screen with keyboard.&amp;nbsp; The iPad has a dozen competitors ready at the start, and doesn&amp;rsquo;t have the time lead of its older brother iPhone.&amp;nbsp; If the majority of applications are available for any device, what is left to compete on but price?&lt;/p&gt;
&lt;p&gt;Mono, Java and Flash aren&amp;rsquo;t toothless hobby projects either, they are backed by Novell, Oracle, and Adobe &amp;ndash; three amigos not afraid of a fight.&amp;nbsp; Can Apple get away with this move remains to be seen, but let&amp;rsquo;s not kid ourselves that the market will factor in.&amp;nbsp; For every developer that abandons Apple 50 more will take their place, and the majority of consumers will not understand nor care.&amp;nbsp; It&amp;rsquo;s easy to throw up a red herring like flash banner ads and claim that&amp;rsquo;s what will happen if flash is allowed on the iPhone.&lt;/p&gt;
&lt;p&gt;If Apple gets their way the damage won&amp;rsquo;t be felt for a few years.&amp;nbsp; We&amp;rsquo;ll look back at a stagnant mobile device world and wonder what happened.&amp;nbsp; It will be no different than Microsoft knocking off Netscape, and giving us 5 years of IE6.&amp;nbsp; Innovation happens when there is healthy competition.&lt;/p&gt;
&lt;p&gt;What I&amp;rsquo;d really love to see is someone create a tool that converts Objective-C and iPhone SDK apps to other platforms.&amp;nbsp; Developers of existing iPhone apps can run this tool on their code which would convert it to say, Java and Android, build it, make some tweaks, and start selling it in the Android Marketplace.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;Then we&amp;rsquo;ll see if Apple will go the next step and claim it owns the right to anything you create with Apple tools.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://devlicio.us/aggbug.aspx?PostID=57145" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/MichaelCNeel/~4/6aFtuWp3BaY" height="1" width="1"/&gt;</description><category domain="http://devlicio.us/blogs/vinull/archive/tags/opinion/default.aspx">opinion</category><feedburner:origLink>http://devlicio.us/blogs/vinull/archive/2010/04/13/why-apple-fears-mono-java-and-flash.aspx</feedburner:origLink></item></channel></rss>
