Tom Whipple

Archive for the 'iPhone' Category

WWDC Day 2: Games, Networking and more

Tuesday, June 9th, 2009

Today, I attended a session on networking and a couple of game overview sessions. The networking session was interesting, though not in a way that any non-developers would care about. The games sessions were interesting, since I haven’t done much in the way of game development in the past, though this may change.

The capabilities of the new OS, especially with the new hardware are absolutely fantastic. We’ve had accelerometer control since forever, which is just neat. Now, we add peer to peer gaming via bluetooth or WiFi so that users can have multi-player games across the room or across the world. The new phone adds a GPU, allowing amazing video effects. The addition of OpenAL means that 3D sound can be part of the game experience as well. (There’s also a magnetometer/compass, though it isn’t clear how that helps game development, but I’m sure someone will do something cool with it.) In one of the sessions yesterday it was mentioned that a high percentage of the apps up on the App Store are games. It is clear that Apple recognizes that the iPhone is not just a smart phone, but is poised to become a leading mobile game platform as well.

In many of the sessions, I find myself pulling out my iPhone or MacBook to jot down another idea for an application or product. Apple has provided developers with a lot of tools to express their creativity without having to keep track of minor details. It makes the idea of going back to the day job even more depressing, since I know that my employer has no incentive or motivation to explore these technologies, even though they could be tremendously useful. (No doubt there will be a post on this topic at some point in the future, though probably not soon.)

On an unrelated note, I was able to fix a serious bug in an app I have in development after talking to some of the Apple engineers in a lab. And, we don’t even have to mandate 3.0 for our users as I first feared. Now, I just have to re-submit the fixed version and then off to find a party…

WWDC Day 1: Long lines & Keynote

Monday, June 8th, 2009

Well, I don’t think I’ve seen so many geeks in one place. Not even engineering school! As I write this I am sitting on the second floor of the Moscone convention center watching a couple hundred guys (oh and I can see 4 women — wait there’s another!) with their Macs out, posting on their blogs. (Yep, that includes me.)

The morning got off to a disappointing start when arrived to find the line wrapped all the way around the block. Unfortunately, it didn’t start moving until about 5 minutes before the keynote started, which meant that those of us that didn’t arrive at some obscene hour of the morning didn’t get seated in an overflow room until about 15 minutes in. We missed the launch of a couple of new Macs, but webfeeds indicated it wasn’t anything too revolutionary – just the latest laptop lineup. I talked to a guy who started lining up at 3am(!!), so maybe the overflow room isn’t so bad.

We first learned about the new version of OSX (code name: Snow Lepord). It looks like there are going to be a lot of nifty enhancements to the UI in the Finder, Preview, Safari, and Quicktime. The case for the new Safari was particularly compelling if the claims about page rendering performance hold up. Since it will ship today, I’ll probably switch back from Firefox and see how it goes.

However the OS enhancements that look like they may be the most exciting for developers are the features related to multi-threading, multi-core, 64 bit support, and most intersting, the announcement of what Apple is calling OpenCL. This is a new open standard that Apple is releasing to the community, which is designed to allow non-graphics applications to use the GPU for their computations. This will be huge for scientific computing (hopefully Matlab) as well as programs like Photoshop. It will be interesting to see how Apple applies this technology to the MacBook Air, which has no GPU. Unfortunately, very few details were given for these features. Maybe we will learn more in this afternoon’s sessions.

The last part of the Keynote was about the reason I’m here: The iPhone. There are many new neat features that will open up a huge number of possibilities for all of us here. Some of the highlights are: peer to peer via bluetooth, opening up support for accessory hardware, and support sharing the cell network to your laptop and MMS support, pending carrier support. But, unlike the rest of the carriers in the world, it turns out that AT&T won’t be supporting these technologies right away. This revelation drew laughs and heckles from the crowd. I sincerely hope that someone from AT&T was in the room to hear it, since I’m pretty sure that most of us would drop our AT&T contract in a second if there was another US carrier that supported the iPhone.

Finally, a new model of the iPhone was introduced. The new phone will have a faster processor, better camera and voice recognition. Of course everyone (including me) will want the new one, so I’m wondering who I can sell my current 16GB iPhone 3G to. It was also announced that the price of the current 4GB iPhone 3G would drop to $99.

 AFTERNOON UPDATE:  The only way to describe the new developer tools: kick ass. The static analysis tools are revolutionary; the software can automatically find bugs like memory leaks and even logic errors without even running the code. This is amazing, both in terms of technology and ease of use. I can’t wait to try it.

iPhone code signing problems

Tuesday, November 11th, 2008

UPDATE: If you think it should work and it continues to cause problems, use the windows solution (i.e. reboot everything) and do a clean build. Here is a more current discussion.

As many developers have figured out by now, iPhone code signing is unnecessarily difficult. To make matters worse, it doesn’t sound like Apple is very responsive to their developers. (In my case they have yet to get back to me after two days.) A couple of key points:

  1. In the main XCode screen, highlight Targets->AppName, and click the info button. Under Build, the “Code Signing Identity” must exactly match the certificate name from the certificate manager.An Open Question: Does this value get inherited from the project values?
  2. The Resources->info.plist file must have the correct app id. In my case
    com.tomwhipple.${PRODUCT_NAME:identifier}

A couple of more detailed discussions:

  • 24100.net (very detailed and helpful)
  • Apple (a developer discussion thread)

Configuring CVS for Apple’s XCode projects

Saturday, October 11th, 2008

UPDATE: It seems that most of the nonsense described below is fixed in XCode 3.1.2. However it is still necessary to import the project and then check it out again.

Apple ostensibly has integrated CVS & SVN as version control into XCode. But in XCode 3.1.1 the CVS integration is very poor. The problem seems to be the project/build directory where XCode keeps binaries. This directory appears to be generated from all the other files, so the solution seems to be to leave it out of CVS.

These steps seem to work:

  1. Make sure the repository is set up. (See Apple’s instructions or better yet, the CVS manual) This includes defining the repository under SCM in XCode.
  2. Create the project in a temporary directory as normal in XCode.
  3. Go to SCM>Configure SCM for this project. Choose your repository and click OK.
  4. Go to Build>Clean All Targets.
  5. Close the project window.
  6. Go to the project directory in the Finder and delete the contents of the “build” directory.
  7. In XCode, go to SCM>Repositories tool.
  8. Click “Import” and import the temporary project directory into CVS.
  9. Click “Checkout” and choose the directory where you will do your work. (This is NOT the temporary project directory you created in step 2.)
  10. XCode will ask you if you want to open the project when it is done with the checkout. If the checkout directory structure looks good, you should delete the temporary directory.

NOTE: If some subset of the builds directory shows up under the SCM tool on the left of the project tab, go to SCM>Refresh Entire Project BEFORE the build directory gets commited.
NOTE 2: If the build directory gets commited by mistake, delete it from the repository, the local directory structure, and the corresponding entry in the projectdir/CVS/Entries file.

mail@tomwhipple.com
612-220-1465