Apple iOS iPhone UI Automation Testing: What does Accessibility have to do with it?

Trying to do some UI Automation testing going on one of my Apps today. Have a race condition, so I want to have a script to run it over and over again to have a better chance of catching the problem (more on that in a later post).

So, I just wasted 2 hours trying to test this structure:

And the problem was that I had this set in Interface Builder:

 1 min read

SEO fail: Is This Thing On?

So I’ve blogged every day for a week now and, oddly enough, I can’t find my own site on google, even when I look for exact matches for strings in older blog posts. I’ve started using a plugin for RapidWeaver, SiteMap, that’s supposed to improve SEO, but I don’t know if it’s helping.That being said, it’s still early, and I don’t really know what I’m doing. I’ve read several often contradictory books and articles about SEO, but I’ve never really tried it out myself, so I’ll see how it ends up.The two things I ’m concerned about at the moment are 1) I’m using the RapidBlog plugin to mirror content between my site and Blogger, and so it’s possible that my site is getting ranked down because the content is in two places (although that isn’t the case for some other sites I’ve found that are running RapidBlog), and 2) The RapidBlog plugin doesn’t let me change thetags on the permalink pages, so the articles might not appear as relevant. I might end up trying a combination of RapidBlog (which I love, because it makes blogging much more convenient) and normal RapidWeaver blog pages and see if the “normal” blog pages show up better in Google. Regardless, it’s still early in my learning process, and I’ll document what I figure out here.

 2 min read

Hidden VPN/DNS Gem in Apple's iOS4.1 announcement today

I’ve been on-again, off-again fighting with getting my iPhone 4 to talk to a Cisco VPN concentrator to connect to a company internal network.  The iPhone would connect, but it couldn’t resolve any names, but my iPad worked with no issues.Turns out, the problem was with iOS 4.0.x’s implementation of  Multicast DNS.  According to this IETF draft, ‘…Any DNS query for a name ending with “.local.” MUST be sent to the mDNS multicast address…’, which Apple took literally for iOS 4.  Turns out the company whose VPN I’ve been having trouble with uses .local as their internal DNS domain.Although there’s no documentation I’ve been able to find, it seems that iOS 4.1 changes this behavior, because after updating my iPhone 4 to the iOS 4.1 GM seed today, it started being able to resolve the .local addresses just fine.As an added bonus, under 4.0, the iPhone would ask for a password every time I tried to connect to the VPN.  Under 4.1 (or 3.2), the password is saved like you would expect.

 1 min read

Cloud Computing: The Making of the Next Dinosaurs

Most of the most practical programmers I know, have something in common - they’ve all worked in places, usually small shops or small University departments, where they’ve been responsible for both the software they were writing and the computers that software ran on.

Those people are more able to figure out what the real problems are, they don’t throw their hands up and say “must be a system problem”. They actually build things that work, and they can fix things that break.

 1 min read

Look, Ma, no laptop!

I implied earlier that when I use BlogPress to write a blog post with my iPhone or iPad, that I had to wait until I got to my laptop to publish it. That isn’t true. If I want to tweak it in RapidWeaver, then I have to wait for my laptop, but if I’m okay posting it without going through a proper preview step, I can just hit “Publish Now!” in BlogPress, and let RapidBlog handle the rest.

 1 min read

NSInMemoryStoreType is not a good substitute in unit tests

So I was writing some tests for my KidChart app, which uses core data, and I wasted a ton of time, so I thought I’d post to warn people.  I wanted to avoid having to reset the state for each test, and I wanted the tests to run quickly, so I used NSInMemoryStoreType for my persistent store in my unit tests. This is a technique I’ve used before in other programming languages, and I was new to Core Data, so I was applying what I had done before to something I had insufficiently researched.

 3 min read

Halo: Reach - Are we going here again?

I loved the first Halo game. It quickly became my favorite first person shooter at the time (a title that had previously been held by the first Half-Life).  I’ve played all the way through it by myself at least six times, and in co-op at least three (I do have to admit, though, the Library, solo, on Legendary is the one level I’ve never been able to beat.  Damn grenade chain reactions…Grrr…).It wasn’t just that the game was very polished, although it was.  It wasn’t just that it had one of the most memorable ending sequences ever, although it did. I remember thinking: “What, a driving level? with a countdown? This is going to Suck.”  But it didn’t.  Somehow, it kept me riveted.My favorite thing was that I was obviously playing as a BadAss Hero.I still remember the first time I played the second level.  Master Chief was approaching a temple-structure where there were a lot of Marines.  They were moaning about how much trouble they were in.  They were channeling  Bill Paxton from Aliens.  I could hear “I need some back up now,” “I can’t fight this thing alone,” and “Taking heavy fire!”  And then one of them noticed Master Chief walking up.  Suddenly it was " Wow! There he is!" and “The Cavalry has arrived!“I had no real idea about the character I was playing - he never spoke, I never saw his face, but I knew he - I was a BadAss Hero.  And it was a pleasure living up to that.I remember the first teaser for Halo 2. The Earth was under bombardment.  Master Chief, in high orbit, grabs a single rifle from an arms locker and hurls himself out of an airlock towards a Covenant ship below. The “I will figure out something on the way down” attitude was so obvious, I could read it through an opaque face-shield.  I couldn’t wait.I wish I had.Master Chief wasn’t a BadAss anymore.  He wasn’t even very important.  He was constantly having to be saved by an Elite that the first Halo’s Master Chief would have used as a broom, and worse: he got bitch-slapped by  Audrey 2 from Little Shop of Horrors.And then the ending: the “hero” - I had been reduced to playing Mario from Donkey Kong, complete with the platforming, only this time the monkey had the hammer and the “hero” had to be protected by Sgt. Johnson.The multiplayer, I’m told, got better. But the singe player campaign sure suffered, and by the time I finished the final boss fight, I was too pissed to care.I swore I wouldn’t buy Halo 3.  The trailer made Master Chief look so insignificant, cowering under a Covenant mothership. But I wanted to recapture that magic on my shiny new 360 console, so I caved in.  I finished the campaign, but I regretted it.I did buy Halo:ODST.  As a game, it was lame.  The hero was a complete wimp. It me hours to beat one pair of Hunters.  However, I’m actually glad I bought it, because as a partial Firefly cast reunion piece, it was a lot of fun.Which brings us to Halo: Reach.  Bungie says (again) that they’ve done a lot of work on the single player campaign, and (again) that it will be better.  I wonder if it buying it would make me feel like a BadAss again… or more like a tool…

 3 min read

People Seem to Prefer Videos and other things I learned from trying to advertise my iPhone app.

I have a couple of apps of my own in the AppStore. Most of the sales of the apps I have worked on have been the apps I did for other people, because, well, they are better than I am at marketing.So, I’ve been trying to figure out how to do marketing with one of my apps, KidChart. It’s been out several months and sales have trailed way off. I like it (my wife and I use it every day), but I haven’t figured out how to market it. It has been getting about 3-4 sales a week the last couple of months. I talked to a marketing firm who does iPhone marketing, but they want $1000 per month for a 6 month campaign. And I just don’t know if I can ever make that back. (I don’t know how much of the problem is due to people not seeing it and how much is due to them not liking what they see).So to try to figure out I signed up with a trial account from Performable, and I ran some facebook ads to see how the A/B testing worked. The experiment is going to continue through the weekend, but, in case anyone cares, here are my preliminary results:

 4 min read