﻿<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:blogChannel="http://backend.userland.com/blogChannelModule" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#">
  <channel>
    <title>Nine-Fifty LLC</title>
    <description>The time is now!</description>
    <link>http://blogs.nine-fifty.com/</link>
    <docs>http://www.rssboard.org/rss-specification</docs>
    <generator>BlogEngine.NET 1.5.1.22</generator>
    <language>en-us</language>
    <blogChannel:blogRoll>http://blogs.nine-fifty.com/opml.axd</blogChannel:blogRoll>
    <blogChannel:blink>http://www.dotnetblogengine.net/syndication.axd</blogChannel:blink>
    <dc:creator>My name</dc:creator>
    <dc:title>Nine-Fifty LLC</dc:title>
    <geo:lat>0.000000</geo:lat>
    <geo:long>0.000000</geo:long>
    <item>
      <title>Adding insult to injury</title>
      <description>&lt;p&gt;So I was just starting to be able to get back into recreational programming again when Bamm!, my computer crashed. I was feeling a little bit of deja vu until I realize the &lt;a href="http://www.nine-fifty.com/blog/post/2008/12/14/Computer-woes.aspx"&gt;previous crash&lt;/a&gt; is totally unlike this current one. The last crash put up the &lt;a href="http://en.wikipedia.org/wiki/Blue_Screen_of_Death"&gt;BSOD&lt;/a&gt; while this one just freezes the screen.&amp;nbsp; The main difference here is that the computer even froze while I was looking through the &lt;a href="http://en.wikipedia.org/wiki/CMOS"&gt;CMOS&lt;/a&gt; settings. This makes me think it is a hardware related issue. It was referbished after all. That's not to say that referbished computers are garbage, just that sometimes the real issues remain in the system after we think we found the cause. Oh well, that's life for you.&lt;/p&gt;
&lt;h2&gt;Another Project, another disappiontment&lt;/h2&gt;
&lt;p&gt;Before the computer crash, I had decided to build a media machine that would house all the digital entertainment for the household. Before that, stuff was split between my wife's laptop, and my old development machine. We played it all through the Xbox, the center of our digital life. Well thinking that UPnP and &lt;a href="http://www.dlna.org/home"&gt;DLNA&lt;/a&gt; was mature enough, I decided to use a linux distribution for the media machine. I'm not saying it's a mistake, but it didn't work put as well as I'd hoped for it. My lack of knowledge with linus based OSes didn't help the situation either. I was evenually able to get fuppes up and running with less than spectacular results, but I was still missing a crutial piece of the puzzle, Windows Media Player Intergration. I couldn't get WMP to use the library on the medai machine as part of it's own library. This meant I couldn't sync up any devices to the main library also, adding an extra step of copying over the songs I wanted and syncing. Who has time for that? The good thing that came about that experiment was that it gave me another machine to work on. I'm writing this post in FireFox on my &lt;a href="http://www.ubuntu.com/"&gt;Ubuntu&lt;/a&gt; installation. I was also able to find and install MonoDevelop, and although it's not up to the standards of Visual Studio.net it does do a great job for a free application.&lt;/p&gt;
&lt;h2&gt;The Icing on the cake&lt;/h2&gt;
&lt;p&gt;So now I'm pretty much starting over with my programming stuff since most of my "tools" were on the computer that crashed. Whatever! A few days earlier I decided that I wanted to restart my&lt;a href="http://xbox360.ign.com/articles/833/833640p1.html"&gt; Mass Effect&lt;/a&gt; campaigne in preparation of Mass Effect 2 coming out next year. Since I remember most of what happened with the main storyline, I decided to bef my team up for the coming challenges. I pretty much did all the Citidel missions that you could do before getting Liara on the team and I only had a few more to go before I was forced to continue the main storyline. Well I settle in to get a good Mass Effect session in, and as I land on the planet and start to move, it freezes. Honestly at this point I didn't think anything of it because it's happened before. Well, after the reboot, it froze again, except this time it was on the Xbox boot up screen. My immediate thought was "Oh Crap!". Hoping against hope, I restarted it again and the ball didn't even fade in all the way before it froze. I pretty much knew what was going on at this point and I thought, "Awww man, the 3 year warrenty JUST expired". The last restart confirmed my suspisions, the three red flashing lights appeared.&lt;/p&gt;
&lt;p&gt;So now I'm down an Xbox, and a computer with no way to replace either of them anytime soon. I wonder what else is going to happen.&lt;/p&gt;</description>
      <link>http://blogs.nine-fifty.com/post/2009/07/01/Adding-insult-to-injury.aspx</link>
      <author>SirDarquan</author>
      <comments>http://blogs.nine-fifty.com/post/2009/07/01/Adding-insult-to-injury.aspx#comment</comments>
      <guid>http://blogs.nine-fifty.com/post.aspx?id=f628c8bc-5712-4b5a-8196-a4c036d8a25b</guid>
      <pubDate>Wed, 01 Jul 2009 17:21:00 -1100</pubDate>
      <category>General</category>
      <dc:publisher>SirDarquan</dc:publisher>
      <pingback:server>http://blogs.nine-fifty.com/pingback.axd</pingback:server>
      <pingback:target>http://blogs.nine-fifty.com/post.aspx?id=f628c8bc-5712-4b5a-8196-a4c036d8a25b</pingback:target>
      <slash:comments>1</slash:comments>
      <trackback:ping>http://blogs.nine-fifty.com/trackback.axd?id=f628c8bc-5712-4b5a-8196-a4c036d8a25b</trackback:ping>
      <wfw:comment>http://blogs.nine-fifty.com/post/2009/07/01/Adding-insult-to-injury.aspx#comment</wfw:comment>
      <wfw:commentRss>http://blogs.nine-fifty.com/syndication.axd?post=f628c8bc-5712-4b5a-8196-a4c036d8a25b</wfw:commentRss>
    </item>
    <item>
      <title>It seems like in eternity</title>
      <description>&lt;p&gt;Well, I&amp;rsquo;ve finally decided to come back to update this blog. It&amp;rsquo;s pretty bad because I haven&amp;rsquo;t done an update for more than 2 months straight. Oh well, I&amp;rsquo;m here now. Yesterday was my birthday, I made 32 this year, but I don&amp;rsquo;t feel a day over 30! I&amp;rsquo;m one of the people that really believe that the number of times the earth revolves around the sun has nothing to do with your age. You are as young as you feel and depending on how well you take care of yourself, that can be pretty young. In my case, I really enjoy the way food tastes, and so I feel my close to this number associated with me. My wife has been hounding me to lose some weight and get in shape, but I was never motivated to do so. She on the other hand is very motivated to lose weight and has been getting things to aid her in that goal. A few years ago I bought her a treadmill for Xmas. Now before anyone gets offended thinking that&amp;rsquo;s a dog house worthy present, it was what she asked for. She was pregnant with our 3rd child and her body hadn&amp;rsquo;t really had time to go back to the way it was. She was extremely pleased with it, thank you very much.&lt;/p&gt;
