Sheeple On The iPad
Like all of the other iPhone developers, I too have been scheming planning how I can take advantage of the iPad with existing and new applications. As for my company, Tomato Factory, we plan on going down the Universal Applications route discussed here. The lack of information in the current iPhone SDK 3.2 beta seed is a bit frustrating. Also, the lack of information around when developers will have access to submit iPad native or universal applications is frustrating. I am sure that Apple doesn't want a horde of overly eager developers to submit iPad native applications without having ever tested their applications on a physical device. As all experienced iPhone developers know, the simulator is not the same as the physical device. I typically do not even bother using the simulator.
I decided to see how my application Sheeple looked on the iPad simulator. Here are screenshots of Sheeple running in both native iPhone 480x320 resolution (left) and scaled 2x resolution (right).


(click image to view full size)
It really doesn't look so bad at first glance, but it won't be long before users will not accept this compatibility mode. As soon as developers are taking advantage of the additional pixels they have access to on the iPad, this compatibility mode will probably be something that we will see less and less of. I am developing several games currently and we are using vector graphics, so creating a universal application should be a very straight forward process.
Indie Appolis
I am excited to announce the launch of my new site Indie Appolis! Here is the information from our about page.
We know how difficult it can be to gain visibility as an indie iPhone developer and we want to help! Advertising is very expensive on the main iPhone review sites and they are so swamped that your little unknown indie game might never be reviewed. That is where Indie Appolis comes into the picture. We want to help give your app the visibility that it deserves and also focus 100% on the core of what we think has made the iPhone an incredible gaming platform, the indie developer!
I was able to interview some incredible developers for the launch of the site and have others in the works. Check out these great interviews.
Trenches: Developer Interview | Game Review
MiniSquadron: Developer Interview | Game Review
Compression: Developer Interview | Game Review
I also wrote a custom ad tracking/management application that is in use on the site currently. I will be packaging it up and then offering it as a product of daGrind called AdMan.
Tomato Factory
The past year has been extremely busy with the birth of my son, moving back to Texas, and getting into iPhone development. In July of 2009 I started an iPhone game development company. Tomato Factory released its first game Sheeple on September, 18 2009. It has been an incredible experience learning about both the development (easy) and the marketing (hard) aspects of the iPhone app marketplace! I have gotten to know some good indie iPhone developers and look forward to what 2010 has in store.
We are currently working on two other games and have some exciting plans for 2010. I will be posting regular development related news on this blog. If you haven't already tried Sheeple, then please do so. There is also a Lite version available.
CruiseControl.NET Continuous Integration Server
Overview
The CruiseControl.NET Continuous Integration Server allows for automated continuous builds. These builds are triggered when new source code is committed to the source code repository and the build process can include steps to perform unit testing as well as other various build related tasks. More information can be found at the CruiseControl.NET website: http://ccnet.thoughtworks.com. This article assumes that you are using CVSDude as your SCM provider, but using an internal provider will require few changes.
Installation Prerequisites
These are the installation prerequisites for CruiseControl.NET Server. http://confluence.public.thoughtworks.org/display/CCNET/Installation+Prerequisites
- Microsoft .NET Framwork 2.0
- ASP.NET enabled web server (typically IIS with ASP.NET configured)
CruiseControl.NET Server Installation
The following steps are required to install the CruiseControl.NET Server and Web Dashboard.
- Download latest release of CruiseControl.NET on the build server. http://sourceforge.net/project/showfiles.php?group_id=71179&package_id=83198
- Execute the CruiseControl.NET setup installer on the build server.
- Click on the “Next >” button.
- Click on the “I Agree” button.
- Leave all of the CuirseControl.NET Server, Web Dashboard, and Examples components selected and click on the “Next >” button.
- Leave the “Install CC.Net server as a Windows service” and “Create virtual directory in IIS for Web Dashboard” options selected and click on the “Next >” button.
- Leave the default destination folder as “C:\Program Files\CruiseControl.NET” and click on the “Next >” button.
- Click on the “Install” button and wait for the “Installation Complete” message.
- Click on the “Next >” button.
- Click on the “Finish” button.
CruiseControl.NET Server Windows Service Configuration
The following steps are required to ensure that the CruiseControl.NET Server Windows service is automatically started when Windows starts.
- Click on the “Start” menu.
- Click on “Run…”.
- Enter “services.msc” and click on the “OK” button.
- Right-click the “CruiseControl.NET Server” service and click on the “Properties” menu option.
- Click on the “Log On” tab.
- Click on the “This account” radio button.
- Enter the username and password for the account that is currently logged into the build server. This is required because subversion will not be able to verify the trust of CVSDude’s certificate. In a future step below we will permanently cache our decision to trust CVSDude’s certificate and that is why the user credentials must match since the cached server authentication is stored in a user director (i.e. “C:\Documents and Settings\Username\Application Data\Subversion\auth\svn.ssl.server”.
- Click on the “General” tab.
- Change the startup type to “Automatic”.
- Click on the “Start” button.
- Click on the “OK” button.
- Close the Services window.
CruiseControl.NET Web Dashboard Configuration
The following steps are required to ensure that the CruiseControl.NET Web Dashboard is property configured to run as an ASP.NET 2.0 application.
- Click on the “Start” menu.
- Click on “Run…”.
- Enter “inetmgr” and click on the “OK” button.
- Expand the “(local computer)” node.
- Expand the “Web Sites” node.
- Expand the “Default Web Site” node.
- Right-click on the “ccnet” virtual directory and click on the “Properties” menu option.
- Click on the “ASP.NET” tab.
- Ensure that the ASP.NET version is set to 2.0.50727.
- If there are other ASP.NET 1.x applications on this web server then you will need to make sure that the ASP.NET 1.x and ASP.NET 2.0 application use separate application pools for the different ASP.NET versions.
- Click on the “OK” button.
- Close the Internet Information Services Manager window.
- Open http://localhost/ccnet in a browser and ensure that the website displays without errors.
Subversion Installation
The following steps are required to install Subversion on the build server.
- Download the Win32 binary package of Subversion onto the builder server.
http://subversion.apache.org/packages.html - Extract the contents of the zip file’s versioned “svn-win32-#.#.#” directory into the “C:\Program Files\Subversion” directory.
- Download ThoughtWorks.CruiseControl.MSBuild.dll to the “C:\Program Files\CruiseControl.NET” directory.
http://ccnetlive.thoughtworks.com/MSBuildXmlLogger-Builds/ThoughtWorks.CruiseControl.MSBuild.dll
CruiseControl.NET Project Configuration
The following steps are required to configure CruiseControl.NET.
- Create a build directory (ex. C:\CruiseControl.NET.Builds).
- Create the project directory in the build directory created in step 1 (ex. C:\CruiseControl.NET.Builds\[PROJECT_NAME_GOES_HERE]).
- Run the following command from the C:\Program Files\Subversion\bin directory.
svn checkout https://[REPOSITORY_URL_GOES_HERE] c:\CruiseControl.NET.Builds\[PROJECT_NAME_GOES_HERE] --username user --password pass - You will be prompted that there was an error validating the server certificate. Press ‘p’ to permanently cache the authentication.
- Setup the IIS virtual directory for project.
- Open the C:\Program Files\CruiseControl.NET\server\ccnet.config file in a text editor.
- Add a project section to the ccnet.config file.
<project>
<workingDirectory>C:\CruiseControl.NET.Builds\[PROJECT_NAME_GOES_HERE]\</workingDirectory>
<webURL>http://localhost/ccnet</webURL>
<sourcecontrol autoGetSource="true">
<trunkUrl>https://[REPOSITORY_URL_GOES_HERE]</trunkUrl>
<executable>C:\Program Files\Subversion\bin\svn.exe</executable>
<workingDirectory>C:\CruiseControl.NET.Builds\[PROJECT_NAME_GOES_HERE]\</workingDirectory>
<username>username</username>
<password>password</password>
</sourcecontrol>
<tasks>
<msbuild>
<executable>C:\Windows\Microsoft.NET\Framework\v3.5\MSBuild.exe</executable>
<workingDirectory>C:\CruiseControl.NET.Builds\[PROJECT_NAME_GOES_HERE]</workingDirectory>
<projectFile>[PROJECT_NAME_GOES_HERE].sln</projectFile>
<buildArgs>/noconsolelogger /p:Configuration=Debug /v:diag</buildArgs>
<targets>Build</targets>
<timeout>15</timeout>
<logger>ThoughtWorks.CruiseControl.MsBuild.XmlLogger,C:\Program Files\CruiseControl.NET\ThoughtWorks.CruiseControl.MsBuild.dll</logger>
</msbuild>
</tasks>
<triggers>
<intervalTrigger name="continuous" seconds="3600" buildCondition="IfModificationExists" />
</triggers>
<publishers>
<xmllogger>
<logDir>C:\CruiseControl.NET.Builds\Logs\[PROJECT_NAME_GOES_HERE]\</logDir>
</xmllogger>
</publishers>
</project> - Open the “C:\Program Files\CruiseControl.NET\webdashboard\dashboard.config” configuration file.
- Add the line “<xslFile>xsl/compile-msbuild.xsl</xslFile>” to the list of <xslFileNames></xslFileNames> section.
- Add a <xslReportBuildPlugin /> item.
<xslReportBuildPlugin description=”MSBuild Output” actionName=”MSBuildOutputBuildPlugin” xslFileName=”xsl\msbuild.xsl” /> - Restart the CruiseControl.NET Service (i.e. Start->Run…->services.msc).
Transcender Exam Preparation & Vista
If you use the Transcender Exam Preparation software on Windows Vista and have problems activating/using your practice exams then follow these steps. 1. Right-click on the "Transcender Exam Preparation" shortcut and select "Properties". 2. Click on the "Compatibility" tab. 3. Click the "Run this program in compatibility mode for:" and select "Windows 98 / Windows Me" in the "Compatibility mode" section. 4. Click "OK".

You should now be able to activate and use your practice exams.
Albany – Magenic Silverlight Game Programming Contest
Magenic held an internal Silverlight game programming contest in August. The rules were that an individual or team would create a game using Silverlight 1.1 and the game should be fun and easy enough for an eight year old to play. I did not have much free time in August so I ended up starting and finishing the development of my entry, Albany, the last week of August. My brother-in-law, Phil, helped with the graphics and created some of the levels. It was a fun project and Albany actually won 2nd place! You can play Albany and the other contest entries here.
Silverlight is a very interesting technology that will be interesting to watch evolve. I have a background in creating games using DirectX, but this is just plain simple. The deployment model is also very slick. Hopefully I will find some time to blog more technical/tutorial type posts on my adventures with Silverlight and now XNA.
Crib #2
I have not posted much about the progress of Kate’s crib lately, but here is an update. It seems that there is never enough time, but I am finally wrapping up this project. The wood has all been dimensioned and cut to final sizes for some time now. I finished the legs about three weeks ago and last weekend I decided to begin work on the mortises in the upper and lower end rails.
I left the original plans for the crib some time ago when I deviated from their guided trough and filler block route. I did not see how that could be a very good design for a sturdy and hopefully long lasting crib (not to mention how bad it would have looked). I decided to use only mortise and tenon joints and I believe the added time needed to mill out the mortise and tenon joints is really paying off. It took about four hours on Saturday morning to mill all of the mortise joints on both sets of the upper and lower end rails (2-3 of those hours were spent building my jigs). I then used a 3/8" and 1/2" chisel to square off the corners. All of these mortises are 3/4" deep and 3/8" x 1-3/8" wide. I used a spiral mortising router bit, which worked really well.
I finished squaring off the mortises for the other end rails when I got home today. I still need to tweak a few of the joints, but these are very sturdy at this point and nothing is glued yet! So the pieces you see in these pictures are all constructed with mortise and tenon joints!
I am going to try to finish the side rails this week and begin sanding all of these pieces next week. I also need to round over the edges of the end caps, but that should not take much time. I will then seal everything using a General Finishes wipe-on gel Urethane that is non-toxic once dry. Finally I will assembly and glue everything up and then install the hardware! Should be done in the next 2 weeks!
Convert WAV to WMA – Windows XP & Vista
If you need to convert a .WAV to .WMA on Windows then you should take a look at the Windows Media Encoder 9 Series. This is a powerful and free tool that can make this process easy.
1. Open Windows Media Encoder.
2. Select the “Convert a file” session type on the New Sessions dialog’s Wizards tab and click OK.
3. Select the source file and output file.
4. Click Next.
5. Select how you want to distribute your content. This selects the Bit Rate to use when encoding is performed.
6. Click Next.
7. Click Finish.
Internet Explorer 7, Outlook 2007, Windows RSS Platform
I do not know everything about this topic, but here are some of my thoughts from my experiences. I really enjoy listening to Hansel Minutes and .NET Rocks! on my Zune as I code or commute. The ability to download enclosures from an RSS feed is great and can make keeping the task of keeping my Zune synced up with the latest episodes a breeze. You can configure IE 7 to download enclosures automatically.
Configure IE 7 Feed Enclosure Downloads
1. Subscribe to a feed that offers enclosures in IE 7, like .NET Rocks!:
http://www.pwop.com/feed.aspx?show=dotnetrocks&filetype=master
2. Open the Favorites Center and click on the Feeds tab.
3. Right-click on the feed that you subscribed to in the first step and click on the "Properties..." menu option.
4. Click on the "Automatically download attached files".
5. Click on the OK button.
The feed's enclosures will be automatically downloaded the next time that the feed is checked. The following directories are where the feeds and enclosures are stored on Windows Vista.
Feeds (.feed-ms)
C:\Users\username\AppData\Local\Microsoft\Feeds
Enclosures
C:\Users\username\AppData\Local\Microsoft\Windows\Temporary Internet Files\Enclosure\{76E975B3-71EA-4820-85D6-BB6D878879E3}
I do not like that the enclosures are stored in the "Temporary Internet Files" directory and that this location is not configurable. The enclosure files are not deleted when you use the "Delete Browsing History" dialog to delete all browsing history. So you could configure your Zune to sync files with any the Enclosure directory or a specific GUID enclosure directory. You can find the enclosure directory name for a specific feed by clicking on the "View Files" button next to the "Automatically download attached files" checkbox described in step 4 (configuring feed enclosure downloads). I know that I could write a FileSystemWatcher or use the COM object provided by the Windows RSS Platform to setup events to monitor the downloading of enclosures. This seems like a lot of work for something that in my opinion should be configurable in the feeds properties dialog. I know that you can use the Outlook 2007 "Sync RSS Feeds to the Common Feed List" option and also enable the downloading of enclosures. The enclosures downloaded in Outlook 2007 are stored in a .PST file. I have also read about issues with very large personal folder files in Outlook 2007 where the size is greater than 2GB in size. The .PST file for a feed like .NET Rocks! would easily be larger than 2GB and could possibly cause performance issues in Outlook 2007. It would have been nice if IE7 and Outlook 2007 would have both used the same store instead of smoke and mirrors to "sync" the feeds.
Conclusion
I like the ability to use IE7 and Outlook 2007 to manage my RSS subscriptions, since I already use both of those applications daily. I am not a huge fan of installing other software that is only going to bloat my system, especially those that need to auto start or run as services and will consume extra memory or CPU resources that I would rather leave for more productive work. The only complaint that I have currently with either is how enclosures are handled, but IE7 does offer a way for me to get at the enclosures. I have more thoughts on this subject and will post more information about those thoughts as I have time.
Alternatives
There are really good RSS readers that allow you to configure the directory that enclosures should be downloaded into like RSS Bandit and Attensa.
Workbench #4 & Crib #1
Here is a picture of the finished workbench and all of the hard maple after being dimensioned to the correct thickness.







