Have Skills, Will Travel Charles Armour

6Jul/090

Plaything to Product

Trivial is not the word that comes to mind when I consider my development and management skill sets.  I've successfully managed million dollar projects and developed software for huge clusters of machines, so the progression on iLostMyMarbles has come as a surprise.  I narrowed the problem down to my mindset, where I consider games trivial applications. Nothing is further from the truth, and game development is much, much less forgiving!

As much as I hate to admit it, this is a repeating trend for me, as the first time I go down a new avenue of programming I'm much more apt to throw something together than to take the time to plan everything out.  This is more or less how I learn, and has always served me well as those learning projects never get off my hard drive.  iLostMyMarbles is a different beast since I've allowed it to cross the threshold from plaything to product, and has reminded me in no uncertain terms that nothing should be developed without a solid architecture and at least some documentation.

This comes up because I've now been hacking (in the literary sense), rather than programming, more functionality into the game.  My original intent was to get familiar with game graphics on the iPhone, and now I've gotten myself into acceleration, databases, networking, and a whole host of performance tweaks.  I'll end up spending at least as much time condensing and cleaning my code as writing it took, and that time will all be wasted for want of a properly conceived architecture.

6Jul/090

DD-WRT Wins

After receiving my new laptop, I was dismayed to find that it would not keep a connection to my wireless router for more than a few minutes at a time.  After confirming the issue was with the router (a Netgear WNR834B) by using a few other devices, I decided to upgrade its firmware.  Lo and behold, it's at the latest version, which came out quite awhile ago (early 2008) .  Since re-flashing with the latest firmware didn't help, I decided to take the plunge and Flash the router with DD-WRT.

The WNR834B is quite like a few Linksys models, but is hard to find info for.  After finding installation notes here, then finding the proper images here (v2.4sp1) or here (v2.4), the Tftpd32 software refused to upload the image.  It turns out that the Tftpd32 software would not work in Vista, but the other Windows software listed here (download) works great.  While there is a bit of cord jiggling and prayer involved, it was a painless and fairly simple process once I had the proper tools.

I now enjoy a faster, stabler wireless router that supports VPN functions, has nice data graphs and logging, and even allows me to SSH into it!

Filed under: Professional No Comments
29Jun/090

78c? Ads! Model? Market!?

Yesterday I logged into AdMob to check the status of the account in preparation for the release of iLostMyMarbles Free.  To my amazement, we've made $0.78 so far in ads just from testing and showing off!  This seems really piddly until you consider that iLostMyMarbles only exists on three devices, and that our ad supported model has already netted us more than a sale would.

Speaking of ad supported, I'm trying to decide whether to put in interactive roadblock messages in addition to the ads, but fear this would cause a backlash as our model is full games with ads for free and without ads for cheap.  Shareware is also known as nagware, and I don't want to do that because I also think that we stand to make more money from the free users than the paid users in the long run.  I've seen some anecdotal evidence that delay-nags work well, but I'm not sure it's suited to us.

Does anyone know where some market research on shareware conversion rates by demographic can be had?  How about by tactic?  Combining that with iPhone sales demographics will give a good idea of who I should be marketing to and how.  If only I had oodles of cash to hire a market research company...for now I'll be lazy and leave out the roadblocks.

Filed under: Professional No Comments
26Jun/090

Security and VMWare Fusion

Unfortunately not everyone has access to an Apple machine running OSX, so for an iPhone-Development curious friend I decided to create an account and let him play with things over VNC.  Being at least slightly concerned about the security, I tested out what his account had access to before turning it over, and was dismayed to find that he could reach all the partitions in /Volumes/ with no problem, including private files in my Windows User folder.

I solved that quickly and easily by changing permissions on /Volumes/ to 770, verified that it blocked his access, and left it alone.

When I started using VMWare Fusion instead of booting directly to Vista, I found that running a virtual machine from any volume except System failed, and it occurred to me that the /Volumes/ permissions must be the problem.  After switching them back to 777, VMWare works great but I'm left in a quandary as I'd like to be able to virtualize and share this workstation at the same time.

Any suggestions for this?

Filed under: Professional No Comments
24Jun/095

CentOS 5.3 RoR Install

My Linux of choice is CentOS, owing mostly to its stability and very mature support base.  Even with that, it's actually pretty hard to find a good guide for installing a Ruby on Rails stack on CentOS 5.3.  Here are the commands I run on a clean VPS or server (works for i386 and x86-64):

yum -y install mysql mysql-devel mysql-server
yum install -y ruby ruby-ri ruby-rdoc ruby-libs ruby-devel
yum -y install zlib zlib-devel openssl openssl-devel