&lt;p&gt;Anyway, quite sometime after that we used Craig&amp;rsquo;s List to find an elliptical machine and an Ab Cruncher, at least I think that&amp;rsquo;s what it&amp;rsquo;s called. Finally she purchased resistance bands off of ebay, completing her &amp;ldquo;gym&amp;rdquo;. I arranged all the equipment in the basement and she literally has a personal gym. But of course, that&amp;rsquo;s not enough. While watching the Biggest Loser for inspiration, she decides she wants a Body Bug like them. Little did she know they were way too expensive for our budget, but once she came to that realization, she settled for&amp;nbsp; a Garmin Forerunner. Initially she only had the heart monitor and the watch. This system is supposed to more accurately determine the number of calories burned by keeping track of your heart rate. She used it for a few weeks and had fun, but then realized there was a foot pod that can be added into the system. With it she could walk/run outside, keep track of her pace and monitor her heart, then come back to the computer to upload the results to she how she&amp;rsquo;d done. Now she&amp;rsquo;s all set to lose weight, or is she?&lt;/p&gt;
&lt;p&gt;Apparently not, because now she needs a food scale to keep track of all the calories she&amp;rsquo;s consuming. She was so impressed by this one scale because the advertisement said that you could be a whole plate of food on the scale and it could determine the nutritional value of the meal. At this point I had to step in to let her know how impossible that was. I told her that there was no way a scale could &amp;ldquo;know&amp;rdquo; the weight of the plate, the contents of the plate nor the nutritional values of each item on the to be accurate with in any meaningful degree. Her immediate response was, &amp;ldquo;How do you know?&amp;rdquo; Now, I guess the fact that I read Science / Technology news almost everyday doesn&amp;rsquo;t weight in when she asked that question, nor does the fact that I love gadgets and would have heard something about a breakthrough that can do something that profound had it existed. So my only response was, &amp;ldquo;Cuz I know how technology works!&amp;rdquo; Later she came back saying that the plates weight could be zeroed out and that there were codes for individual food items. Now it makes more sense. So she ended up buying the scale and I have to say that I got a little excited seeing a new device in the house.&lt;/p&gt;
&lt;p&gt;The scale has quite a few food codes in it for most things you&amp;rsquo;d eat normally and an extra 99 programmable codes for things it doesn&amp;rsquo;t know about. Its database is not upgradable and the data can&amp;rsquo;t be extracted, bummer. But it has a really cool display. Under the circular platform that you put the food on is a LCD Nutrition Facts label. Once you put in the code and zero out the container for your food item, it begins calculating the most common items on the nutrition label: Calories, Calories From Fat, Total Fat, Saturated Fat, Trans Fat, Cholesterol, Sodium, Carbohydrates, Dietary Fiber, Sugars and Protein. It does this based on the weight. So now my wife can control how many calories goes into her body by adjusting the proportions of food on her plate by consuming less of something higher in calories and putting more of something lower in calories in its place. The only thing missing was a running total of each meal. The scale could do a running total, but&amp;nbsp; it was until you erased it. So you can&amp;rsquo;t separate say breakfast from lunch. If you want just the lunch totals, you have to delete the breakfast totals. If you want the whole days total, then they all get summed together and you&amp;rsquo;ll have to do your own math to figure out the individual meals.&lt;/p&gt;
&lt;p&gt;Now, for the last 2 months, I really been in a programming funk. I just didn&amp;rsquo;t have any motivation to do any programming at home. I was producing brilliant code at work though. And since I didn&amp;rsquo;t go near my computer, I didn&amp;rsquo;t blog, hence the gap. But this little device inspired me to create a little web app for my wife that would make up for the lack of features. it was pretty easy to do, only took me 3 days to complete it and I have to say I&amp;rsquo;m really proud of the work I put into it. I also believe it was just what I needed to get me out of the funk I was in because once I went back to my code base I realized how lacking it was. So now I&amp;rsquo;m in a planning stage to make my code base a little more robust and less &amp;ldquo;I&amp;rsquo;m the only person going to be using it&amp;rdquo;-ish. With this project, which I called &lt;a title="Nutrition Facts widget" href="http://nutritionfacts.nine-fifty.com/" target="_blank"&gt;My Nutrition Facts&lt;/a&gt;, I made it so that anyone that see the widget can get one too. It would be a shame to keep something so cool to only my wife.&lt;/p&gt;</description>
      <link>http://blogs.nine-fifty.com/post/2009/05/26/It-seems-like-in-eternity.aspx</link>
      <author>SirDarquan</author>
      <comments>http://blogs.nine-fifty.com/post/2009/05/26/It-seems-like-in-eternity.aspx#comment</comments>
      <guid>http://blogs.nine-fifty.com/post.aspx?id=86d5121d-7edd-4326-9de8-68835a70c12b</guid>
      <pubDate>Tue, 26 May 2009 12:28:00 -1100</pubDate>
      <category>Projects</category>
      <dc:publisher>SirDarquan</dc:publisher>
      <pingback:server>http://blogs.nine-fifty.com/pingback.axd</pingback:server>
      <pingback:target>http://blogs.nine-fifty.com/post.aspx?id=86d5121d-7edd-4326-9de8-68835a70c12b</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://blogs.nine-fifty.com/trackback.axd?id=86d5121d-7edd-4326-9de8-68835a70c12b</trackback:ping>
      <wfw:comment>http://blogs.nine-fifty.com/post/2009/05/26/It-seems-like-in-eternity.aspx#comment</wfw:comment>
      <wfw:commentRss>http://blogs.nine-fifty.com/syndication.axd?post=86d5121d-7edd-4326-9de8-68835a70c12b</wfw:commentRss>
    </item>
    <item>
      <title>A little cleaning up to do</title>
      <description>&lt;p&gt;Don't you just love when life happens? I'm getting to the point where I am creating pages to test out the work I've done so far, and BAMM! I start to get busy in other areas of my life, requiring me to spend a little less time on the computer. Oh well, I'm here now, am I have pretty exciting news! At least it's exciting to me anyway. I've been able to create a catalog page that allows one to browse the entire collection. Luckily I used the List&amp;lt;&amp;gt; object to hold the Game metadata, and since it implements IEnumerable, the collection becomes flexible. I was also able to create a Game server control. Just set the gameID attribute to the id of the game you want to load and it'll not only expose all the properties of that game, but it'll also create the HTML needed to display it. It's all pretty simple really.&lt;/p&gt;  &lt;p&gt;Well that fulfills most of the minimum specs I proposed a few posts ago which means I'm really close to a release. The only thing is this code is really inefficient. Any code I make while learning is always that way. The only time that's not true is when the plan is already laid out and I'm coding for a specific goal. I created more of an overview rather than a specific plan, and as a result I get &amp;quot;sloppy&amp;quot; code. As long as I learn for it, I don't feel that the time was wasted though. I may still end up releasing this version and if some poor bastard decides to want to help out by fixing it, well that'll be great but I won't hold my breath.&lt;/p&gt;</description>
      <link>http://blogs.nine-fifty.com/post/2009/02/12/A-little-cleaning-up-to-do.aspx</link>
      <author>sirdarquan</author>
      <comments>http://blogs.nine-fifty.com/post/2009/02/12/A-little-cleaning-up-to-do.aspx#comment</comments>
      <guid>http://blogs.nine-fifty.com/post.aspx?id=4813e9dd-4da3-404b-8aa4-51557f5f6807</guid>
      <pubDate>Thu, 12 Feb 2009 17:40:34 -1100</pubDate>
      <category>Arcade CMS</category>
      <category>Projects</category>
      <dc:publisher>sirdarquan</dc:publisher>
      <pingback:server>http://blogs.nine-fifty.com/pingback.axd</pingback:server>
      <pingback:target>http://blogs.nine-fifty.com/post.aspx?id=4813e9dd-4da3-404b-8aa4-51557f5f6807</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://blogs.nine-fifty.com/trackback.axd?id=4813e9dd-4da3-404b-8aa4-51557f5f6807</trackback:ping>
      <wfw:comment>http://blogs.nine-fifty.com/post/2009/02/12/A-little-cleaning-up-to-do.aspx#comment</wfw:comment>
      <wfw:commentRss>http://blogs.nine-fifty.com/syndication.axd?post=4813e9dd-4da3-404b-8aa4-51557f5f6807</wfw:commentRss>
    </item>
    <item>
      <title>Site theming is a headache</title>
      <description>&lt;p&gt;Alright, I believe I've done most of the back end stuff for the arcade CMS framework as far as the data is concerned. I've tested adding and updating a game, though the MochiAds interface of course and in doing that the select and delete methods were used. It all works like I expect it to. I haven't created an XML provider yet, but that won't happen until after the public release. I don't imagine it'll be hard to get working, especially now that I have a template with the DB provider. Now I have the task of deciding how to show this information to the world, and here is where the fun starts.&lt;/p&gt;  &lt;p&gt;I've stated many times that my code was inspired by the BlogEngine.net code base, and I can't lie in some parts they look really similar unless you look at the db provider code. There they look exactly alike because I only changed the parts relevant to my system. Hey, why reinvent the wheel, right? But I don't believe the presentation layer will look anything like the BE code, and there is an interesting reason for that. Yesterday, I updated the blog engine to the latest version with quite a few new improvements. I love most of them because they add functionality to the system that I can program against without needing to go into the system itself.&amp;#160; There is the new &amp;quot;Reply to comment&amp;quot; code that causes the most headaches in my opinion. The entire code base takes this into account until you get to the presentation layer. Once it's all in place, I went to the administrative settings page for BE and looked for the Nested Comments option, and next to the checkbox was a comment that said &amp;quot;Will only work if you theme supports it&amp;quot;. I immediately thought, What the hell?&lt;/p&gt;  &lt;p&gt;Anyone familiar with creating themes for any web platform will understand the reasoning behind that statement and it makes sense, I'm not denying that. But now all the theme writers have to go back and update their themes to accommodate this new feature and after that, anybody that uses those themes have to reapply the themes to their site and if you made modifications to the original theme, you're pretty much screwed if you don't know how to do that type of stuff. My impression is that BlogEngine.net is used mostly by developers who can modify just about every part of a website to fit their needs, so this won't come as a big deal. Hell, it took me only 20 minutes to figure out what needed to be done to add it to my heavily modified theme. But BlogEngine.net wasn't created just to serve developers, it was created to be an alternative to WordPress on a windows server. As such, making upgrades like that to the engine should be more seamless and configurable through the setting area. I also totally understand why it was done the way it was, and I'm not trying to belittle the efforts of the BlogEngine.net development team. They've done a phenomenal job creating a great product, but it just goes to show that it still has a little ways to go before becoming totally end-user friendly.&lt;/p&gt;  &lt;p&gt;This upgrade got me to thinking about theming in general, though. Messing with SMF, a forum script written in PHP, they had a similar deal. Theme creators and modders were in two totally different worlds. Theme creators would make a theme based on a brand new installation, and the smart ones figured out how to allow modders to extend the theme without actually modifying it using CSS and such. Modders could only make a mod based on a new installation, because otherwise it would never auto install. After each mod was installed, I had to modify the theme slightly to make the new options available. Luckily, I was only using one theme, otherwise I'd have to modify each theme I wanted to make the options available in. It was really a nightmare that people have just come to accept. PHP is a scripting language where the text can easily be modified to alter the way it works, and that was the basis behind the &amp;quot;installation&amp;quot; of themes and mods, they look for specific strings in specific files and either insert their code in front of or behind that string. It was better that me needing to open Beyond Compare and doing it myself, but it was still limited in it's implementation. &lt;/p&gt;  &lt;p&gt;ASP.net applications are a totally different beast. The code could be in the ASPX file, or split between an ASPX and a CS code-behind file, or the code could be in a dll. There's no easy way to update code on the fly like with PHP for third-party themers and modders. Everything has to be planned out to make hooks available to alter what the ASP.net engine will do. BlogEngine.net has done a really decent job to allow for third-party extensions to extend it, but I'm sure more can be done. With this in mind, I think I'm going to spend the most time with the presentation layer to make sure that theming is not only easy, but highly configurable. How am I going to do that? Well I have a few ideas, but nothing concrete yet. All I know is that I want to make sure that the arcade framework draws on what the asp.net framework is capable of allowing applications to do.&lt;/p&gt;  &lt;p&gt;One thought was to create a Game Page that inherits from the Page object so that I can make certain things available to the developer. This particular approach is what BlogEngine.net does for certain things, but I don't know if that is totally necessary for this project. My idea was that this arcade framework was not going to be a standalone application, but more like a plug-in for other ASP.net sites that want to add an arcade. This is the reason I've been calling it a framework rather than an application. It is truly designed for developers and not the end-user. That's not to say that it can't be used by an end-user to create an arcade site. But I digress...&lt;/p&gt;  &lt;p&gt;Another thought I had was to create a bunch of server controls and let people do what they will with them. Of course this is easier said than done. Who knows what people will want and need to do with the data being gathered. But at least that way, the interaction will be consistent and theme writers may not need to update their themes as long as new functionality follows the conventions set in that particular server control. Whatever I come up with doing, I know I want to allow maximum flexibility while at the same time allowing for feature updates without requiring that &amp;quot;will only work if your theme supports this&amp;quot; warning.&lt;/p&gt;</description>
      <link>http://blogs.nine-fifty.com/post/2009/02/05/Site-theming-is-a-headache.aspx</link>
      <author>SirDarquan</author>
      <comments>http://blogs.nine-fifty.com/post/2009/02/05/Site-theming-is-a-headache.aspx#comment</comments>
      <guid>http://blogs.nine-fifty.com/post.aspx?id=16b1f9a4-8a92-49f8-bd98-678ae4f77929</guid>
      <pubDate>Thu, 05 Feb 2009 06:29:04 -1100</pubDate>
      <category>Arcade CMS</category>
      <category>BlogEngine.net</category>
      <category>Projects</category>
      <dc:publisher>SirDarquan</dc:publisher>
      <pingback:server>http://blogs.nine-fifty.com/pingback.axd</pingback:server>
      <pingback:target>http://blogs.nine-fifty.com/post.aspx?id=16b1f9a4-8a92-49f8-bd98-678ae4f77929</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://blogs.nine-fifty.com/trackback.axd?id=16b1f9a4-8a92-49f8-bd98-678ae4f77929</trackback:ping>
      <wfw:comment>http://blogs.nine-fifty.com/post/2009/02/05/Site-theming-is-a-headache.aspx#comment</wfw:comment>
      <wfw:commentRss>http://blogs.nine-fifty.com/syndication.axd?post=16b1f9a4-8a92-49f8-bd98-678ae4f77929</wfw:commentRss>
    </item>
    <item>
      <title>MS SQL server is pretty awesome!!!</title>
      <description>&lt;p&gt;This arcade CMS framework is coming along pretty well. I've actually gotten part of the database provider implemented and saved my first game. (awwwww) I was pretty excited seeing the data in the database considering I did it with only 2 compiles. Anyway, moving my pride aside, I still have quite a ways to go. Sometimes you can't see the forest because of the trees and this was one of those times. When I came up with my outline of what I thought needed to be in for the initial beta, I had no idea how much stuff I missed. I nailed all the basics, but the devil is in the details. For instance, MochiAds games come with a category descriptor and a list of tags associated with them and I planned to make that available in the system. What I hadn't planned for was needing to use categories in 2 distinct ways. Usually when I do database programming, I let the database do most of the work by defining stored procedures that return the same data in different ways. Well combing over the BlogEngine.net code has shown me there was another way. Using a List, I could save and recall them by their name and I could even do the same for each game, looking in memory for games that fit the required criteria. This meant I wasn't going to need a getCategoryList or getGamesByCategory stored procedure. It took me a little while, but I was able to wrap my head around it.&lt;/p&gt;
&lt;p&gt;Well, one of the newer things that I really liked is vertical database design. This is where you don't make a whole bunch of columns in a table to define an object, but instead you use a bunch of rows to do so. A good example is the game definition. Normally I'd make a table with gameID, gameName, gameDescription, width, height and so on. For each game I'd create one row filling each field with the information I have. There's nothing wrong with doing it this way and it's highly effecient, but should you need to add a new property, or remove an old one, you'd have to modify the table to get the proper setup. Then once your code is deployed, it has to check to see if the table is up to the new spec or not and update it if necessary. That check code has to stay in there permanently, and while it's probably just a simple 'if' statement it's unnecessary after the update. Well with vertical design I can define as little as 3 fields, gameID, propertyName, and propertyValue. Of course there are drawbacks to this, such as all values must be stored as a single type, usually string and some of your powerful querying techniques are gone, such as checking for two or more properties.&lt;/p&gt;
&lt;p&gt;Games are quite the exception to data mining, at least for the client. You really only need 1 property to find a game. You either search by name, category, or tags, rarely ever by a combination of those.&amp;nbsp; So that's how I decided to implement it, at least for now. And that lead to a really cool way to save the data. Since each property is a row, for me to store the data I'd normally have to do a database call for each property. Well MS SQL server 2005 and above can process XML data as tables, kind of. So I figured I'd send an XML file to a stored procedure and instead of calling the database up to 10 times for each game, I only made one call. Talk about efficiency. And the best part is I can send the tags and categories in the XML and the same stored procedure will update all relevant tables. The catch and only real downfall to this is that the database provider becomes MS SQL specific, but that's the purpose of making the provider model so that these providers can be switched out as needed for the proper environments. I don't plan on making a MySQL database provider for quite sometime, but that doesn't stop other people from making it. And if it's good, I'll even make it part of the project. I'm totally open to that idea. Well, i know your dying to see the code responsible for this miracle of efficiency, so I'll post the code.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;div class="codeSnippet"&gt;
	&lt;div class="codeHeader"&gt;
		&lt;img src="http://blog.furred.net/pics/page_white_code.png" /&gt;
		&lt;a href="" onclick="document.getElementById('snippet_0').style.display = document.getElementById('snippet_0').style.display == 'none' ? 'block' : 'none'; return false;"
		title="Click for expanding.."&gt;C#-Code: Creating the XML to send to the database&lt;/a&gt;
	&lt;/div&gt;
	&lt;pre id="snippet_0" class="codeContainer"&gt;
&lt;span style="color:#0000FF"&gt;public&lt;/span&gt; &lt;span style="color:#0000FF"&gt;override&lt;/span&gt; &lt;span style="color:#0000FF"&gt;void&lt;/span&gt; InsertGame(Game game){
	&lt;span style="color:#0000FF"&gt;string&lt;/span&gt; connString = ConfigurationManager.ConnectionStrings[_connStringName].ConnectionString;
	&lt;span style="color:#0000FF"&gt;string&lt;/span&gt; providerName = ConfigurationManager.ConnectionStrings[_connStringName].ProviderName;
	DbProviderFactory provider = DbProviderFactories.GetFactory(providerName);
	System.Xml.XmlDocument gameInfo = &lt;span style="color:#0000FF"&gt;new&lt;/span&gt; System.Xml.XmlDocument();gameInfo.AppendChild(gameInfo.CreateElement(&amp;quot;&lt;span style="color:#8B0000"&gt;game&lt;/span&gt;&amp;quot;));
	gameInfo.DocumentElement.Attributes.Append(gameInfo.CreateAttribute(&amp;quot;&lt;span style="color:#8B0000"&gt;id&lt;/span&gt;&amp;quot;)).Value = game.id.ToString();
	addProperty(gameInfo.DocumentElement, &amp;quot;&lt;span style="color:#8B0000"&gt;rating&lt;/span&gt;&amp;quot;, game.rating.ToString());
	addProperty(gameInfo.DocumentElement, &amp;quot;&lt;span style="color:#8B0000"&gt;description&lt;/span&gt;&amp;quot;, game.description);
	addProperty(gameInfo.DocumentElement, &amp;quot;&lt;span style="color:#8B0000"&gt;height&lt;/span&gt;&amp;quot;, game.height.ToString());
	addProperty(gameInfo.DocumentElement, &amp;quot;&lt;span style="color:#8B0000"&gt;width&lt;/span&gt;&amp;quot;, game.width.ToString());
	addProperty(gameInfo.DocumentElement, &amp;quot;&lt;span style="color:#8B0000"&gt;slug&lt;/span&gt;&amp;quot;, game.slug);addProperty(gameInfo.DocumentElement, &amp;quot;&lt;span style="color:#8B0000"&gt;name&lt;/span&gt;&amp;quot;, game.name.ToString());
	addProperty(gameInfo.DocumentElement, &amp;quot;&lt;span style="color:#8B0000"&gt;game_tag&lt;/span&gt;&amp;quot;, game.game_tag);
	addProperty(gameInfo.DocumentElement, &amp;quot;&lt;span style="color:#8B0000"&gt;leaderboard_enabled&lt;/span&gt;&amp;quot;, game.leaderboard_enabled.ToString());
	addProperty(gameInfo.DocumentElement, &amp;quot;&lt;span style="color:#8B0000"&gt;zip_url&lt;/span&gt;&amp;quot;, game.zip_url);
	addProperty(gameInfo.DocumentElement, &amp;quot;&lt;span style="color:#8B0000"&gt;dateAdded&lt;/span&gt;&amp;quot;, game.dateAdded.ToString());
	addProperty(gameInfo.DocumentElement, &amp;quot;&lt;span style="color:#8B0000"&gt;played&lt;/span&gt;&amp;quot;, game.played.ToString());
	addProperty(gameInfo.DocumentElement, &amp;quot;&lt;span style="color:#8B0000"&gt;isVisible&lt;/span&gt;&amp;quot;, game.isVisible.ToString());
	&lt;span style="color:#0000FF"&gt;using&lt;/span&gt; (DbConnection conn = provider.CreateConnection()){
		conn.ConnectionString = connString;conn.Open();
		&lt;span style="color:#0000FF"&gt;using&lt;/span&gt; (DbCommand cmd = conn.CreateCommand()){
			cmd.CommandType = System.Data.CommandType.StoredProcedure;
			cmd.CommandText = &amp;quot;&lt;span style="color:#8B0000"&gt;Ettine_GameSave&lt;/span&gt;&amp;quot;;
			DbParameter paramXML = cmd.CreateParameter();
			paramXML.ParameterName = &amp;quot;&lt;span style="color:#8B0000"&gt;@gameInfoXML&lt;/span&gt;&amp;quot;;
			paramXML.Value = gameInfo.OuterXml;
			cmd.Parameters.Add(paramXML);
			cmd.ExecuteNonQuery();			&lt;span style="color:#008000"&gt;//send to the database&lt;/span&gt;
		}
	}
}