chkconfig mysqld on
service mysqld start
mysql

yum groupinstall -y 'Development Tools'
yum update -y

wget http://rubyforge.org/frs/download.php/57643/rubygems-1.3.4.tgz
tar zxvf rubygems-1.3.4.tgz
cd rubygems-1.3.4
ruby setup.rb 

gem install mysql -- --with-mysql-config=/usr/bin/mysql_config

I hope this saves someone just a bit of time, let me know if you have any trouble.

13Jun/090

Interface Reworking

We've decided to rework most of the interface for iLostMyMarbles per Matt's usability analysis.  It's more work than I expected to put into the project at this stage, as the code was pretty much finalized, but I'm happy that he has strong ideas and I want to make this first foray as solid as possible.  Hopefully we'll be able to avoid reworks during our next project by having a proper conceptual phase, something Matt was not part of for iLostMyMarbles.

The plan is to remove options and make some of them driven by a natural progression through the game.  The original select-what-you-want options screen is going in favor of a simpler version that chooses your skin and spin based on your difficulty.  It will also enable difficulties and levels only after you play the previous one, but I'm a bit worried that people will think they're missing "features" of the full version when they see the grayed out options, so I'm not sure about that one.

I should have those changes knocked out by the time Matt has graphics, I'm also running behind on my consulting website and resume reflow.  I thought it was the weekend?!

12Jun/090

Device Testing

This evening I purchased an iPod Touch to test our applications on.  If you're looking for a good alternative to the $600+ iPhone from AT&T, the iPod Touch 2G can be had for around $240 locally and $215 online (8GB models).  The majority of the hardware is identical to the iPhone, so there are few performance or look and feel differences.  Highly recommended, especially since it worked out so well for me.  Sadly, the iPod does not have GPS capabilities, so it won't work to test applications that require that.

After going through the ADC iPhone process to enroll the iPod and get all the development certificates set up and enrolled, I started up iLostMyMarbles for the first time and was amazed at how well Apple's development cycle is put together.  I have been developing on the iPhone Simulator, which is fine for your basic application but does not simulate the performance of the actual device.  Graphics performance is the real unknown, which is critical to a game like iLostMyMarbles.

I'm glad to report that I only had one performance issue with the iPod hardware, which was related to a tracing text each frame.  I disabled that in favor of a simple shadow and saw no other bugs or issues at all, so we're on track for our first release.

10Jun/090

Designer!

Yesterday I had an awesome lunch meeting with Matt Garrett, a graphics designer I worked with at Pensaworks.  Apparently we're on the same page with iPhone App development, and we've agreed to make a joint venture out of it where he provides style and graphics and I provide features and code.  Matt is a stellar graphic designer, and I'm really excited to have him as a partner on this stuff!

While there is some overlap in our skills, we're both very solid in our respective corners and I think that will help us produce games and apps that have both great code as well as great designs.  If you hadn't noticed by the design of this website, I'm not much of a designer!  My ideas on interfaces range from "concise" and "intuitive" to "responsive" and "fast work flow" -  not the best memes for iPhone development, since the iPhone's success draws from style as much as technology.

10Jun/090

Project Management on GitHub

I've chosen GitHub as a project management platform for my developments.  It's inexpensive and well featured, includes messaging, downloads, wikis, issues, and your source code.  I'm a little reticent to store my source code on their servers, but I decided to take the plunge with their private repositories.  So far it has been working out great!

I'm also considering FogBugz and Lighthouse for the project management side of things, as they have nifty performance indicators and milestones and releases and much, much better issue management.  Lighthouse is inexpensive but does not integrate all that well with GitHub (basically it just listens to GitHub commit messages) and FogBugz is exceptionally powerful and thus expensive.

I didn't ignore the rest of the options, but found self-hosted solutions like PHPProjekt aren't what I need.  My pitiful 2Mbps upstream connection at home really isn't suitable for hosting much of anything, so I chose to go with an online hosted solution that everyone can get to, whether or not my Internet connection is congested or working.

6Jun/090

Up For Air

I've just spent the better part of a week totally engrossed in iPhone, Objective C, and Cocoa while writing endlessly rewriting my first commercial application.  I'm honestly not sure how much effort I've put into iPhone development so far, but the end result has been ignoring everything else for a week, including this blog.

Stay tuned for a detailed post about my application.  I'll also be posting about what I've worked out for secure project management and source control.

Besides the late bills, cluttered house, and a growing todo pile this week, I missed SQL Saturdays #14 this morning where I had planned to volunteer.  I feel really horrible about this as I really wanted to support these guys and what they're doing.  Great events!

I also want to shout out to Radio Paradise, which is just light years beyond every other radio station out there.  Check them out!