&lt;span style="color:#008000"&gt;//helper function used to quickly create a filled XML node&lt;/span&gt;
&lt;span style="color:#0000FF"&gt;void&lt;/span&gt; addProperty(System.Xml.XmlNode node, &lt;span style="color:#0000FF"&gt;string&lt;/span&gt; name, &lt;span style="color:#0000FF"&gt;string&lt;/span&gt; &lt;span style="color:#0000FF"&gt;value&lt;/span&gt;){
	System.Xml.XmlNode child = node.AppendChild(node.OwnerDocument.CreateElement(&amp;quot;&lt;span style="color:#8B0000"&gt;property&lt;/span&gt;&amp;quot;));
	child.Attributes.Append(node.OwnerDocument.CreateAttribute(&amp;quot;&lt;span style="color:#8B0000"&gt;name&lt;/span&gt;&amp;quot;)).Value = name;
	child.Attributes.Append(node.OwnerDocument.CreateAttribute(&amp;quot;&lt;span style="color:#8B0000"&gt;value&lt;/span&gt;&amp;quot;)).Value = &lt;span style="color:#0000FF"&gt;value&lt;/span&gt;;
}
&lt;/pre&gt;
&lt;/div&gt;
&lt;script type="text/javascript"&gt;
	document.getElementById('snippet_0').style.display='none';
&lt;/script&gt;
&lt;div class="codeSnippet"&gt;
	&lt;div class="codeHeader"&gt;
		&lt;img src="http://blog.furred.net/pics/page_white_code.png" /&gt;
		&lt;a href="" onclick="document.getElementById('snippet_1').style.display = document.getElementById('snippet_1').style.display == 'none' ? 'block' : 'none'; return false;"
		title="Click for expanding.."&gt;SQL-Code: Storing the game data into the database&lt;/a&gt;
	&lt;/div&gt;
	&lt;pre id="snippet_1" class="codeContainer"&gt;
&lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;siteid=us%2Fdev&amp;p=1&amp;nq=NEW&amp;qu=Declare&amp;IntlSearch=&amp;boolean=PHRASE&amp;ig=01&amp;i=09&amp;i=99" style="color:#0000FF"&gt;Declare&lt;/a&gt; @gameInfo XML
&lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;siteid=us%2Fdev&amp;p=1&amp;nq=NEW&amp;qu=Declare&amp;IntlSearch=&amp;boolean=PHRASE&amp;ig=01&amp;i=09&amp;i=99" style="color:#0000FF"&gt;Declare&lt;/a&gt; @gameID &lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;siteid=us%2Fdev&amp;p=1&amp;nq=NEW&amp;qu=uniqueIdentifier&amp;IntlSearch=&amp;boolean=PHRASE&amp;ig=01&amp;i=09&amp;i=99" style="color:#0000FF"&gt;uniqueIdentifier&lt;/a&gt;

&lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;siteid=us%2Fdev&amp;p=1&amp;nq=NEW&amp;qu=set&amp;IntlSearch=&amp;boolean=PHRASE&amp;ig=01&amp;i=09&amp;i=99" style="color:#0000FF"&gt;set&lt;/a&gt; @gameInfo = &lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;siteid=us%2Fdev&amp;p=1&amp;nq=NEW&amp;qu=Cast&amp;IntlSearch=&amp;boolean=PHRASE&amp;ig=01&amp;i=09&amp;i=99" style="color:#0000FF"&gt;Cast&lt;/a&gt;(@gameInfoXML &lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;siteid=us%2Fdev&amp;p=1&amp;nq=NEW&amp;qu=as&amp;IntlSearch=&amp;boolean=PHRASE&amp;ig=01&amp;i=09&amp;i=99" style="color:#0000FF"&gt;as&lt;/a&gt; xml)
&lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;siteid=us%2Fdev&amp;p=1&amp;nq=NEW&amp;qu=select&amp;IntlSearch=&amp;boolean=PHRASE&amp;ig=01&amp;i=09&amp;i=99" style="color:#0000FF"&gt;select&lt;/a&gt; @gameID = gi.&lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;siteid=us%2Fdev&amp;p=1&amp;nq=NEW&amp;qu=value&amp;IntlSearch=&amp;boolean=PHRASE&amp;ig=01&amp;i=09&amp;i=99" style="color:#0000FF"&gt;value&lt;/a&gt;('&lt;span style="color:#8B0000"&gt;@id&lt;/span&gt;','&lt;span style="color:#8B0000"&gt;uniqueidentifier&lt;/span&gt;')
&lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;siteid=us%2Fdev&amp;p=1&amp;nq=NEW&amp;qu=from&amp;IntlSearch=&amp;boolean=PHRASE&amp;ig=01&amp;i=09&amp;i=99" style="color:#0000FF"&gt;from&lt;/a&gt; @gameInfo.nodes('&lt;span style="color:#8B0000"&gt;/game&lt;/span&gt;') &lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;siteid=us%2Fdev&amp;p=1&amp;nq=NEW&amp;qu=as&amp;IntlSearch=&amp;boolean=PHRASE&amp;ig=01&amp;i=09&amp;i=99" style="color:#0000FF"&gt;as&lt;/a&gt; ettine(gi)

&lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;siteid=us%2Fdev&amp;p=1&amp;nq=NEW&amp;qu=Insert&amp;IntlSearch=&amp;boolean=PHRASE&amp;ig=01&amp;i=09&amp;i=99" style="color:#0000FF"&gt;Insert&lt;/a&gt; &lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;siteid=us%2Fdev&amp;p=1&amp;nq=NEW&amp;qu=Into&amp;IntlSearch=&amp;boolean=PHRASE&amp;ig=01&amp;i=09&amp;i=99" style="color:#0000FF"&gt;Into&lt;/a&gt; Ettine_Games (gameID, propertyName, propertyValue)
&lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;siteid=us%2Fdev&amp;p=1&amp;nq=NEW&amp;qu=select&amp;IntlSearch=&amp;boolean=PHRASE&amp;ig=01&amp;i=09&amp;i=99" style="color:#0000FF"&gt;select&lt;/a&gt; @gameID, info.&lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;siteid=us%2Fdev&amp;p=1&amp;nq=NEW&amp;qu=value&amp;IntlSearch=&amp;boolean=PHRASE&amp;ig=01&amp;i=09&amp;i=99" style="color:#0000FF"&gt;value&lt;/a&gt;('&lt;span style="color:#8B0000"&gt;@name&lt;/span&gt;', '&lt;span style="color:#8B0000"&gt;varchar(32)&lt;/span&gt;'), info.&lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;siteid=us%2Fdev&amp;p=1&amp;nq=NEW&amp;qu=value&amp;IntlSearch=&amp;boolean=PHRASE&amp;ig=01&amp;i=09&amp;i=99" style="color:#0000FF"&gt;value&lt;/a&gt;('&lt;span style="color:#8B0000"&gt;@value&lt;/span&gt;','&lt;span style="color:#8B0000"&gt;varchar(1024)&lt;/span&gt;')
&lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;siteid=us%2Fdev&amp;p=1&amp;nq=NEW&amp;qu=from&amp;IntlSearch=&amp;boolean=PHRASE&amp;ig=01&amp;i=09&amp;i=99" style="color:#0000FF"&gt;from&lt;/a&gt; @gameInfo.nodes('&lt;span style="color:#8B0000"&gt;//property&lt;/span&gt;') &lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;siteid=us%2Fdev&amp;p=1&amp;nq=NEW&amp;qu=as&amp;IntlSearch=&amp;boolean=PHRASE&amp;ig=01&amp;i=09&amp;i=99" style="color:#0000FF"&gt;as&lt;/a&gt; game(info)
&lt;/pre&gt;
&lt;/div&gt;
&lt;script type="text/javascript"&gt;
	document.getElementById('snippet_1').style.display='none';
&lt;/script&gt;&lt;/p&gt;</description>
      <link>http://blogs.nine-fifty.com/post/2009/02/03/MS-SQL-server-is-pretty-awesome!!!.aspx</link>
      <author>SirDarquan</author>
      <comments>http://blogs.nine-fifty.com/post/2009/02/03/MS-SQL-server-is-pretty-awesome!!!.aspx#comment</comments>
      <guid>http://blogs.nine-fifty.com/post.aspx?id=84b48088-c2b2-4ce9-9abb-2cac565b3cba</guid>
      <pubDate>Tue, 03 Feb 2009 08:47:00 -1100</pubDate>
      <category>Arcade CMS</category>
      <category>Code</category>
      <category>Projects</category>
      <dc:publisher>SirDarquan</dc:publisher>
      <pingback:server>http://blogs.nine-fifty.com/pingback.axd</pingback:server>
      <pingback:target>http://blogs.nine-fifty.com/post.aspx?id=84b48088-c2b2-4ce9-9abb-2cac565b3cba</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://blogs.nine-fifty.com/trackback.axd?id=84b48088-c2b2-4ce9-9abb-2cac565b3cba</trackback:ping>
      <wfw:comment>http://blogs.nine-fifty.com/post/2009/02/03/MS-SQL-server-is-pretty-awesome!!!.aspx#comment</wfw:comment>
      <wfw:commentRss>http://blogs.nine-fifty.com/syndication.axd?post=84b48088-c2b2-4ce9-9abb-2cac565b3cba</wfw:commentRss>
    </item>
    <item>
      <title>XML vs JSON</title>
      <description>&lt;p&gt;Ever since the Web 2.0 movement started developers have argued what's better JavaScript Object Notation(JSON) or&amp;nbsp; eXtensible Markup Language (XML). Both have their pros and cons, for instance XML is a standard language supported on both the client-side browsers and on the server-side. The biggest advantage to that is that the methods used to create and traverse an XML tree is well documented and standard, so you can do pretty much the exact same thing in any environment that supports XML. It's only real con is it's verbosity. Each XML tag that has child nodes must include a closing tag. This really isn't a big deal because it marks the end of the node, but the closing tag has to have the same spelling as the opening tag and be preceded by a slash(/). In normal application environments this isn't a big deal, but on the web, every extra character consumes precious bandwidth and over the span of an entire XML document that could add up to kilobytes and sometimes megabytes of extra bandwidth.&lt;/p&gt;
&lt;p&gt;Then really out of nowhere comes JSON. Like XML, it can describe data in a consistent manner to be transported "over the wire". It even solved one of XMLs biggest issues, verbosity. Creating an object is minimally only two characters, as opposed to the minimum seven for XML (assuming a 1 character name). The best thing is that the JavaScript environment can evaluate a JSON string into an object in only 1 statement. It's absolutely amazing. But no technology is perfect and JSON is no exception. The biggest drawback with JSON is that it's really a client-side technology, specifically for JavaScript in browsers. If you were to send a JSONized string to the server, most server-side scripting languages wouldn't know what to do with it. That's not to say that this problem couldn't be solved, that was only one of it's issues. JSON, unlike XML when it first came out, was not an official specification and so there was not a lot of support. XML has XQuery and XPath to allow a developer to target specific nodes in a document with a huge amount of efficiency. JSON has no such API for searching and has to be done manually.&lt;/p&gt;
&lt;p&gt;I personally believe everything has it's place and should be evaluated for each task. I don't blindly go with a certain technology just because I'm familiar with it. So when I was going to implement the MochiAds&amp;nbsp; Auto Post API, I had a decision to make: JSON or XML. MochiAds was smart to offer both because the JSON version could be pulled for a client-side UI and for those just trying to get data from the MochiAds servers, the XML was probably the easiest way to go with out doing extra work. So I chose to work with the XML. I love XML and have studied different way to use it to accomplish my tasks. So much so, that my co-workers immediately call me when they have XML related questions.&lt;/p&gt;
&lt;p&gt;With that in mind, I started programming. I got the work flow down and was finally ready to do a "real world" test. I go to the MochiAds site to view a random game and clicked the 'Post game to my site' button. after some debugging, I found out that I wasn't getting the data I needed from MochiAds. The reason, I initially thought, was because of the namespaces put into the XML to make it valid. Up until this point, when ever I had to deal with XML that contained namespaces, I removed them from the markup before processing, but I thought that maybe this was a good time to figure out the right way to deal with this. After some time, I still hadn't gotten any further. Some of the information was available, but not all of it. Then I decided to return to my old ways, but even that didn't work. I was truly stumped. The MochiAds documentation gave the impression that the JSON and XML version were exactly alike except for the namespaces, but I'd come to find out that this was not the case.&lt;/p&gt;
&lt;p&gt;Upon inspecting the JSON version, it became apparent that JSON was the star and XML was the red-headed step child. The documentation was strictly referring to the JSON version, and even though the XML version had most of the same things, it was arranged quite differently. Luckily for me, I knew about a few projects dedicated to bringing JSON parsing to C#. I tested the ones I could and for the most part they are all really solid, but the one that really clicked with me is called litJSON. I mentioned previously that the project has stalled at about version 0.5, but I have to say that it feels like a 1.0 product. I quite literally dropped it in and started using it.&lt;/p&gt;
&lt;p&gt;litJSON has two components that make using it so easy: the JsonData class and the JsonMapper class. The JsonData class is just that, data. The class can be whatever the data requires it to be, just like a JavaScript var. So when you query it, you can find out if it is an int, array, string, double, object, or null. The object is also self referencing, just like JSON. Of course because I'm in C# there needs to be type conversion done before I can assign the value to a variable, and litJson has facilities to ease that transition also. Regular casting works! So I can&amp;nbsp; use &lt;strong&gt;var someNum = (int)jd; &lt;/strong&gt;where jd is an instance of a JSON Data object containing an integer.&amp;nbsp; JsonData truly feels as close to JSON in C# as you can get, in my opinion. The icing on the cake is the JsonMapper class though. JsonMapper can convert objects to and from JSON, and it has facilities to read a JSON&amp;nbsp; string and convert it to a proper JsonData object. Here is some code to help explain:&lt;/p&gt;
&lt;p&gt;&lt;div class="codeSnippet"&gt;
	&lt;div class="codeHeader"&gt;
		&lt;img src="http://blog.furred.net/pics/page_white_code.png" /&gt;
		&lt;a href="" onclick="document.getElementById('snippet_2').style.display = document.getElementById('snippet_2').style.display == 'none' ? 'block' : 'none'; return false;"
		title="Click for expanding.."&gt;C#-Code: &lt;/a&gt;
	&lt;/div&gt;
	&lt;pre id="snippet_2" class="codeContainer"&gt;&lt;span class="lineNumber"&gt;001&lt;/span&gt;&lt;span class="numberedCode"&gt; 	HttpWebRequest req = (HttpWebRequest)WebRequest.Create(&lt;span style="color:#0000FF"&gt;string&lt;/span&gt;.Format(gameInfoURL, publisherID, gameID)); 	req.Method = &amp;quot;&lt;span style="color:#8B0000"&gt;GET&lt;/span&gt;&amp;quot;; 	&lt;span style="color:#0000FF"&gt;using&lt;/span&gt; (Stream resp = req.GetResponse().GetResponseStream()){ 		JsonData jd = &lt;span style="color:#0000FF"&gt;null&lt;/span&gt;; 		jd = JsonMapper.ToObject(&lt;span style="color:#0000FF"&gt;new&lt;/span&gt; StreamReader(resp))[&amp;quot;&lt;span style="color:#8B0000"&gt;games&lt;/span&gt;&amp;quot;][0]; 		newGame = &lt;span style="color:#0000FF"&gt;new&lt;/span&gt; Game(); 		newGame.name = (&lt;span style="color:#0000FF"&gt;string&lt;/span&gt;)jd[&amp;quot;&lt;span style="color:#8B0000"&gt;name&lt;/span&gt;&amp;quot;]; 		newGame.slug = (&lt;span style="color:#0000FF"&gt;string&lt;/span&gt;)jd[&amp;quot;&lt;span style="color:#8B0000"&gt;slug&lt;/span&gt;&amp;quot;]; 		newGame.zip_url = (&lt;span style="color:#0000FF"&gt;string&lt;/span&gt;)jd[&amp;quot;&lt;span style="color:#8B0000"&gt;zip_url&lt;/span&gt;&amp;quot;]; 		newGame.height = (&lt;span style="color:#0000FF"&gt;int&lt;/span&gt;)jd[&amp;quot;&lt;span style="color:#8B0000"&gt;height&lt;/span&gt;&amp;quot;]; 		newGame.width = (&lt;span style="color:#0000FF"&gt;int&lt;/span&gt;)jd[&amp;quot;&lt;span style="color:#8B0000"&gt;width&lt;/span&gt;&amp;quot;]; 		newGame.leaderboard_enabled = (&lt;span style="color:#0000FF"&gt;bool&lt;/span&gt;)jd[&amp;quot;&lt;span style="color:#8B0000"&gt;leaderboard_enabled&lt;/span&gt;&amp;quot;]; 		newGame.description = (&lt;span style="color:#0000FF"&gt;string&lt;/span&gt;)jd[&amp;quot;&lt;span style="color:#8B0000"&gt;description&lt;/span&gt;&amp;quot;]; 		newGame.rating = &lt;span style="color:#0000FF"&gt;string&lt;/span&gt;.IsNullOrEmpty((&lt;span style="color:#0000FF"&gt;string&lt;/span&gt;)jd[&amp;quot;&lt;span style="color:#8B0000"&gt;rating&lt;/span&gt;&amp;quot;]) ? ESRBRating.None : (ESRBRating)Enum.Parse(&lt;span style="color:#0000FF"&gt;typeof&lt;/span&gt;(ESRBRating), (&lt;span style="color:#0000FF"&gt;string&lt;/span&gt;)jd[&amp;quot;&lt;span style="color:#8B0000"&gt;rating&lt;/span&gt;&amp;quot;], &lt;span style="color:#0000FF"&gt;true&lt;/span&gt;); 		newGame.game_tag = (&lt;span style="color:#0000FF"&gt;string&lt;/span&gt;)jd[&amp;quot;&lt;span style="color:#8B0000"&gt;game_tag&lt;/span&gt;&amp;quot;]; 		&lt;span style="color:#0000FF"&gt;foreach&lt;/span&gt; (JsonData tag &lt;span style="color:#0000FF"&gt;in&lt;/span&gt; jd[&amp;quot;&lt;span style="color:#8B0000"&gt;tags&lt;/span&gt;&amp;quot;]) 			newGame.tags.Add((&lt;span style="color:#0000FF"&gt;string&lt;/span&gt;)tag); 		&lt;span style="color:#0000FF"&gt;foreach&lt;/span&gt; (JsonData category &lt;span style="color:#0000FF"&gt;in&lt;/span&gt; jd[&amp;quot;&lt;span style="color:#8B0000"&gt;categories&lt;/span&gt;&amp;quot;]) 			newGame.categories.Add((&lt;span style="color:#0000FF"&gt;string&lt;/span&gt;)category); 	} &lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;script type="text/javascript"&gt;
	document.getElementById('snippet_2').style.display='none';
&lt;/script&gt;&lt;/p&gt;
&lt;p&gt;Basically, I'm retrieving the metadata about the game from the MochiAds servers here. Once I receive the stream, the first thing I do is convert it to an object using the JsonMapper.&amp;nbsp; Objects and values are retrieved through string indexing when available. So on line 006, after the JSON string has been converted I grab the object that I actually need, games. It is an array, but this particular time I chose to receive one game rather than a group of games, so only index 0 is valid and I assign it to jd. I probably could have come up with a more imaginative name than jd, but it's a temporary variable so I didn't waste my time. Anyway, now that we have jd, we can get the info from it almost like we would in JavaScript. The only difference here is that we can't use property access, we have to use an array-like indexer. I personally don't see this as a big deal as you can use array access in JavaScript also, so it's true to form. With the newGame object filled, I can now download the game files from the zip url and finish processing.&lt;/p&gt;
&lt;p&gt;One thing of note is that it wasn't totally drop in a use. The current version on Source Forge has a pretty major bug in it and I didn't even discover it until I plugged it into this environment. Nested arrays aren't handled well, and the MochiAds team uses nested arrays in a few places in the JSON game feed. The problem was in the way it tokenized the input. When the parser saw the ']' symbol, it closes the most immediate array it has open, but it doesn't advance the parser. The result is that the ']' token gets read again and closes the next array available. Once that happens, the parser then interprets the next set of quotes as a new property rather than an entry to an array and things go really wrong from there. Fortunately, I was able to track down the problem and devise a solution that fit within the scope of the existing code, meaning it's not a hack. Unfortunately, I don't know how to get in contact with the authors to put the fix into the main source, so I hope anyone using it will be able to find the fix here. I will be making that code available once the arcade CMS is made public, but if for some reason someone needs it before then, drop me a line on the contact page.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;[Update]&lt;/p&gt;
&lt;p&gt;This project has stalled for various personal reasons. And as promised, once requested I'd make the code available. So &lt;a href="https://docs.google.com/Doc?docid=0AbOWhNzShsqcZGhtN2Y0bXZfMTBrc3NmZzhnbg&amp;amp;hl=en" target="_blank"&gt;here&lt;/a&gt; it is. Not a requirement, but a link to this page would be greatly appreciated from anyone using this code.&lt;/p&gt;</description>
      <link>http://blogs.nine-fifty.com/post/2009/02/02/XML-vs-JSON.aspx</link>
      <author>SirDarquan</author>
      <comments>http://blogs.nine-fifty.com/post/2009/02/02/XML-vs-JSON.aspx#comment</comments>
      <guid>http://blogs.nine-fifty.com/post.aspx?id=20713688-701b-4978-ac3f-4d5d320d70cb</guid>
      <pubDate>Mon, 02 Feb 2009 11:04:00 -1100</pubDate>
      <category>Arcade CMS</category>
      <category>Code</category>
      <category>Projects</category>
      <dc:publisher>SirDarquan</dc:publisher>
      <pingback:server>http://blogs.nine-fifty.com/pingback.axd</pingback:server>
      <pingback:target>http://blogs.nine-fifty.com/post.aspx?id=20713688-701b-4978-ac3f-4d5d320d70cb</pingback:target>
      <slash:comments>1</slash:comments>
      <trackback:ping>http://blogs.nine-fifty.com/trackback.axd?id=20713688-701b-4978-ac3f-4d5d320d70cb</trackback:ping>
      <wfw:comment>http://blogs.nine-fifty.com/post/2009/02/02/XML-vs-JSON.aspx#comment</wfw:comment>
      <wfw:commentRss>http://blogs.nine-fifty.com/syndication.axd?post=20713688-701b-4978-ac3f-4d5d320d70cb</wfw:commentRss>
    </item>
    <item>
      <title>Lots of Updates</title>
      <description>&lt;p&gt;The work with the arcade CMS framework has been going really well and I feel like I'm getting quite a bit accomplished. As promised, I'm going to publish the setting variables that I've decided on. I thought very carefully about the direction that I'd like this project to go in and made decisions as such. So without further adieu, the variables.&lt;/p&gt;  &lt;p&gt;Required    &lt;br /&gt;&lt;strong&gt;publisherID&lt;/strong&gt;: This is assigned by MochiAds when you sign up. It's only needed to verify your identity when asking for a feed or a game.     &lt;br /&gt;&lt;strong&gt;publisherSecretKey&lt;/strong&gt;: Also assigned by MochiAds. This is only used for a weak score verification to curb cheating.     &lt;br /&gt;&lt;strong&gt;arcadeAssetsBasePath&lt;/strong&gt;: This is the parent folder where the games will be stored. It has to be accessible from the web.     &lt;br /&gt;&lt;strong&gt;arcadeBaseURL&lt;/strong&gt;: Since SEO is big these days, I want to make sure the arcade will be compliant.&lt;/p&gt;  &lt;p&gt;Optional:    &lt;br /&gt;&lt;strong&gt;allowAnonymousPlayers&lt;/strong&gt;: Default=true. Determines who is allowed to play the games. Logged in players will have their login names associated with their scores while anonymous players have to create a name if they submit a score.     &lt;br /&gt;&lt;strong&gt;scoresPerUser&lt;/strong&gt;: Default=1. The number of scores per game per user to keep track of. Can be used to let a player see his or her top 10 scores and such.     &lt;br /&gt;&lt;strong&gt;useUserInfo&lt;/strong&gt;: Default=true. Used in conjunction with allowAnonymousPlayers. When true(default), players user name is associated with submitted score. When False, all players create names if submitting scores.     &lt;br /&gt;&lt;strong&gt;saveScores&lt;/strong&gt;:Default=true. When a score is submitted, the arcade gets a copy of what was sent. As of this writting, there is no way to query MochiAds servers for the scores for the games on a specific site. So if you want to do any type of tracking, saveScores needs to be enabled.     &lt;br /&gt;&lt;strong&gt;logoURL&lt;/strong&gt;: MochiAds allows publishers to embed their logos into the games displayed on their site. By supplying a URL to a properly formatted logo, you get to be featured in the game.     &lt;br /&gt;&lt;strong&gt;limitScoresPerSession&lt;/strong&gt;: Default=true. Unlike vBulletin and other forum software that include arcades, MochiAds games aren't forced closed once a score is submitted. But they did add a client-side event that fires when the score is submitted which could be used to imitate that functionality if it's desired. This allows the host to &amp;quot;charge&amp;quot; per play if the site awarded tokens of some sort or something similar. Setting it to false will allow the user to play as much as desired without interruption.     &lt;br /&gt;&lt;strong&gt;useScoreAuthentication&lt;/strong&gt;: Default=false. Used in conjunction with the publisherSecretKey variable to discourage cheating. Because of it's simple nature it can be defeated, but could also cause unexpected complications.     &lt;br /&gt;&lt;strong&gt;useGlobalScores&lt;/strong&gt;: Default=false. MochiAds has a global leader board for each game that supports it. Each publisher can optionally have a local leader board that only has the users of the site. A local leader board is the default behavior of the arcade CMS framework, but could instead use the global scores. This will not affect the saveScores setting and any scores submitted will be recorded if required.&lt;/p&gt;  &lt;p&gt;Wow, that was fun now wasn't it? I also said I was going to show an example of the Configuration Section that would be in the web.config, well here that is a too:&lt;/p&gt; 
&lt;div class="codeSnippet"&gt;
	&lt;div class="codeHeader"&gt;
		&lt;img src="http://blog.furred.net/pics/page_white_code.png" /&gt;
		&lt;a href="" onclick="document.getElementById('snippet_3').style.display = document.getElementById('snippet_3').style.display == 'none' ? 'block' : 'none'; return false;"
		title="Click for expanding.."&gt;XML-Code: &lt;/a&gt;
	&lt;/div&gt;
	&lt;pre id="snippet_3" class="codeContainer"&gt;
  &lt;span style="color:#0000FF"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000"&gt;arcadecms&lt;/span&gt; &lt;span style="color:#FF0000"&gt;publisherid&lt;/span&gt;=&lt;span style="color:#0000FF"&gt;&amp;quot;****************&amp;quot;&lt;/span&gt; &lt;span style="color:#FF0000"&gt;publishersecretkey&lt;/span&gt;=&lt;span style="color:#0000FF"&gt;&amp;quot;********************************&amp;quot;&lt;/span&gt; &lt;span style="color:#FF0000"&gt;arcadeassetsbasepath&lt;/span&gt;=&lt;span style="color:#0000FF"&gt;&amp;quot;~/games&amp;quot;&lt;/span&gt; &lt;span style="color:#FF0000"&gt;arcadebaseurl&lt;/span&gt;=&lt;span style="color:#0000FF"&gt;&amp;quot;/&amp;quot;&lt;/span&gt;&lt;span style="color:#0000FF"&gt;&amp;gt;&lt;/span&gt;
 	&lt;span style="color:#0000FF"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000"&gt;providers&lt;/span&gt;&lt;span style="color:#0000FF"&gt;&amp;gt;&lt;/span&gt;
 		&lt;span style="color:#0000FF"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000"&gt;add&lt;/span&gt; &lt;span style="color:#FF0000"&gt;type&lt;/span&gt;=&lt;span style="color:#0000FF"&gt;&amp;quot;&amp;quot;&lt;/span&gt; &lt;span style="color:#FF0000"&gt;name&lt;/span&gt;=&lt;span style="color:#0000FF"&gt;&amp;quot;DbArcadeProvider&amp;quot;&lt;/span&gt;&lt;span style="color:#0000FF"&gt;&amp;gt;&lt;/span&gt;
 	&lt;span style="color:#0000FF"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000"&gt;providers&lt;/span&gt;&lt;span style="color:#0000FF"&gt;&amp;gt;&lt;/span&gt;
 &lt;span style="color:#0000FF"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000"&gt;arcadecms&lt;/span&gt;&lt;span style="color:#0000FF"&gt;&amp;gt;&lt;/span&gt; &lt;/pre&gt;
&lt;/div&gt;
&lt;script type="text/javascript"&gt;
	document.getElementById('snippet_3').style.display='none';
&lt;/script&gt;
&lt;p&gt;Obviously I couldn't leave my publisherID and publisherSecretKey in for the world to see, but that's the bare minimum you'll need to get the system up and running. Astute observers will notice that I didn't include a type for the DBArcadeProvider. The reasons for that is first, it would give away the name of the project, and I'm not ready to do that yet. And second, I'm still working on it. I tend to jump around when developing for myself so as to keep myself interested. If I get stuck or bored, I do something else so that progress can flow in some form. The result of that progress was a decision to initially only support MochiAds games. The reason for this is actually quite simple, I don't feel like coding an admin interface. Interfaces take time to make sure everything is working and it's an added overhead to getting the code out as a beta.&lt;/p&gt;  &lt;p&gt;Once I came to that decision, I still needed a way to allow a user to add games to their site. Luckily, MochiAds has a &amp;quot;Post To My Site&amp;quot; API. Log in, go to a game you like, press the &amp;quot;Post to My Site&amp;quot; button and voila, the game is added. MochiAds sends all the data needed to get the game up and running. I looked over the API and decided it was simple enough to implement, so I did. It was some rather simple code, thanks to &lt;a href="http://www.icsharpcode.net/OpenSource/SharpZipLib/" target="_blank"&gt;ICSharpCode's SharpZipLib&lt;/a&gt; to extract the game data and &lt;a href="http://litjson.sourceforge.net/" target="_blank"&gt;LitJson&lt;/a&gt; to read the metadata feed. I had an issue with LitJson that I needed to fix before it gave me what I wanted, but the code base is phenomenal! Too bad it's been stagnant for awhile.&lt;/p&gt;  &lt;p&gt;Like I said, I wanted to implement the DB provider first because it seems like it'll be slightly more complicated than storing with XML. I'm not saying it's hard or anything because I deal with MS SQL everyday at my job, so I know how to manipulate queries. It's just I've never done anything with the provider model before totally on my own and I need to do it the harder way so that I truly learn it. With that being said, the base provider class has been created, at least the initial few functions. I'll add more as I see fit. I may post that pretty soon. Heck if that works out then I'll actually be pretty close to my goals for the first public release. Stay tuned!&lt;/p&gt;</description>
      <link>http://blogs.nine-fifty.com/post/2009/02/01/Lots-of-Updates.aspx</link>
      <author>SirDarquan</author>
      <comments>http://blogs.nine-fifty.com/post/2009/02/01/Lots-of-Updates.aspx#comment</comments>
      <guid>http://blogs.nine-fifty.com/post.aspx?id=95bad2b0-b432-4e46-8c81-de7091f9d2cf</guid>
      <pubDate>Sun, 01 Feb 2009 09:24:00 -1100</pubDate>
      <category>Arcade CMS</category>
      <category>Projects</category>
      <dc:publisher>SirDarquan</dc:publisher>
      <pingback:server>http://blogs.nine-fifty.com/pingback.axd</pingback:server>
      <pingback:target>http://blogs.nine-fifty.com/post.aspx?id=95bad2b0-b432-4e46-8c81-de7091f9d2cf</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://blogs.nine-fifty.com/trackback.axd?id=95bad2b0-b432-4e46-8c81-de7091f9d2cf</trackback:ping>
      <wfw:comment>http://blogs.nine-fifty.com/post/2009/02/01/Lots-of-Updates.aspx#comment</wfw:comment>
      <wfw:commentRss>http://blogs.nine-fifty.com/syndication.axd?post=95bad2b0-b432-4e46-8c81-de7091f9d2cf</wfw:commentRss>
    </item>
    <item>
      <title>Minimum Requirements</title>
      <description>&lt;p&gt;
I&amp;#39;ve been working diligently on the new arcade framework, and I believe I&amp;#39;ve come up with what I feel it needs to have for me to make the code available. Keep in mind that this is truly bare minimum and not indicative of the final product, just something to build up on. With that said, here are the specs:
&lt;/p&gt;
 
&lt;ol&gt;
	 
	&lt;li&gt;Required configuration attributes. It&amp;#39;s easy to overlook the small things and required attributes doesn&amp;#39;t seem like something that would get overlooked, but once defined, I have to make sure they all work together and separately and that they make sense. Everything else depends on the values entered here.&lt;/li&gt; 
	&lt;li&gt;Adding games. This one may seem like a no brainer because it would be useless without that capability, but I include it for completeness and because there are multiple ways to add a game to a system and multiple parts to doing so. &lt;/li&gt; 
	&lt;li&gt;Saving Game Metadata. This one goes hand in hand with adding games. It doesn&amp;#39;t do anyone any good having a game in the file system if you don&amp;#39;t know that it&amp;#39;s there, unless you&amp;#39;re querying the file system to find that out which in my opinion is a horrible way to do it. But you still won&amp;#39;t know the size the game needs to be, it&amp;#39;s proper name in the case where their are acronyms or whatever, you won&amp;#39;t have an intro for the game to entice users to play or anything like that.&lt;/li&gt; 
	&lt;li&gt;Unified rendering method. This one is pretty easy as it&amp;#39;ll probably just be a page with a query string parameter to call a specific game.&lt;/li&gt; 
	&lt;li&gt;Minimal searching capabilities. Since I&amp;#39;m going to have game metadata, minimal searching shouldn&amp;#39;t be really difficult to do. It&amp;#39;ll start with just some tags that come with the games and the name of the game. That&amp;#39;ll be there to expand upon in the future.&lt;/li&gt; 
	&lt;li&gt;Categorization. Self explanatory really. Each game will be in one or more categories and should be able to be filtered by them.&lt;/li&gt; 
&lt;/ol&gt;
 
&lt;p&gt;
This is still pretty generic sounding, but I do have specific goal for each of these points. As more information about the system gets released, things will become clearer. In fact, I&amp;#39;m finalizing the required variables and their purpose this week and I will probably put them up on the next post about the arcade.
&lt;/p&gt;
</description>
      <link>http://blogs.nine-fifty.com/post/2009/01/27/Minimum-Requirements.aspx</link>
      <author>SirDarquan</author>
      <comments>http://blogs.nine-fifty.com/post/2009/01/27/Minimum-Requirements.aspx#comment</comments>
      <guid>http://blogs.nine-fifty.com/post.aspx?id=99eb91c6-bd8e-4eed-825f-cb481b5dcbc8</guid>
      <pubDate>Tue, 27 Jan 2009 12:39:00 -1100</pubDate>
      <category>Arcade CMS</category>
      <category>Projects</category>
      <dc:publisher>SirDarquan</dc:publisher>
      <pingback:server>http://blogs.nine-fifty.com/pingback.axd</pingback:server>
      <pingback:target>http://blogs.nine-fifty.com/post.aspx?id=99eb91c6-bd8e-4eed-825f-cb481b5dcbc8</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://blogs.nine-fifty.com/trackback.axd?id=99eb91c6-bd8e-4eed-825f-cb481b5dcbc8</trackback:ping>
      <wfw:comment>http://blogs.nine-fifty.com/post/2009/01/27/Minimum-Requirements.aspx#comment</wfw:comment>
      <wfw:commentRss>http://blogs.nine-fifty.com/syndication.axd?post=99eb91c6-bd8e-4eed-825f-cb481b5dcbc8</wfw:commentRss>
    </item>
    <item>
      <title>Software Architecture</title>
      <description>&lt;p&gt;As I mentioned, I'm creating a .net arcade CMS system. Although I am eventually going to create a site for this system to detail its evolution to release, I do want to have the decision making process available from the start. As a result I've started a new category called Arcade CMS that will be related to this process up until the official site is launched.&lt;/p&gt;
&lt;p&gt;Coming up with the foundation upon which this system will be built is crucial because if done correctly, it can be added to without any issues, but if done incorrectly can be a nightmare to adjust to meet the needs of its users. Knowing ones strengths and weaknesses is essential when doing things like this and although I believe I am a good programmer, architecture is not my strong point. That's not to say I can't do it, just that it takes me longer to come up with what I feel I a solid design. Fortunately for me, I've been using and modifying the BlogEngine.net for a few months now, and I have to say, I am in love with the way it was thought out overall. There are a few design decisions I don't totally agree with, but I understand why they were made. Looking at the BE code exposed me to an almost entirely new world of coding practices. I had heard of some of it but never seen any practical examples. I think it would be fair to say that the BE code base was the inspiration for this project.&lt;/p&gt;
&lt;p&gt;Customization is the one thing I want to make sure permeates throughout this project. I know from experience that it sucks to have something kinda cool that you have to fight with to get it to look and act the way you want it to. With that in mind, the first thing that needs to be made customizable is the settings and storage. The web.config file is a common place to keep setting for ASP.net applications because it's cached for the application and if there are any changes to it, the application is reloaded so that the new setting can take effect. Usually the appSettings section is used to add custom values, but we have quite a few values and we also don't want to step on any toes in case a variable we use is the same one someone else uses. So I decided to create a Configuration Section that will contain the values specific to the arcade. Fortunately since these are all known values, I'm able to make them attributes of the node instead of needing a collection of elements. We could have gone either way, but I believe I know all the values we're going to need. The only reason to use a collection is to make the values indefinitely extendable. I didn't believe this was necessary as I have a very specific idea as to how this should be used.&lt;/p&gt;
&lt;p&gt;Now that I've decided how to make the settings available to the application, it's time to decide how the game info will be saved. BE has a great approach to solve this issue. The BlogProvider was created to abstract the physical storage so that it didn't matter to the application how nor where the data came from. This allows them to create multiple implementations that does it differently. Most notably are the DbBlogProvider and the XMLBlogProvider. As you can imagine, this allows the blog posts and other things to be stored in either a database XML files. Since the providers expose a common API, it looks the same to the blog engine. Very efficient and highly customizable because anyone can make their own implementation of the BlogProvider to store anyway they please. I've decided I'm going to follow this model as it's the most flexible. I'm initially going to create the database provider and an XML one later once I've gotten everything working like I believe it's supposed to. The best thing about this provider is that it's based on a framework that's already in .net. By including a few lines of code, the selected provider will automatically load and become available to the application without any work on my part, besides creating the interface and implementing it that is. It really is a beautiful thing.&lt;/p&gt;
&lt;p&gt;BE needed a common BusinessObject that would serve as the base of both posts and pages. They're essentially the same thing except that pages have neither authors&amp;nbsp; nor comments. There may be a few other slight differences, but those are the major things. Games are homogenous, so I don't need that common object. I've decided that if different types of games were to come about, it would be handled in the higher levels of the code, which have yet to be defined. But all games have common attributes like name, resolution, description categories, control scheme and so on. It really doesn't matter if the game is flash based, Java based or Silverlight based, the output code should take care of that.&lt;/p&gt;
&lt;p&gt;Next time I'll probably make the code available that handles the ConfigurationSection along with a sample XML representation of the section in question.&lt;/p&gt;</description>
      <link>http://blogs.nine-fifty.com/post/2009/01/23/Software-Architecture.aspx</link>
      <author>SirDarquan</author>
      <comments>http://blogs.nine-fifty.com/post/2009/01/23/Software-Architecture.aspx#comment</comments>
      <guid>http://blogs.nine-fifty.com/post.aspx?id=e8e510f1-8194-4192-a2be-e7782d70fe35</guid>
      <pubDate>Fri, 23 Jan 2009 12:33:00 -1100</pubDate>
      <category>Arcade CMS</category>
      <dc:publisher>SirDarquan</dc:publisher>
      <pingback:server>http://blogs.nine-fifty.com/pingback.axd</pingback:server>
      <pingback:target>http://blogs.nine-fifty.com/post.aspx?id=e8e510f1-8194-4192-a2be-e7782d70fe35</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://blogs.nine-fifty.com/trackback.axd?id=e8e510f1-8194-4192-a2be-e7782d70fe35</trackback:ping>
      <wfw:comment>http://blogs.nine-fifty.com/post/2009/01/23/Software-Architecture.aspx#comment</wfw:comment>
      <wfw:commentRss>http://blogs.nine-fifty.com/syndication.axd?post=e8e510f1-8194-4192-a2be-e7782d70fe35</wfw:commentRss>
    </item>
    <item>
      <title>.Net Arcade CMS</title>
      <description>&lt;p&gt;Back when my wife's forum was powered by &lt;a href="http://www.yetanotherforum.net"&gt;YetAnotherForum&lt;/a&gt;, she asked me to add an arcade to the board. At first I thought it would be easy considering how many forums supported some sort of arcade setup. What I didn't realize was that most of the arcades were pretty specific to the forum software they were in. The big players are of course vBulletin, and IP Boards. They're so big, in fact, that other lesser forums have to say that their arcades are compatible to those. &lt;/p&gt;  &lt;p&gt;Being a programmer, I figured there was some generic way the game has to decide to send the scores to the server and it would probably just be a matter of updating a configuration file for the game or maybe a flashvar parameter to point to the correct page. I mean, if I were coding a game I wouldn't want to lock it to a specific system. Well unfortunately, not everyone thinks like I do. After doing some research, I found that the upload page was hard-coded into the game itself and always started with &amp;quot;index.php&amp;quot;. This really sucks because not only did it make creating an alternate CMS difficult, it also locked it to a specific language, PHP, and I'm coding in ASP.net. They don't use the same extensions do processing. So that effectively cut me off from the majority of the games on the internet that supported localized leader boards. I could still use games that didn't require leader boards, but the competition between board members is what my wife wanted to have.&lt;/p&gt;  &lt;p&gt;There were a few sites that gave you whole arcades in an iframe and I ended up using one of those temporarily. There are games that supported leader boards, but it was against the whole community, not just the members of the board. Then, by shear luck, I happened upon &lt;a href="http://www.mochiads.com"&gt;MochiAds&lt;/a&gt;. After all the disappointment with the other games I didn't have high hopes for this initially, but I began to read their documentation to see what they were doing for just in case. Turns out they are a forward thinking company. They actually made a generic leader board submission system that can cater to just about any setup. I was thrilled to say the least and immediately began work on creating the system my wife wanted on her board.&lt;/p&gt;  &lt;p&gt;Mid way through the project I hit a slight snag. The vBulletin way was once a person submits a score, the game page was redirected. This allowed the forum owner to &amp;quot;charge&amp;quot; for play time. It's a good thought because the only way you earned &amp;quot;money&amp;quot; to play was by participating on the board. It was a measure to ensure that the board wasn't only used to play games. At the time MochiAds wasn't setup to make that happen. All the processing happened on the server, and unless you were willing to poll your server frequently, it wasn't going to happen. Once I informed my wife of this, she became very displeased and demanded a change. That change was to go to a php based forum setup like she was used to. I ended up settling on &lt;a href="http://www.simplemachines.org/"&gt;SMF&lt;/a&gt; because it was free and open source. She got what she wanted and was very happy because SMF supported the vBulletin/IP Boards arcade setup. I meant to keep the work I was doing on the arcade CMS, but in the frenzy to get converted to the SMF board, I accidentally erased the entire project.&lt;/p&gt;  &lt;p&gt;Now it's the new year, and with it came a renewed commitment to programming for me. I decided to research how many .net arcade CMS implementations there were on the internet, and see what they were doing for game content. After a few days of searching, I only found one .net arcade CMS implementation called &lt;a href="http://www.gamereden.com/"&gt;GamerEden&lt;/a&gt;. The site is implemented with the GamerEden script, although you can't get it from that site, it's really odd. Anyway, it's literally just a shell to make managing the games easier, and it does that decently I guess. I'm not going to lie, I didn't go into it much after the initial download, I knew this wasn't what I was looking for. Now that I realized that this particular area is well under served, I'm throwing my hat into the arena. I've already begun the initial planning and design phase, and I want to come up with a road map for the system overall. The MochiAds system has evolved quite a bit since I last seen it, adding the ability to listen to certain events like when a score is submitted on the client side.&lt;/p&gt;  &lt;p&gt;My intention is to release an alpha version once it's able to do the very bare minimums to get a game from the MochiAds site onto the hosting site and displayed to a user. with that description, it sounds like it should only take a few days to have something up and running, but in order to ensure that the system is scalable and fully customizable, I feel that getting to an alpha will take quite some time, especially with me doing all the work by myself. The code will eventually be open-source and I am not against anyone willing to help out on this project. I have decided upon a name for the system and once it's closer to release, I'll make a site dedicated to it's progress. I am really excited about the possibility of this being something that people can enjoy. I love knowing someone is using code I've written and that it works well for them. So stay tuned, more updates on this soon...&lt;/p&gt;</description>
      <link>http://blogs.nine-fifty.com/post/2009/01/22/Net-Arcade-CMS.aspx</link>
      <author>sirdarquan</author>
      <comments>http://blogs.nine-fifty.com/post/2009/01/22/Net-Arcade-CMS.aspx#comment</comments>
      <guid>http://blogs.nine-fifty.com/post.aspx?id=b25d1eb2-fb42-4dc3-9985-2ff2ae1b6265</guid>
      <pubDate>Thu, 22 Jan 2009 06:52:18 -1100</pubDate>
      <category>Arcade CMS</category>
      <dc:publisher>sirdarquan</dc:publisher>
      <pingback:server>http://blogs.nine-fifty.com/pingback.axd</pingback:server>
      <pingback:target>http://blogs.nine-fifty.com/post.aspx?id=b25d1eb2-fb42-4dc3-9985-2ff2ae1b6265</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://blogs.nine-fifty.com/trackback.axd?id=b25d1eb2-fb42-4dc3-9985-2ff2ae1b6265</trackback:ping>
      <wfw:comment>http://blogs.nine-fifty.com/post/2009/01/22/Net-Arcade-CMS.aspx#comment</wfw:comment>
      <wfw:commentRss>http://blogs.nine-fifty.com/syndication.axd?post=b25d1eb2-fb42-4dc3-9985-2ff2ae1b6265</wfw:commentRss>
    </item>
  </channel>
</rss>