<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-6726614034631587232</id><updated>2011-12-14T19:53:37.385-05:00</updated><category term='cocoa'/><category term='scm'/><category term='interface builder'/><category term='sdl'/><category term='xcode'/><category term='mac'/><title type='text'>Me and Mark Publishing's Blog</title><subtitle type='html'>A blog about Me and Mark Publishing's products, game development, and Mac OS X development.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://meandmarkpublishing.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6726614034631587232/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://meandmarkpublishing.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Mark</name><uri>http://www.blogger.com/profile/07619553773031764027</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>45</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6726614034631587232.post-8268672530864880781</id><published>2008-06-02T18:45:00.001-05:00</published><updated>2010-03-25T15:16:15.541-05:00</updated><title type='text'>Blog Moved</title><content type='html'>I moved the blog. Here's the &lt;a href="http://www.meandmark.com/blog"&gt;new blog location&lt;/a&gt;.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I have also moved all of the blog post from here and all the comments to the new blog location. If you want to comment on a post, go to the new blog location.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6726614034631587232-8268672530864880781?l=meandmarkpublishing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6726614034631587232/posts/default/8268672530864880781'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6726614034631587232/posts/default/8268672530864880781'/><link rel='alternate' type='text/html' href='http://meandmarkpublishing.blogspot.com/2008/06/blog-moved.html' title='Blog Moved'/><author><name>Mark</name><uri>http://www.blogger.com/profile/07619553773031764027</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6726614034631587232.post-2733795586697483485</id><published>2008-04-26T14:05:00.000-05:00</published><updated>2008-04-25T13:04:43.351-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xcode'/><title type='text'>Xcode 3 Book in the Works</title><content type='html'>You may have noticed I have not updated my site or this blog much recently. I've hinted at the reason in the past, but a bunch of people emailed me with questions about it so I figured I should write about it here. I am working on a new edition of Xcode Tools Sensei, specifically written for Xcode 3. Two questions come to mind.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;What's Going to be in the New Edition?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;There will be a lot of new material in the new edition, and I don't want to drone on and on about the new material. Some of the highlights include the following:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Xcode 3's new features, including refactoring tools, code folding, and the Research Assistant.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Interface Builder 3.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;A new chapter on Instruments.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;The version control chapter will use Subversion instead of CVS.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;When Will the New Edition be Released?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I don't know the exact date, but I hope to have it finished this summer (winter for those of you in the Southern Hemisphere). I do know it will not be released before Apple's Worldwide Developer Conference (WWDC), which runs from June 9 to June 13. Apple is expected to release Xcode 3.1 and the iPhone SDK at WWDC. Because WWDC is less than two months away, it would be a waste of time to rush to release an Xcode 3 book, then put out a big update covering Xcode 3.1 and iPhone development. Doing so would also be a disservice to people buying the print version of the book.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6726614034631587232-2733795586697483485?l=meandmarkpublishing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6726614034631587232/posts/default/2733795586697483485'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6726614034631587232/posts/default/2733795586697483485'/><link rel='alternate' type='text/html' href='http://meandmarkpublishing.blogspot.com/2008/04/xcode-3-book-in-works.html' title='Xcode 3 Book in the Works'/><author><name>Mark</name><uri>http://www.blogger.com/profile/07619553773031764027</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6726614034631587232.post-1705858831016433521</id><published>2008-02-07T01:55:00.000-05:00</published><updated>2008-02-07T01:57:10.846-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sdl'/><title type='text'>SDL File Loading When Running from Visual C++'s Debugger</title><content type='html'>I was testing some texture loading code on Visual C++ 2005 and 2008. The code compiled fine, but when I ran it from Visual C++'s debugger, it crashed every time. The code crashed because the program could not find my image file so it could not read the file and load the image. But the code ran file when I ran it from Windows Explorer. Why could my image file be found when I ran my program from Windows Explorer, but not from Visual C++'s debugger?&lt;br /&gt;&lt;br /&gt;The reason was that Visual C++'s debugger uses a different working directory. Windows normally sets the working directory to the same directory as the executable file, which is where I had my image file. But Visual C++'s debugger sets the working directory to the directory containing the project file. Where is the project file? When you create a Visual C++ project, Visual C++ creates a folder that has the same name as the project name. Inside this folder is a second folder that has the same name as the project name. The project file resides in the second folder. The second folder is where the image file needed to be to debug my program. Moving my image file to the second folder fixed the crashing problem inside the Visual C++ debugger.&lt;br /&gt;&lt;br /&gt;If you're using Visual C++ to write a game and you want to run the game inside the debugger, make sure your game's files are in the same directory as the project file.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6726614034631587232-1705858831016433521?l=meandmarkpublishing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6726614034631587232/posts/default/1705858831016433521'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6726614034631587232/posts/default/1705858831016433521'/><link rel='alternate' type='text/html' href='http://meandmarkpublishing.blogspot.com/2008/02/sdl-file-loading-when-running-from.html' title='SDL File Loading When Running from Visual C++&apos;s Debugger'/><author><name>Mark</name><uri>http://www.blogger.com/profile/07619553773031764027</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6726614034631587232.post-5448794851503120816</id><published>2008-02-04T15:30:00.000-05:00</published><updated>2008-02-04T15:31:06.506-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xcode'/><title type='text'>XcodeTemplateFactory</title><content type='html'>Hog Bay Software recently released &lt;a href="http://hogbaysoftware.com/products/xcodetemplatefactory"&gt;XcodeTemplateFactory&lt;/a&gt;, a utility that converts an Xcode project to a project template. I tried XcodeTemplateFactory, and it is an easy way to create Xcode project templates.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Building XcodeTemplateFactory&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;When you download XcodeTemplateFactory, you get an Xcode project file called XcodeTemplateFactory. Open the project in Xcode and build it to create the XcodeTemplateFactory app.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Creating a Project Template with XcodeTemplateFactory&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;To convert a project to a project template, run the XcodeTemplateFactory app that you built. Click the Choose button to open an Open File dialog box. Navigate to the folder containing your project and click the Open button. Enter a description of your project in the Project Description field. Make the description a good one. When you create a new Xcode project and select your template from the template list, your description is going to appear underneath the template list. Click the Generate Template button, and you've created an Xcode project template.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6726614034631587232-5448794851503120816?l=meandmarkpublishing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6726614034631587232/posts/default/5448794851503120816'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6726614034631587232/posts/default/5448794851503120816'/><link rel='alternate' type='text/html' href='http://meandmarkpublishing.blogspot.com/2008/02/xcodetemplatefactory.html' title='XcodeTemplateFactory'/><author><name>Mark</name><uri>http://www.blogger.com/profile/07619553773031764027</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6726614034631587232.post-2954333799806468816</id><published>2008-01-23T00:00:00.000-05:00</published><updated>2008-01-23T00:03:50.726-05:00</updated><title type='text'>Xcode 3 Template Location Clarification</title><content type='html'>In a previous post on &lt;a href="http://meandmarkpublishing.blogspot.com/2008/01/xcode-3-change-new-template-locations.html"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;Xcode&lt;/span&gt; 3's new locations for project and file templates&lt;/a&gt;, I said project and file templates needed to be in the following locations:&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;Developer/Library/&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;Xcode&lt;/span&gt;/Project Templates&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;Developer/Library/&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;Xcode&lt;/span&gt;/File Templates&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Those locations are for Apple's templates. While it is technically possible to place your templates with Apple's (I placed some of my &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;SDL&lt;/span&gt; and &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;OpenGL&lt;/span&gt; project templates with Apple's project templates and had no problems), the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;Xcode&lt;/span&gt; 3 release notes say you're supposed to place your templates in a different location. Project templates belong in the following location:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;Library/Application Support/Developer/Shared/&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;Xcode&lt;/span&gt;/Project Templates&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;File templates belong in the following location:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;Library/Application Support/Developer/Shared/&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;Xcode&lt;/span&gt;/File Templates&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;You're going to have manually create all the folders after Application Support in the path.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If you use the paths I just mentioned, your project and file templates will be available for all users on your Mac and be available for use in both &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;Xcode&lt;/span&gt; 3 and &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;Xcode&lt;/span&gt; 2.5. If you want to restrict your templates to a specific version of &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;Xcode&lt;/span&gt;, replace Shared with the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;Xcode&lt;/span&gt; version number. If you want only a single user to be able to use your templates, start the path with &lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;Username&lt;/span&gt;/Library&lt;/span&gt;.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6726614034631587232-2954333799806468816?l=meandmarkpublishing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6726614034631587232/posts/default/2954333799806468816'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6726614034631587232/posts/default/2954333799806468816'/><link rel='alternate' type='text/html' href='http://meandmarkpublishing.blogspot.com/2008/01/xcode-3-template-location-clarification.html' title='Xcode 3 Template Location Clarification'/><author><name>Mark</name><uri>http://www.blogger.com/profile/07619553773031764027</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6726614034631587232.post-326287159748231637</id><published>2008-01-18T00:45:00.000-05:00</published><updated>2008-01-18T00:46:51.165-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xcode'/><category scheme='http://www.blogger.com/atom/ns#' term='cocoa'/><title type='text'>Xcode 3 Addition: Python and Ruby Cocoa Project Templates</title><content type='html'>Xcode 3 includes project templates for writing Cocoa applications in Python and Ruby. Those of you who were turned off of Cocoa by Objective C's syntax can now give Cocoa development a try.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If you installed the developer examples when you installed Xcode 3, you will find on your hard drive many examples of Cocoa programs written in Python and Ruby. You can find the Python examples at the following location:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;Developer/Examples/Python/PyObjC&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;You can find the Ruby examples at the following location:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;Developer/Examples/Ruby/RubyCocoa&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6726614034631587232-326287159748231637?l=meandmarkpublishing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6726614034631587232/posts/default/326287159748231637'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6726614034631587232/posts/default/326287159748231637'/><link rel='alternate' type='text/html' href='http://meandmarkpublishing.blogspot.com/2008/01/xcode-3-addition-python-and-ruby-cocoa.html' title='Xcode 3 Addition: Python and Ruby Cocoa Project Templates'/><author><name>Mark</name><uri>http://www.blogger.com/profile/07619553773031764027</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6726614034631587232.post-2813476598341338780</id><published>2008-01-16T15:25:00.000-05:00</published><updated>2008-01-16T15:28:38.954-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='interface builder'/><category scheme='http://www.blogger.com/atom/ns#' term='xcode'/><category scheme='http://www.blogger.com/atom/ns#' term='cocoa'/><title type='text'>Interface Builder 3 Change: No Subclass Creation</title><content type='html'>Older versions of Interface Builder let you create subclasses for Cocoa applications and generate source code files for the subclasses you created. As an example, you could drag an OpenGL view to a window, subclass the OpenGL view, and have Interface Builder create .h and .m files for the subclass. But Interface Builder 3 no longer lets you create subclasses. How do you create the subclasses?&lt;div&gt; &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;You create the subclasses the old-fashioned way: with source code. Create your subclasses in Xcode. Interface Builder and Xcode are synchronized so the subclasses you create in Xcode appear in Interface Builder as well.&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;Choose File &gt; New File to create a new file. A window will open containing many file types for you to choose from. For a Cocoa program you would want one of the Cocoa files unless you're writing a Cocoa program in Ruby, in which case you would use one of the Ruby files. Name your file and click the Finish button. You've created a subclass file.&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Instantiating Your Class&lt;/span&gt;&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;After creating your class in Xcode, you may need to add an instance of your class to the nib file so you can make connections in Interface Builder. If Interface Builder's library window is not open, open it by choosing Tools &gt; Library. The library window contains Interface Builder's user interface elements.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_43mxm9V6l5Q/R42eoSkNUFI/AAAAAAAAABU/cEW33LthoG4/s1600-h/LibraryWindow.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_43mxm9V6l5Q/R42eoSkNUFI/AAAAAAAAABU/cEW33LthoG4/s320/LibraryWindow.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5155951563424747602" /&gt;&lt;/a&gt; &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Select an NSObject from the library window. NSObject is a blue cube. Drag NSObject to the nib file window. An NSObject named Object should now appear in the nib file window. Choose Tools &gt;Identity Inspector to open the identity inspector. Select the NSObject in the nib file window.&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_43mxm9V6l5Q/R42exikNUGI/AAAAAAAAABc/G4jBQekyDmM/s1600-h/IdentityInspector.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://3.bp.blogspot.com/_43mxm9V6l5Q/R42exikNUGI/AAAAAAAAABc/G4jBQekyDmM/s320/IdentityInspector.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5155951722338537570" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The top of identity inspector should have a combo box labeled Class. Choose your class from the list of classes in the combo box. The name of the NSObject instance in the nib file window will change from Object to the name of your class. Any outlets and actions in your class should appear in the identity inspector.&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If your classes are not appearing in Interface Builder, choose File &gt; Synchronize With &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;Xcode&lt;/span&gt; in Interface Builder.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6726614034631587232-2813476598341338780?l=meandmarkpublishing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6726614034631587232/posts/default/2813476598341338780'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6726614034631587232/posts/default/2813476598341338780'/><link rel='alternate' type='text/html' href='http://meandmarkpublishing.blogspot.com/2008/01/interface-builder-3-change-no-subclass.html' title='Interface Builder 3 Change: No Subclass Creation'/><author><name>Mark</name><uri>http://www.blogger.com/profile/07619553773031764027</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_43mxm9V6l5Q/R42eoSkNUFI/AAAAAAAAABU/cEW33LthoG4/s72-c/LibraryWindow.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-6726614034631587232.post-1481619094836872632</id><published>2008-01-14T14:20:00.000-05:00</published><updated>2008-01-16T00:55:19.362-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xcode'/><title type='text'>Xcode 3 Change: Run Log</title><content type='html'>Older versions of Xcode had a run log window that let you view the output of command-line programs. Where did it go in Xcode 3?&lt;div&gt; &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In Xcode 3 the run log's name has changed to Console and has become part of the debugger window. The console is initially invisible, which makes locating it difficult. There are two ways to reveal the console. First, you can choose Run &gt; Console to show the console, and you will see the console at the bottom of the debugger window. Second, you can drag the splitter bar at the bottom of the debugger window to reveal the console.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Update (January 16, 2008)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Xcode's debugger window has a splitter bar for the console only if you're using Xcode's All-In-One layout. If you're using the Default or Condensed layouts, the console is a separate window. Clicking the Console button on the debugger window toolbar opens the console for the Default and Condensed layouts. &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6726614034631587232-1481619094836872632?l=meandmarkpublishing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6726614034631587232/posts/default/1481619094836872632'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6726614034631587232/posts/default/1481619094836872632'/><link rel='alternate' type='text/html' href='http://meandmarkpublishing.blogspot.com/2008/01/xcode-3-change-run-log.html' title='Xcode 3 Change: Run Log'/><author><name>Mark</name><uri>http://www.blogger.com/profile/07619553773031764027</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6726614034631587232.post-7940996412216910514</id><published>2008-01-11T13:40:00.000-05:00</published><updated>2008-01-11T13:43:55.852-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xcode'/><title type='text'>Xcode 3 Change: Universal Binaries</title><content type='html'>The Release build configuration for &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;Xcode&lt;/span&gt; 3 is set to create 32-bit universal binaries for Cocoa and Carbon application projects. All you have to do is create a Cocoa or Carbon application project, and you're set to build a universal binary. You'll have to modify the Architectures build setting if you want to build a 64-bit version of your application.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6726614034631587232-7940996412216910514?l=meandmarkpublishing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6726614034631587232/posts/default/7940996412216910514'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6726614034631587232/posts/default/7940996412216910514'/><link rel='alternate' type='text/html' href='http://meandmarkpublishing.blogspot.com/2008/01/xcode-3-change-universal-binaries.html' title='Xcode 3 Change: Universal Binaries'/><author><name>Mark</name><uri>http://www.blogger.com/profile/07619553773031764027</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6726614034631587232.post-1382046136744840241</id><published>2008-01-10T15:20:00.000-05:00</published><updated>2008-01-10T15:23:51.327-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xcode'/><title type='text'>Xcode 3 Change: Release is the Default Build Configuration</title><content type='html'>In &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;Xcode&lt;/span&gt; 3 Apple changed the default build configuration from Debug to Release. This decision does not make much sense. Unless you're writing a simple program, you're going to want to debug your program when you start writing it. Wanting to debug your program means that you want the Debug build configuration, not the Release configuration.&lt;div&gt; &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;When you create a project with &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;Xcode&lt;/span&gt; 3, the first thing you will want to do is change the active build configuration from Release to Debug.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6726614034631587232-1382046136744840241?l=meandmarkpublishing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6726614034631587232/posts/default/1382046136744840241'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6726614034631587232/posts/default/1382046136744840241'/><link rel='alternate' type='text/html' href='http://meandmarkpublishing.blogspot.com/2008/01/xcode-3-change-release-is-default-build.html' title='Xcode 3 Change: Release is the Default Build Configuration'/><author><name>Mark</name><uri>http://www.blogger.com/profile/07619553773031764027</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6726614034631587232.post-7328896053287913345</id><published>2008-01-08T16:10:00.000-05:00</published><updated>2008-01-14T19:46:05.791-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='scm'/><category scheme='http://www.blogger.com/atom/ns#' term='xcode'/><title type='text'>Xcode 3 Feature: Version Control Repository Access</title><content type='html'>&lt;div&gt;Xcode 3 adds support for configuring and viewing version control repositories. With Xcode 3 you can import projects and checkout files inside Xcode. All you have to do from the command line is create the repository. This article will show you how to take advantage of Xcode 3's enhanced version control capabilities. One word of caution. If you hated Xcode's version control support in earlier versions of Xcode, you'll want to stick with the command line. Xcode 3 repository features are a little flaky.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;div&gt;Xcode supports Subversion, Perforce, and CVS. I'm going to focus on Subversion because Mac OS X 10.5 ships with Subversion, and CVS seems to be losing popularity with developers.&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Step 1: Create the Repository&lt;/span&gt;&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If you haven't done so already, open the Terminal application and create a repository by running the svnadmin create command. I have &lt;a href="http://www.meandmark.com/subversion.pdf"&gt;detailed instructions you can read&lt;/a&gt; (PDF) on creating a repository if you need them. One thing to note is that because Mac OS X 10.5 ships with Subversion, you don't have to install it, and in Mac OS X 10.5 Subversion is in /usr/bin instead of /usr/local/bin.&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Step 2: Configure Your Repository&lt;/span&gt;&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Before you can take advantage of Xcode's repository features, you must configure your repository in Xcode. Launch Xcode and choose SCM &gt; Configure SCM Repositories. A window similar to the following figure will open:&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_43mxm9V6l5Q/R4Pl3CkNUDI/AAAAAAAAABE/nagp2rfxjcA/s1600-h/RepositoryConfig.png"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://3.bp.blogspot.com/_43mxm9V6l5Q/R4Pl3CkNUDI/AAAAAAAAABE/nagp2rfxjcA/s320/RepositoryConfig.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5153215132386283570" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Click the + button to add a repository. You will be asked to name the repository and specify what version control system you're using.&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Now you must specify the URL for the repostiory. A local repository's URL starts with file:// and follows with the path to the repository on your hard drive. If the path you specify does not show up in the Path field, you'll have to enter the path to your repository in the Path field.&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I have not tried configuring a remote repository, but Xcode's repository configuration window has Host, Port, User, and Password fields. I assume you would fill these fields to configure a remote repository. If you're going to connect to a remote repository using SSH, click the SSH tab in the window. &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Click the OK button, and you've configured the repository.&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Step 3: Open the Repositories Window&lt;/span&gt;&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Choose SCM &gt; Repositories to open &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;Xcode's&lt;/span&gt; repositories window, which you can see in the figure below. The repositories window lets you examine the directories inside your version control repositories. Select a repository from the list on the left to examine that repository's directories. Some things you can do from the repositories window is import projects, check files out of the repository, create directories, move directories, and delete directories.&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_43mxm9V6l5Q/R4Pl-CkNUEI/AAAAAAAAABM/_iuqBS5v3g4/s1600-h/RepositoriesWindow.png"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://3.bp.blogspot.com/_43mxm9V6l5Q/R4Pl-CkNUEI/AAAAAAAAABM/_iuqBS5v3g4/s320/RepositoriesWindow.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5153215252645367874" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If you've created a fresh repository, I strongly recommend creating a directory inside the repository and storing your projects inside that directory. In my experience using &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;Xcode's&lt;/span&gt; repository features on a fresh repository, I noticed &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;Xcode&lt;/span&gt; let me add only one directory to the root of the repository. Any additional directories I tried to create were created inside the first directory I created. This is why I recommend creating a directory, naming it something like Projects, and import your individual &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;Xcode&lt;/span&gt; projects into the Projects directory.&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If you have a repository that you've been using for some time, you'll see directories inside the repository root for the projects you have in your repository. If you try to add or import a directory to the repository root, the directory will get added to one of the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;subdirectories&lt;/span&gt; inside the root. There are two solutions.&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;First, you can fire up Terminal and create a directory from the command line using the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;svn&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;mkdir&lt;/span&gt; command. I had difficulty getting my created directory to appear in the repositories window, but after a few attempts I did get the directory to appear. Second, you can create a fresh repository for your new projects, add a Projects directory to the new repository, and use the new repository for any new projects you want to place under version control.&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Step 4: Import the Project&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Before importing a project, you must create an &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;Xcode&lt;/span&gt; project and move the project's files to a folder. If you follow Subversion conventions, you'll go to your project folder in the Finder and add three folders named branches, tags, and trunk. Move your project files to the trunk folder.&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;To import a project, select the directory in the repositories window where you want to import the project (If you're following along, this will be the Projects directory you created in &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;Xcode's&lt;/span&gt; repositories window) and click the Import button. An Open File dialog opens. Navigate to your project folder, type a comment, and click the Import button.&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;There should be a directory inside the Projects directory with the name of your project. Inside the project name directory should be the branches, tags, and trunk folders. The trunk folder should contain your project's files. If these folders don't show up, click the Reload button to refresh the repositories window.&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt; &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Step 5: Check Out Files&lt;/span&gt;&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;After importing a project, you want to check out the source code files in your project. Select your trunk folder in the repositories window and click the Checkout button. A dialog box opens asking you where you want to store the checked out files on your hard drive. Navigate to where you want to store the checked out files. Normally you will store the checked out files in a folder inside your &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;Xcode&lt;/span&gt; project's folder. Click the Checkout button. You'll be asked if you want to open the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;Xcode&lt;/span&gt; project. Open it if you want.&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt; &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Step 6: Turn on Version Control&lt;/span&gt;&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Although you've imported a project and checked out files, you still have to tell &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;Xcode&lt;/span&gt; to use version control for the project you imported. Open the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;Xcode&lt;/span&gt; project (the project file you checked out in Step 5, not the original one you created in Xcode). Select the name of the project from the Groups and Files list and click the Info button on the project window toolbar. An information panel will open. Click the General button in the information panel. Choose your repository from the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;SCM&lt;/span&gt; Repository pop-up menu, and you're ready to use version control with &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;Xcode&lt;/span&gt; in Mac OS X 10.5.&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6726614034631587232-7328896053287913345?l=meandmarkpublishing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6726614034631587232/posts/default/7328896053287913345'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6726614034631587232/posts/default/7328896053287913345'/><link rel='alternate' type='text/html' href='http://meandmarkpublishing.blogspot.com/2008/01/xcode-3-feature-version-control.html' title='Xcode 3 Feature: Version Control Repository Access'/><author><name>Mark</name><uri>http://www.blogger.com/profile/07619553773031764027</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_43mxm9V6l5Q/R4Pl3CkNUDI/AAAAAAAAABE/nagp2rfxjcA/s72-c/RepositoryConfig.png' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-6726614034631587232.post-1746834171960836586</id><published>2008-01-04T15:35:00.000-05:00</published><updated>2008-01-08T16:14:19.275-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xcode'/><title type='text'>Xcode 3 Change: New Template Locations</title><content type='html'>If you create your own &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;Xcode&lt;/span&gt; project and file templates, you should know that Apple changed the location for templates in &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;Xcode&lt;/span&gt; 3. For your project templates to show up in &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;Xcode's&lt;/span&gt; list when you create a new project, make sure your templates are in the following location:&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;Developer/Library/&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;Xcode&lt;/span&gt;/Project Templates&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;File templates need to be in the following location:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;Developer/Library/&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;Xcode&lt;/span&gt;/File Templates&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6726614034631587232-1746834171960836586?l=meandmarkpublishing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6726614034631587232/posts/default/1746834171960836586'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6726614034631587232/posts/default/1746834171960836586'/><link rel='alternate' type='text/html' href='http://meandmarkpublishing.blogspot.com/2008/01/xcode-3-change-new-template-locations.html' title='Xcode 3 Change: New Template Locations'/><author><name>Mark</name><uri>http://www.blogger.com/profile/07619553773031764027</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6726614034631587232.post-3485602224251417169</id><published>2008-01-03T16:20:00.000-05:00</published><updated>2008-01-08T16:15:21.967-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xcode'/><title type='text'>Xcode 3 Change: No ZeroLink</title><content type='html'>Apple removed &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;ZeroLink&lt;/span&gt; in &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;Xcode&lt;/span&gt; 3, which makes &lt;a href="http://meandmarkpublishing.blogspot.com/2007/01/zerolink.html"&gt;my &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;ZeroLink&lt;/span&gt; post&lt;/a&gt; obsolete for those of you using &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;Xcode&lt;/span&gt; 3. Apple says it improved the speed of the linker in &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;Xcode&lt;/span&gt; 3 so &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;ZeroLink&lt;/span&gt; is no longer needed. &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;For the vast majority of developers, getting rid of &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;ZeroLink&lt;/span&gt; is a good thing. When you use &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;Xcode&lt;/span&gt; 3 to build your project, you will know if you have any link errors. No more &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Build Succeeded&lt;/span&gt; messages followed by crashes and cryptic error messages when your application runs. Another bonus is that you will be able to run the debug versions of your programs outside of &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;Xcode&lt;/span&gt; and run them on other people's Macs.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6726614034631587232-3485602224251417169?l=meandmarkpublishing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6726614034631587232/posts/default/3485602224251417169'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6726614034631587232/posts/default/3485602224251417169'/><link rel='alternate' type='text/html' href='http://meandmarkpublishing.blogspot.com/2008/01/xcode-3-change-no-zerolink.html' title='Xcode 3 Change: No ZeroLink'/><author><name>Mark</name><uri>http://www.blogger.com/profile/07619553773031764027</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6726614034631587232.post-2821848001899098220</id><published>2007-12-27T13:15:00.000-05:00</published><updated>2008-01-08T16:16:03.990-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sdl'/><title type='text'>Setting Up SDL with Visual C++ 2008 Express</title><content type='html'>Microsoft recently released Visual Studio Express. I wanted to see if my &lt;a href="http://www.meandmark.com/sdlvisualc.pdf"&gt;SDL setup instructions for Visual C++ 2005 Express&lt;/a&gt; (PDF) worked with Visual C++ 2008 Express so I installed Visual C++ 2008 Express and went through my instructions. The good news is Microsoft did not make a lot of changes in Visual C++ 2008 Express so most of the instructions still apply. There are two differences.&lt;div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Visual C++ 2008 Express Contains the Win32 SDK&lt;/span&gt;&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Unlike Visual C++ 2005 Express, Visual C++ 2008 Express ships with the Windows Platform SDK, also known as the Win32 SDK. Visual C++ 2008 Express's Win32 SDK support means you don't have to install the SDK separately, and you don't have to modify any files to get Win32 support.&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;If you're running Visual C++ 2008 Express, you can skip over the Installing the Windows Platform SDK, Updating the Visual C++ Properties File, and Updating the Application Wizard's Settings File sections in my instructions.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;The Path to the Win32 SDK is Slightly Different&lt;/span&gt;&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In the section Telling Visual C++ Where to Find Your SDL Headers and Libraries, I said the path to the Win32 SDK was the following path:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;C:\Program Files\Microsoft Platform SDK&lt;/span&gt;&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If you install Visual C++ 2008 Express, you'll find the Win32 SDK at the following path:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;C:\Program Files\Microsoft SDKs\Windows\v6.0A&lt;/span&gt;&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The v6.0A is the Win32 SDK version. If you're reading this in the future, the version number may change.&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6726614034631587232-2821848001899098220?l=meandmarkpublishing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6726614034631587232/posts/default/2821848001899098220'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6726614034631587232/posts/default/2821848001899098220'/><link rel='alternate' type='text/html' href='http://meandmarkpublishing.blogspot.com/2007/12/setting-up-sdl-with-visual-c-2008.html' title='Setting Up SDL with Visual C++ 2008 Express'/><author><name>Mark</name><uri>http://www.blogger.com/profile/07619553773031764027</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6726614034631587232.post-8626021489500117785</id><published>2007-12-26T19:20:00.000-05:00</published><updated>2007-12-26T19:22:59.970-05:00</updated><title type='text'>I've Installed Xcode 3</title><content type='html'>I installed Mac OS X 10.5 and &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;Xcode&lt;/span&gt; 3 last night so I can now answer &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;Xcode&lt;/span&gt; 3 questions. As I spend more time with the new &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;Xcode&lt;/span&gt; Tools, I will take note of changes Apple made in &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;Xcode&lt;/span&gt; 3 and write about them here.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6726614034631587232-8626021489500117785?l=meandmarkpublishing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6726614034631587232/posts/default/8626021489500117785'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6726614034631587232/posts/default/8626021489500117785'/><link rel='alternate' type='text/html' href='http://meandmarkpublishing.blogspot.com/2007/12/ive-installed-xcode-3.html' title='I&apos;ve Installed Xcode 3'/><author><name>Mark</name><uri>http://www.blogger.com/profile/07619553773031764027</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6726614034631587232.post-3107437271855136480</id><published>2007-12-11T15:45:00.000-05:00</published><updated>2008-01-09T16:04:58.419-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sdl'/><category scheme='http://www.blogger.com/atom/ns#' term='mac'/><title type='text'>Changing SDL's Working Directory on Mac OS X</title><content type='html'>The Mac OS X version of &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;SDL&lt;/span&gt; sets the working directory to the directory containing the application bundle. This default behavior makes loading images and sounds more difficult because the images and sounds most likely reside in the application bundle's Resources folder. What would be nice would be to set the working directory to the Resources folder. How do you do this?&lt;br /&gt;&lt;br /&gt;You change the working directory by modifying the method -&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;setupWorkingDirectory&lt;/span&gt;: in the file &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;SDLMain&lt;/span&gt;.m. You'll want to change the code in &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;SDLMain&lt;/span&gt;.m in &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;SDL's&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;Xcode&lt;/span&gt; templates so your changes take effect for any new &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;SDL&lt;/span&gt; projects you create. Just to be safe, you should comment out the original code or save a copy of it so you can go back to the original if things go wrong. Enter the following code in the -&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;setupWorkingDirectory&lt;/span&gt;: method:&lt;br /&gt;&lt;br /&gt;&lt;code&gt; &lt;/code&gt;&lt;pre&gt;&lt;br /&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;NSString&lt;/span&gt; *&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;resourcePath&lt;/span&gt; = [[&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;NSBundle&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;mainBundle&lt;/span&gt;] &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;resourcePath&lt;/span&gt;];&lt;br /&gt;[[&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;NSFileManager&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;defaultManager&lt;/span&gt;] &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;&lt;br /&gt;changeCurrentDirectoryPath&lt;/span&gt;:&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_16"&gt;resourcePath&lt;/span&gt;];&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Thanks to Keith Bauer, aka &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_17"&gt;OneSadCookie&lt;/span&gt;, for the source code to change the working directory.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6726614034631587232-3107437271855136480?l=meandmarkpublishing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6726614034631587232/posts/default/3107437271855136480'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6726614034631587232/posts/default/3107437271855136480'/><link rel='alternate' type='text/html' href='http://meandmarkpublishing.blogspot.com/2007/12/changing-sdls-working-directory-on-mac.html' title='Changing SDL&apos;s Working Directory on Mac OS X'/><author><name>Mark</name><uri>http://www.blogger.com/profile/07619553773031764027</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6726614034631587232.post-4395253220434987473</id><published>2007-12-06T12:55:00.000-05:00</published><updated>2008-01-09T16:04:14.967-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mac'/><title type='text'>New Article: Playing Audio Files with QTKit</title><content type='html'>I have a &lt;a href="http://www.meandmark.com/qtkitaudiopart1.html"&gt;new article&lt;/a&gt; on my website that explains how to load and play audio files using the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;QTKit&lt;/span&gt; framework. It should be especially helpful to any Cocoa developer who wants to loop an audio file because information on looping was hard to find in Apple's &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;QTKit&lt;/span&gt; documentation.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6726614034631587232-4395253220434987473?l=meandmarkpublishing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6726614034631587232/posts/default/4395253220434987473'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6726614034631587232/posts/default/4395253220434987473'/><link rel='alternate' type='text/html' href='http://meandmarkpublishing.blogspot.com/2007/12/new-article-playing-audio-files-with.html' title='New Article: Playing Audio Files with QTKit'/><author><name>Mark</name><uri>http://www.blogger.com/profile/07619553773031764027</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6726614034631587232.post-8714163440428525177</id><published>2007-10-29T16:00:00.000-05:00</published><updated>2007-10-29T15:01:45.740-05:00</updated><title type='text'>I Don't Have Leopard Yet</title><content type='html'>Because I don't have Leopard yet, I don't have &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;Xcode&lt;/span&gt; 3 so I can't answer your &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;Xcode&lt;/span&gt; 3 questions. You can still ask them if you want, if you don't mind the response "I don't know". Apple has an &lt;a href="http://lists.apple.com/mailman/listinfo/xcode-users"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;Xcode&lt;/span&gt; mailing list&lt;/a&gt; where you can ask &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;Xcode&lt;/span&gt; 3 questions as well as questions on other Apple developer tools like Interface Builder.&lt;br /&gt;&lt;br /&gt;I will post on the blog when I get Leopard, also known as Mac OS X 10.5.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6726614034631587232-8714163440428525177?l=meandmarkpublishing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6726614034631587232/posts/default/8714163440428525177'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6726614034631587232/posts/default/8714163440428525177'/><link rel='alternate' type='text/html' href='http://meandmarkpublishing.blogspot.com/2007/10/i-dont-have-leopard-yet.html' title='I Don&apos;t Have Leopard Yet'/><author><name>Mark</name><uri>http://www.blogger.com/profile/07619553773031764027</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6726614034631587232.post-2444745025014370515</id><published>2007-10-11T16:15:00.000-05:00</published><updated>2008-01-09T16:04:58.419-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mac'/><title type='text'>New Article: Mac Game Programming Roadmap</title><content type='html'>I have a &lt;a href="http://www.meandmark.com/macgamedevroadmappart1.html"&gt;new article&lt;/a&gt; available that provides an overview of the technologies to learn to write Mac games. The article was motivated by a discussion that has been brewing on Apple's game development mailing list for several list. The discussion revolved around Apple's lack of support for games, and one complaint was that Apple did not have a game library like &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;DirectX&lt;/span&gt;. Without a game library getting started with Mac game development can be difficult because he or she may not know where to begin. My article helps them know where to begin. If you're new to Mac game development, check out the article.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6726614034631587232-2444745025014370515?l=meandmarkpublishing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6726614034631587232/posts/default/2444745025014370515'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6726614034631587232/posts/default/2444745025014370515'/><link rel='alternate' type='text/html' href='http://meandmarkpublishing.blogspot.com/2007/10/new-article-mac-game-programming.html' title='New Article: Mac Game Programming Roadmap'/><author><name>Mark</name><uri>http://www.blogger.com/profile/07619553773031764027</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6726614034631587232.post-2953482944744758712</id><published>2007-09-10T14:20:00.000-05:00</published><updated>2008-01-09T15:57:20.891-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xcode'/><title type='text'>Changing the Application Name for an Xcode Project</title><content type='html'>Note: I got about 95% finished with this post when I realized it should be on the &lt;a href="http://www.meandmark.com/xcodetips.html"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;Xcode&lt;/span&gt; Tools Tips page&lt;/a&gt;. Because I was almost finished, I decided to also post it on the blog.&lt;br /&gt;&lt;br /&gt;When you create an &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;Xcode&lt;/span&gt; project, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;Xcode&lt;/span&gt; uses the project name as the title of whatever it builds. If you create an &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;Xcode&lt;/span&gt; application project named &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;MyProject&lt;/span&gt;, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;Xcode&lt;/span&gt; will create an application named &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;MyProject&lt;/span&gt; when you build the project.&lt;br /&gt;&lt;br /&gt;Suppose you're working on your application for a few weeks when you discover the perfect name for your application. You change the name of your project from &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;MyProject&lt;/span&gt; to &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;PerfectName&lt;/span&gt;, clean your project, and rebuild it. You expect to find an application named &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;PerfectName&lt;/span&gt; in your build folder, but the application is still called &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;MyProject&lt;/span&gt;. How do you get &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;Xcode&lt;/span&gt; to build the project so the application name is &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;PerfectName&lt;/span&gt;?&lt;br /&gt;&lt;br /&gt;The answer is to modify the Product Name build setting, which you can find in the Packaging build settings collection. Product Name is the name of what &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;Xcode&lt;/span&gt; builds, such as an application, a framework, or a library. &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;Xcode&lt;/span&gt; initially uses the project name as the product name so when you look at the Product Name build setting, it will most likely be blank. Change the value of the Product Name to what you want, which would be &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;PerfectName&lt;/span&gt; in this ongoing example.&lt;br /&gt;&lt;br /&gt;When you change the Product Name build setting, you'll want to change it for the target, not a single build configuration. Changing the Product Name build setting for the target makes sure the change takes effect for all build configurations.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6726614034631587232-2953482944744758712?l=meandmarkpublishing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6726614034631587232/posts/default/2953482944744758712'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6726614034631587232/posts/default/2953482944744758712'/><link rel='alternate' type='text/html' href='http://meandmarkpublishing.blogspot.com/2007/09/changing-application-name-for-xcode.html' title='Changing the Application Name for an Xcode Project'/><author><name>Mark</name><uri>http://www.blogger.com/profile/07619553773031764027</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6726614034631587232.post-382294868147944444</id><published>2007-08-20T18:55:00.000-05:00</published><updated>2008-01-09T15:56:52.420-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sdl'/><title type='text'>Setting up Visual C++ on Windows Vista</title><content type='html'>I have instructions on setting up Visual C++ 2005 Express for SDL and OpenGL on my &lt;a href="http://www.meandmark.com/opengl2dbook.html"&gt;OpenGL 2D book site&lt;/a&gt;. I based those instructions on what I had to do to set up Visual C++ on my brother's computer running Windows XP. When I used the instructions to set up Visual C++ on my Windows Vista virtual machine, a major problem occurred. Visual C++ crashed every time I tried to add an existing file to a project. The crashes occurred because I hadn't installed the necessary service packs.&lt;br /&gt;&lt;br /&gt;There are two service packs you must install for Visual C++ to work with Vista. The first is Visual C++ 2005 Express Service Pack 1. The second is Visual Studio 2005 Service Pack 1 Update for Windows Vista. Both of these service packs can be downloaded at Microsoft's developer site.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6726614034631587232-382294868147944444?l=meandmarkpublishing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6726614034631587232/posts/default/382294868147944444'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6726614034631587232/posts/default/382294868147944444'/><link rel='alternate' type='text/html' href='http://meandmarkpublishing.blogspot.com/2007/08/setting-up-visual-c-on-windows-vista.html' title='Setting up Visual C++ on Windows Vista'/><author><name>Mark</name><uri>http://www.blogger.com/profile/07619553773031764027</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6726614034631587232.post-3302920575775271546</id><published>2007-08-17T23:35:00.000-05:00</published><updated>2007-08-17T22:35:34.625-05:00</updated><title type='text'>Moving a Subversion Repository to a New Computer</title><content type='html'>I recently got one of the new iMacs, and I had to move my local Subversion repository to the new Mac. Getting the repository to the new Mac was a little tricky. Most of the Subversion tutorials on the Internet deal with creating a repository from scratch so I figured an article on moving a Subversion repository to a new computer would help people.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Moving the Repository&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Moving a repository to a new computer requires three steps.&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Dump the repository's contents to a file.&lt;/li&gt;&lt;li&gt;Create a repository on the new computer.&lt;/li&gt;&lt;li&gt;Load the repository with the contents of the dumped file's contents.&lt;/li&gt;&lt;/ol&gt;Run the command svnadmin dump to dump the contents of a repository to a text file. Navigate to the directory above the repository, and run svndadmin dump.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;svnadmin dump RepositoryName &gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;DumpFile&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Running &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;svnadmin&lt;/span&gt; dump like I just did will write the contents of your repository to a file called &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;DumpFile&lt;/span&gt;. Ideally you would dump the repository contents before you get your new computer and copy the dump file to your new computer. But I was able to copy my repository folder to the new computer and run &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;svnadmin&lt;/span&gt; dump on the new computer.&lt;br /&gt;&lt;br /&gt;After creating the dump file, run the command &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;svnadmin&lt;/span&gt; create to create a new repository. Navigate to where you want the repository to reside and enter the following command:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;svnadmin&lt;/span&gt; create &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;RepositoryName&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Now it's time to fill the newly created repository with the contents of the dump file. Run the command &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;svnadmin&lt;/span&gt; load to fill the repository.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;svnadmin&lt;/span&gt; load &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;RepositoryName&lt;/span&gt; &lt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;DumpFile&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Now you've managed to copy the repository over to the new computer.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Changing the Repository's Path&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;After recreating my old repository, I opened an &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;Xcode&lt;/span&gt; project that was in the repository to see if the version control information was appearing in &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;Xcode&lt;/span&gt;. The only information that was appearing was the files' local revision numbers. There was no information on previous versions of the project's files.&lt;br /&gt;&lt;br /&gt;The cause of the problem was the repository path on the new computer did not match the path on the old computer. I needed to tell the files in the repository the new path to the repository.&lt;br /&gt;&lt;br /&gt;The &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;svn&lt;/span&gt; switch command accomplished this task. To tell the files the new repository path, move to the directory where the project's files reside and run the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;svn&lt;/span&gt; switch command using the --relocate option. When using the --relocate option, you first supply the old repository path, then the new path.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;svn&lt;/span&gt; switch --relocate /Path/On/Old/Computer /Path/On/New/Computer&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;After running &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_16"&gt;svn&lt;/span&gt; switch, all the version control information began to appear in &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_17"&gt;Xcode&lt;/span&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6726614034631587232-3302920575775271546?l=meandmarkpublishing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6726614034631587232/posts/default/3302920575775271546'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6726614034631587232/posts/default/3302920575775271546'/><link rel='alternate' type='text/html' href='http://meandmarkpublishing.blogspot.com/2007/08/moving-subversion-repository-to-new.html' title='Moving a Subversion Repository to a New Computer'/><author><name>Mark</name><uri>http://www.blogger.com/profile/07619553773031764027</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6726614034631587232.post-3876222816409899055</id><published>2007-07-31T21:50:00.000-05:00</published><updated>2008-01-09T15:56:52.420-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sdl'/><title type='text'>SDL 1.2.12</title><content type='html'>The latest version of &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;SDL&lt;/span&gt;, 1.2.12, is available to download from the &lt;a href="http://www.libsdl.org/index.php"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;SDL&lt;/span&gt;&lt;/a&gt; website. Anyone using Mac OS X and supporting joysticks in their game should download the update because it fixes a joystick calibration bug. When starting a game, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;SDL&lt;/span&gt; would record joystick axis events when the joystick was not moved, causing movement in the game with no joystick movement. The only way to stop the unwanted movement was to move the joystick up, down, left, and right. The 1.2.12 update eliminates the unwanted movement, making joysticks work the way you would expect on Mac OS X.&lt;span class="on" style="display: block;" id="formatbar_CreateLink" title="Link" onmouseover="ButtonHoverOn(this);" onmouseout="ButtonHoverOff(this);" onmouseup="" onmousedown="CheckFormatting(event);FormatbarButton('richeditorframe', this, 8);ButtonMouseDown(this);"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6726614034631587232-3876222816409899055?l=meandmarkpublishing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6726614034631587232/posts/default/3876222816409899055'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6726614034631587232/posts/default/3876222816409899055'/><link rel='alternate' type='text/html' href='http://meandmarkpublishing.blogspot.com/2007/07/sdl-1212.html' title='SDL 1.2.12'/><author><name>Mark</name><uri>http://www.blogger.com/profile/07619553773031764027</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6726614034631587232.post-8342426582987834678</id><published>2007-06-20T21:15:00.000-05:00</published><updated>2008-01-09T15:57:39.485-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xcode'/><title type='text'>Reducing Xcode's Window Clutter</title><content type='html'>If you do a lot of work in Xcode, your desktop can quickly become cluttered with windows, which can make finding the window you want difficult. This post shows you what you can do to reduce the number of open windows in Xcode.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Grouped Editor Windows&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;When you open an editor window by double-clicking a source code file in the project window, you will notice a toolbar button in the upper right corner of the window. The button's text will say either Grouped or Ungrouped. Clicking the button changes the text from Grouped to Ungrouped and vice versa.&lt;br /&gt;&lt;br /&gt;Grouped editor windows tell Xcode to open only one editor window. When you double-click a source code file in the project window, Xcode places the contents of the file in the single editor window. Ungrouped editor windows tell Xcode to open a new editor window every time you double-click a source code file in the project window. Grouping editor windows eliminates a lot of window clutter.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Editing in the Project Window&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;If a single editor window is too much clutter for you, you can edit source code in the project window. Click the Editor button in the project window toolbar to open an editor in the project window's detail view. Clicking the Editor button a second time brings back the original detail view.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;All-In-One Layout&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The first two tips eliminate the clutter of editor windows. But Xcode's default layout still creates lot of external windows: run log, debugger window, build results window, search results, and SCM results. How do you keep all these windows from opening? The solution is to switch to Xcode's All-In-One layout, which places all the external windows in the project window.&lt;br /&gt;&lt;br /&gt;To switch to the All-In-One layout, open Xcode's preferences window by choosing Xcode &gt; Preferences. Click the General button in the preferences window toolbar. Choose All-In-One from the Layout pop-up menu. The following screenshot shows what the All- In-One layout looks like.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_43mxm9V6l5Q/RnnQT74vD1I/AAAAAAAAAA8/eoMceM-Tpmc/s1600-h/XcodeProjectWindowAllInOne.jpg"&gt;&lt;img style="cursor: pointer;" src="http://2.bp.blogspot.com/_43mxm9V6l5Q/RnnQT74vD1I/AAAAAAAAAA8/eoMceM-Tpmc/s320/XcodeProjectWindowAllInOne.jpg" alt="" id="BLOGGER_PHOTO_ID_5078319095748693842" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The All-In-One layout looks similar to the default layout, but you will notice a Page area in the upper left corner of the project window with three buttons. The left button is the Project page, which looks like the default layout, but with two tabs for search results and &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;SCM&lt;/span&gt;&lt;/span&gt; results. The center button is the Build page, which gives you access to the run log and build results window. The right button is the Debug page, which gives you access to the debugger window.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6726614034631587232-8342426582987834678?l=meandmarkpublishing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6726614034631587232/posts/default/8342426582987834678'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6726614034631587232/posts/default/8342426582987834678'/><link rel='alternate' type='text/html' href='http://meandmarkpublishing.blogspot.com/2007/06/reducing-xcodes-window-clutter.html' title='Reducing Xcode&apos;s Window Clutter'/><author><name>Mark</name><uri>http://www.blogger.com/profile/07619553773031764027</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_43mxm9V6l5Q/RnnQT74vD1I/AAAAAAAAAA8/eoMceM-Tpmc/s72-c/XcodeProjectWindowAllInOne.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-6726614034631587232.post-8578955544631207531</id><published>2007-05-31T15:57:00.000-05:00</published><updated>2008-01-09T15:57:20.892-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xcode'/><title type='text'>New Xcode Tip: Supplying Launch Arguments for Command-Line Programs</title><content type='html'>I added a tip to the &lt;a href="http://www.meandmark.com/xcodetips.html"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;Xcode&lt;/span&gt; Tools Tips page&lt;/a&gt; on supplying launch arguments for command-line programs from &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;Xcode&lt;/span&gt;. This information is tucked away in the excerpt from the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;Xcode&lt;/span&gt; chapter, but it's difficult to find. I saw a question about supplying launch arguments on a message board, and another person emailed me about it. When multiple people have the same question, it makes sense to add a tip so everyone can benefit.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6726614034631587232-8578955544631207531?l=meandmarkpublishing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6726614034631587232/posts/default/8578955544631207531'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6726614034631587232/posts/default/8578955544631207531'/><link rel='alternate' type='text/html' href='http://meandmarkpublishing.blogspot.com/2007/05/new-xcode-tip-supplying-launch.html' title='New Xcode Tip: Supplying Launch Arguments for Command-Line Programs'/><author><name>Mark</name><uri>http://www.blogger.com/profile/07619553773031764027</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6726614034631587232.post-3368629498462900358</id><published>2007-05-16T16:45:00.000-05:00</published><updated>2008-01-09T15:57:20.892-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xcode'/><title type='text'>New Xcode Tip: Changing the Executable Name</title><content type='html'>I added a new tip to the &lt;a href="http://www.meandmark.com/xcodetips.html"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;Xcode&lt;/span&gt; Tools Tips&lt;/a&gt; page on changing the executable name in your &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;Xcode&lt;/span&gt; projects. If you don't want to read the whole tip, I can summarize it in one sentence. Change your target's Product name build setting, which is part of the Packaging collection.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6726614034631587232-3368629498462900358?l=meandmarkpublishing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6726614034631587232/posts/default/3368629498462900358'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6726614034631587232/posts/default/3368629498462900358'/><link rel='alternate' type='text/html' href='http://meandmarkpublishing.blogspot.com/2007/05/new-xcode-tip-changing-executable-name.html' title='New Xcode Tip: Changing the Executable Name'/><author><name>Mark</name><uri>http://www.blogger.com/profile/07619553773031764027</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6726614034631587232.post-1864098196892230609</id><published>2007-05-10T01:39:00.000-05:00</published><updated>2008-01-09T16:04:58.419-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mac'/><title type='text'>New Bundles Article</title><content type='html'>I have a new &lt;a href="http://www.meandmark.com/bundlespart1.html"&gt;article on bundles&lt;/a&gt; available. It introduces bundles, focusing on application bundles. After reading the article, you will know how to create a bundle, add files to the bundle, and retrieve files from the bundle.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6726614034631587232-1864098196892230609?l=meandmarkpublishing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6726614034631587232/posts/default/1864098196892230609'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6726614034631587232/posts/default/1864098196892230609'/><link rel='alternate' type='text/html' href='http://meandmarkpublishing.blogspot.com/2007/05/new-bundles-article.html' title='New Bundles Article'/><author><name>Mark</name><uri>http://www.blogger.com/profile/07619553773031764027</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6726614034631587232.post-2868249132796544188</id><published>2007-04-23T15:23:00.000-05:00</published><updated>2007-04-23T14:23:29.740-05:00</updated><title type='text'>Leopard Delay a Blessing for Me</title><content type='html'>Apple did me a favor as a writer by delaying the release of Mac OS X 10.5 from June to October. With a June release I would have had a difficult decision to make: delay updating &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;Xcode&lt;/span&gt; Tools &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;Sensei&lt;/span&gt; until I finished the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;OpenGL&lt;/span&gt; book, or delay development on the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;OpenGL&lt;/span&gt; book to update the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;Xcode&lt;/span&gt; book. Apple gave me another four months to finish the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;OpenGL&lt;/span&gt; book.&lt;br /&gt;&lt;br /&gt;All updates for &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;Xcode&lt;/span&gt; 3 and Leopard will come in a new edition of &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;Xcode&lt;/span&gt; Tools &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;Sensei&lt;/span&gt;. &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;Xcode&lt;/span&gt; and Interface Builder are going to have major updates. Trying to juggle &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;Xcode&lt;/span&gt; 1.x, 2.x, and 3 in one text would be difficult for me to write and you to read. I also will have to take a bunch of new screenshots so it makes sense to have two versions of the book: the current version that supports &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;Xcode&lt;/span&gt; 1.x and 2.x, and a new version specifically for &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;Xcode&lt;/span&gt; 3. The electronic edition of the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;Xcode&lt;/span&gt; 3 version would be available at a discount for everyone who has the current version of the book.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6726614034631587232-2868249132796544188?l=meandmarkpublishing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6726614034631587232/posts/default/2868249132796544188'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6726614034631587232/posts/default/2868249132796544188'/><link rel='alternate' type='text/html' href='http://meandmarkpublishing.blogspot.com/2007/04/leopard-delay-blessing-for-me.html' title='Leopard Delay a Blessing for Me'/><author><name>Mark</name><uri>http://www.blogger.com/profile/07619553773031764027</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6726614034631587232.post-7270534815427850080</id><published>2007-04-04T15:25:00.000-05:00</published><updated>2007-04-04T14:26:23.931-05:00</updated><title type='text'>Skim PDF Viewer</title><content type='html'>&lt;a href="http://skim-app.sourceforge.net/index.html"&gt;Skim&lt;/a&gt; is a free, open-source PDF viewer for Mac OS X. Mac OS X comes with Preview, which views PDF files, and Adobe Acrobat Reader is freely available so what makes Skim special? Skim has features that make reading technical articles and academic papers easier.&lt;br /&gt;&lt;br /&gt;The first of these features is the ability to add notes to a PDF document. It's the electronic equivalent of adding sticky notes to a paper document. When you're reading difficult material, being able to make notes to yourself helps in understanding the material.&lt;br /&gt;&lt;br /&gt;A second useful feature is the ability to highlight areas of text by putting a circle or box around it. A third feature is snapshots, which let you keep important pieces of a document in easy reach.&lt;br /&gt;&lt;br /&gt;Skim is at version 0.2, which means it's far from a finished product. But if you read a lot of PDF technical articles, you should give Skim a test drive.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6726614034631587232-7270534815427850080?l=meandmarkpublishing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6726614034631587232/posts/default/7270534815427850080'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6726614034631587232/posts/default/7270534815427850080'/><link rel='alternate' type='text/html' href='http://meandmarkpublishing.blogspot.com/2007/04/skim-pdf-viewer.html' title='Skim PDF Viewer'/><author><name>Mark</name><uri>http://www.blogger.com/profile/07619553773031764027</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6726614034631587232.post-4002883632614525978</id><published>2007-04-02T02:15:00.000-05:00</published><updated>2008-01-09T16:05:16.049-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mac'/><title type='text'>Using Saturn on Intel Macs</title><content type='html'>I read a post on Apple's performance and optimization mailing list that tells you what to do to use Saturn on Intel Macs. This information may be useful to some of you so I am writing about it here.&lt;br /&gt;&lt;br /&gt;To use Saturn to profile your code, you must compile your code with either the &lt;span style="font-weight: bold;"&gt;-pg&lt;/span&gt; compiler flag (Generate Profiling Code build setting in &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;Xcode&lt;/span&gt;) or the &lt;span style="font-weight: bold;"&gt;-&lt;/span&gt;&lt;span style="font-weight: bold;" class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;finstrument&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;-functions&lt;/span&gt; compiler flag. The &lt;span style="font-weight: bold;"&gt;-pg&lt;/span&gt; compiler flag is the flag most people use, but Apple hasn't added the support for &lt;span style="font-weight: bold;"&gt;-pg&lt;/span&gt; on Intel Macs yet so using the &lt;span style="font-weight: bold;"&gt;-pg&lt;/span&gt; flag won't allow you to run your code with Saturn on an Intel Mac.&lt;br /&gt;&lt;br /&gt;The solution is to use the &lt;span style="font-weight: bold;"&gt;-&lt;/span&gt;&lt;span style="font-weight: bold;" class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;finstrument&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;-functions&lt;/span&gt; flag to compile your code. I didn't see an &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;Xcode&lt;/span&gt; build setting for this flag so you'll have to add the flag to the Other C Flags or Other C++ Flags build setting in &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;Xcode&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;I don't have an Intel Mac so I can't test this for myself, but the information came from an Apple engineer so I will assume the information is accurate.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6726614034631587232-4002883632614525978?l=meandmarkpublishing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6726614034631587232/posts/default/4002883632614525978'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6726614034631587232/posts/default/4002883632614525978'/><link rel='alternate' type='text/html' href='http://meandmarkpublishing.blogspot.com/2007/04/using-saturn-on-intel-macs.html' title='Using Saturn on Intel Macs'/><author><name>Mark</name><uri>http://www.blogger.com/profile/07619553773031764027</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6726614034631587232.post-7155233111106678460</id><published>2007-03-30T14:43:00.000-05:00</published><updated>2007-03-30T13:43:47.329-05:00</updated><title type='text'>OpenGL Book Progress Report for March 2007</title><content type='html'>I haven't posted anything about the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;OpenGL&lt;/span&gt; book for a while, but I am writing to let you know I am still working on it. Progress has been excruciatingly slow, which has been very frustrating to me. On the code front, I've been working on the physics code. On the writing front, I have a lot of material written on several chapters, but I still don't have a finished chapter. Whenever I write about something, it brings up several additional topics I have to write about. When I write about those topics, it brings up more things to write about, which makes finishing difficult.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6726614034631587232-7155233111106678460?l=meandmarkpublishing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6726614034631587232/posts/default/7155233111106678460'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6726614034631587232/posts/default/7155233111106678460'/><link rel='alternate' type='text/html' href='http://meandmarkpublishing.blogspot.com/2007/03/opengl-book-progress-report-for-march.html' title='OpenGL Book Progress Report for March 2007'/><author><name>Mark</name><uri>http://www.blogger.com/profile/07619553773031764027</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6726614034631587232.post-6126993247598131010</id><published>2007-02-28T16:57:00.000-05:00</published><updated>2007-02-28T17:03:03.546-05:00</updated><title type='text'>I'm Changing Website Hosts</title><content type='html'>I have started moving the Me and Mark Publishing website to a new host. Everything should be transferred within the next 1-2 days. Hopefully there won't be any problems. I will add an item to the Latest News section about the switch. If you see the item on the Me and Mark Publishing home page, you're viewing the site with the new host.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6726614034631587232-6126993247598131010?l=meandmarkpublishing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6726614034631587232/posts/default/6126993247598131010'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6726614034631587232/posts/default/6126993247598131010'/><link rel='alternate' type='text/html' href='http://meandmarkpublishing.blogspot.com/2007/02/im-changing-website-hosts.html' title='I&apos;m Changing Website Hosts'/><author><name>Mark</name><uri>http://www.blogger.com/profile/07619553773031764027</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6726614034631587232.post-8997691575551434538</id><published>2007-02-19T15:10:00.000-05:00</published><updated>2008-01-09T16:01:15.088-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xcode'/><title type='text'>Seeing Xcode's Build Errors</title><content type='html'>When you build an Xcode project, Xcode tells you whether or not the build succeeded. If the build succeeded, that's all you need to know, but if the build failed, you want to know what the errors are so you can fix them. Xcode has two places to look at your errors: the Errors and Warnings smart group and the build results window.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Errors and Warnings Smart Group&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;In the project window's Groups and Files list, you will see the Errors and Warnings smart group. Select the Error and Warnings group and the project window shows the build errors. Double-clicking an error or warning takes you to the line of code where the error occurred.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Build Results Window&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_43mxm9V6l5Q/RdoDR-IXomI/AAAAAAAAAAk/sPHZST4MNTg/s1600-h/BuildResults.jpg"&gt;&lt;img style="cursor: pointer;" src="http://3.bp.blogspot.com/_43mxm9V6l5Q/RdoDR-IXomI/AAAAAAAAAAk/sPHZST4MNTg/s320/BuildResults.jpg" alt="" id="BLOGGER_PHOTO_ID_5033339140810711650" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;When you need to see more detailed information about your build, use the build results window. Choose Build &gt; Build Results to open the build results window. The build results window has three sections. The top section is the build results, which shows the high-level build steps. The middle section is the build transcript, which shows the low-level steps &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;Xcode&lt;/span&gt; takes to build your project. The bottom section is the editor. Selecting an error from the build results or the build transcript shows the line of code in the editor where the error occurred.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Showing the Build Transcript&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;If you open the build results window for the first time, you won't see the build transcript. The build transcript is initially invisible, and you must tell &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;Xcode&lt;/span&gt; to show it. Below the build results are four small buttons. Click the third button to show the build transcript.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6726614034631587232-8997691575551434538?l=meandmarkpublishing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6726614034631587232/posts/default/8997691575551434538'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6726614034631587232/posts/default/8997691575551434538'/><link rel='alternate' type='text/html' href='http://meandmarkpublishing.blogspot.com/2007/02/seeing-xcodes-build-errors.html' title='Seeing Xcode&apos;s Build Errors'/><author><name>Mark</name><uri>http://www.blogger.com/profile/07619553773031764027</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_43mxm9V6l5Q/RdoDR-IXomI/AAAAAAAAAAk/sPHZST4MNTg/s72-c/BuildResults.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-6726614034631587232.post-2725096123558874972</id><published>2007-01-31T20:35:00.000-05:00</published><updated>2008-01-09T16:06:28.320-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mac'/><title type='text'>Writing C++ Programs on Mac OS X</title><content type='html'>A frequently asked question on Mac programming forums is "Can I write C++ programs on Mac OS X?". Yes, you can write C++ programs on Mac OS X&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Install the Xcode Tools&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The Xcode Tools contain everything you need to write Mac OS X applications, including C++ programs. Every copy of Mac OS X contains the Xcode Tools. If you have Mac OS X 10.4, there should be an item called Xcode Tools on the Mac OS X DVD. This item contains the installer. Older versions of Mac OS X that ship on multiple CDs contain either an Xcode Tools or Developer Tools CD.&lt;br /&gt;&lt;br /&gt;Apple frequently updates the Xcode Tools so the version that shipped with your copy of Mac OS X is most likely not the most recent version. If you have a broadband Internet connection, I recommend going to &lt;a href="http://developer.apple.com/"&gt;Apple's developer page&lt;/a&gt; and signing up for a free ADC membership. After signing up for an ADC membership, you can download the most recent version of the Xcode Tools.&lt;br /&gt;&lt;br /&gt;One common concern people have when installing the Xcode Tools is the size of the install. The easy install of the Xcode Tools is over 1.5 GB, which is overkill if all you want to do is learn C++. You can perform a custom install of the Xcode Tools to reduce the size of the install. If you are low on disk space, the easiest way to save space is to not install the developer documentation. The developer documentation takes about 1 GB of disk space, and you can view all the documentation online anyway.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Writing Standard C++ Programs&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The people most likely to ask if they can write C++ programs on Mac OS X are Mac-using college students who are taking a class on C++ programming. C++ programming classes normally teach standard C++, which will run on most operating systems, including Mac OS X.&lt;br /&gt;&lt;br /&gt;To write a standard C++ program with Xcode, you must create a C++ Tool project. C++ Tool projects are used to write command-line programs without a GUI, which makes programming easier. You can read an article on the &lt;a href="http://www.meandmark.com/xcodebook.html"&gt;Xcode Tools Sensei&lt;/a&gt; page that contains detailed instructions on creating and building a C++ Tool project.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Writing C++ GUI Programs&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;After learning C++ you may want to use your newfound knowledge to write Mac OS X GUI programs. You have three options for writing Mac GUI applications in C++. First, you can use Cocoa, writing your user interface code in Objective C and the rest of your code in C++. You must give your Objective C files the extension .mm, which tells Xcode to treat them as Objective C++ files. Objective C++ lets you mix C++ and Objective C code in the same source file.&lt;br /&gt;&lt;br /&gt;Second, you can use Carbon, which is Apple's C API for writing GUI applications. If you choose to use Carbon, you may want to look into &lt;a href="http://www.refnum.com/products/nano"&gt;Nano&lt;/a&gt;, an open-source C++ framework built on top of Carbon.&lt;br /&gt;&lt;br /&gt;Third, you can use a C++ cross-platform GUI framework like &lt;a href="http://www.trolltech.com/products/qt"&gt;Qt&lt;/a&gt; or &lt;a href="http://www.wxwidgets.org/"&gt;wxWidgets&lt;/a&gt;. I haven't used either of these frameworks, but you should check them out if you are interested in supporting Linux and Windows as well as Mac OS X.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6726614034631587232-2725096123558874972?l=meandmarkpublishing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6726614034631587232/posts/default/2725096123558874972'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6726614034631587232/posts/default/2725096123558874972'/><link rel='alternate' type='text/html' href='http://meandmarkpublishing.blogspot.com/2007/01/writing-c-programs-on-mac-os-x.html' title='Writing C++ Programs on Mac OS X'/><author><name>Mark</name><uri>http://www.blogger.com/profile/07619553773031764027</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6726614034631587232.post-8251645767601643360</id><published>2007-01-15T14:42:00.000-05:00</published><updated>2007-01-15T14:42:44.313-05:00</updated><title type='text'>TextWrangler and Interpreted Languages</title><content type='html'>&lt;a href="http://www.barebones.com/products/textwrangler"&gt;TextWrangler&lt;/a&gt; is a free text editor for Mac OS X. It also happens to be a nice development environment for interpreted languages, especially for Perl, Python, and Ruby programming.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;TextWrangler's Advantage over Xcode for Interpreted Languages&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Xcode is designed for compiled languages like C++ and Java, not interpreted languages like Python and Ruby. You can create an external build system project in Xcode, but it is not very useful for interpreted languages because there is nothing to build for interpreted languages. You have to run the Terminal application and launch your program from the command line using your language's interpreter.&lt;br /&gt;&lt;br /&gt;TextWrangler's shebang (#!) menu allows you to run Unix scripts from TextWrangler so you don't have to launch Terminal. TextWrangler has built-in support for Perl, Python, and Ruby, which means you can run and debug Perl, Python, and Ruby programs from TextWrangler. You can use TextWrangler to run programs in other interpreted languages, but you can't debug them using TextWrangler's Run in Debugger menu item.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Creating and Running a Program with TextWrangler&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Writing and running code in interpreted languages is easy in TextWrangler. The following steps show you how to write a simple Ruby program with TextWrangler:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Choose File &gt; New Text Document.&lt;/li&gt;&lt;li&gt;At the bottom of the document window are three pop-up menus. The left menu should say (none). Choose Ruby from the left pop-up menu. This tells TextWrangler that you are writing a Ruby program, which turns on Ruby syntax highlighting and enables the Run in Debugger menu item.&lt;/li&gt;&lt;li&gt;Write your code. For a Hello World program, enter &lt;span style="font-weight: bold;"&gt;puts "Hello World"&lt;/span&gt;.&lt;/li&gt;&lt;li&gt;Choose #! &gt; Run to run the program.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;The instructions for Perl and Python are similar. For Step 2 you would choose either Perl or Python from the pop-up menu and write Perl or Python code instead of Ruby.&lt;br /&gt;&lt;br /&gt;If you are using another interpreted language, the first line of code must specify the path to the interpreter.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;#!/path/to/interpreter&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;The #! sequence is the start of a Unix script.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Using TextWrangler with Xcode&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Although you don't need Xcode for small projects if you use TextWrangler, Xcode has its place for larger projects. You would use Xcode for project organization and version control and use TextWrangler to write the code and run the program. The &lt;a href="http://www.meandmark.com/xcodetips.html"&gt;Xcode Tools Tips&lt;/a&gt; page has a tip on using external editors with Xcode.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6726614034631587232-8251645767601643360?l=meandmarkpublishing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6726614034631587232/posts/default/8251645767601643360'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6726614034631587232/posts/default/8251645767601643360'/><link rel='alternate' type='text/html' href='http://meandmarkpublishing.blogspot.com/2007/01/textwrangler-and-interpreted-languages.html' title='TextWrangler and Interpreted Languages'/><author><name>Mark</name><uri>http://www.blogger.com/profile/07619553773031764027</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6726614034631587232.post-5825613056683947452</id><published>2007-01-08T16:06:00.000-05:00</published><updated>2008-01-09T16:01:35.549-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xcode'/><title type='text'>ZeroLink</title><content type='html'>I read many posts on Mac programming message boards about problems that end up being caused by ZeroLink. Responding to these posts gets tiresome after a while so I decided to write about ZeroLink. In this post I explain what ZeroLink does, the problems it causes, and how you can turn it off so it doesn't cause you problems.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;What ZeroLink Does&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Before I explain what ZeroLink does, I should explain how Xcode normally builds C, C++, and Objective C projects. When you tell Xcode to build your project, the compiler compiles each source code file, creating an object file for each source code file. After compiling each file the linker links each object file along with the libraries and frameworks you're using to create an executable file you can run.&lt;br /&gt;&lt;br /&gt;As its name suggests, Xcode skips the linking stage when you build with ZeroLink. When you run your program built with ZeroLink, Xcode links object files when your program needs them.&lt;br /&gt;&lt;br /&gt;What is the advantage of using ZeroLink? It makes building your project go faster. If your project has many source code files, ZeroLink can speed build times significantly. During development you're going to build your project many times so faster build times save you time.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;ZeroLink's Dark Side&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;ZeroLink's build time savings have a cost. The cost is you can get bizarre program behavior, and the cause of this behavior can be difficult to find. There are two common problems ZeroLink causes. First, because ZeroLink skips the linking stage, you won't find any linker errors when you build your project. The error appears when you run the program in Xcode, and your program crashes.&lt;br /&gt;&lt;br /&gt;Second, your program won't launch when you move the executable or try to run it on another Mac. Projects built with ZeroLink can be run only inside Xcode. Because ZeroLink doesn't do any linking, the executable file is just a shell. When you move the executable file and try to launch it, nothing happens because there's no code inside the executable file. The code is in the object files that haven't been linked.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;The Cause of Confusion&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;ZeroLink-related problems occur most often for people new to Xcode, and it's not their fault. When you create a new Xcode project, Xcode sets the project's active build configuration (the configuration it will use when you build the project) to the debug configuration. The debug configuration initially enables ZeroLink. What this means is if you create an Xcode project, add code to the project, and build the project, you're building with ZeroLink, whether you intended to or not.&lt;br /&gt;&lt;br /&gt;Most Xcode beginners do not intend to use ZeroLink and have no need for it. Unless you have a large project, the problems ZeroLink causes surpass the time saved by not linking. While ZeroLink has its place, most developers are better off not using it, and Apple would be better off turning off ZeroLink initially.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Turning off ZeroLink&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Because Apple enables ZeroLink initially, it is up to you to turn it off. If you're running Xcode 2.2 or later, the easiest way to turn off ZeroLink is to choose Build &gt; Allow ZeroLink. Make sure there is no check mark next to the menu item. No check mark means ZeroLink is turned off. When you turn off ZeroLink using this method, you can't use ZeroLink for any project. If you decide you want to use ZeroLink in the future, choose Build &gt; Allow &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;ZeroLink&lt;/span&gt; to give yourself the capability of turning &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;ZeroLink&lt;/span&gt; on or off on a project by project basis.&lt;br /&gt;&lt;br /&gt;If you're running an earlier version of &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;Xcode&lt;/span&gt;, you must turn off the &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;ZeroLink&lt;/span&gt; build setting for each project. The &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;ZeroLink&lt;/span&gt; build setting is in the Linking build settings collection.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6726614034631587232-5825613056683947452?l=meandmarkpublishing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6726614034631587232/posts/default/5825613056683947452'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6726614034631587232/posts/default/5825613056683947452'/><link rel='alternate' type='text/html' href='http://meandmarkpublishing.blogspot.com/2007/01/zerolink.html' title='ZeroLink'/><author><name>Mark</name><uri>http://www.blogger.com/profile/07619553773031764027</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6726614034631587232.post-418154724087113167</id><published>2007-01-03T01:05:00.000-05:00</published><updated>2008-01-09T16:01:15.088-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xcode'/><title type='text'>Linking External Libraries and Frameworks in Xcode</title><content type='html'>As long as you stick with the Apple-supplied frameworks that reside in System/Library/Frameworks (Cocoa, Carbon, &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;OpenGL&lt;/span&gt;, &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;QuickTime&lt;/span&gt;, etc.), linking in &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;Xcode&lt;/span&gt; is pretty simple. Add the framework to your project, and you're done.&lt;br /&gt;&lt;br /&gt;Things get a little more complicated when you want to use other libraries and frameworks in your code. If you're new to &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;Xcode&lt;/span&gt;, you may get a ton of &lt;span style="font-style: italic;"&gt;undefined symbol&lt;/span&gt; linker errors when you build your project, with the undefined symbols being in the the libraries and frameworks you want to use. These errors mean the linker can't find the symbols. How can you eliminate these errors?&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Add the Libraries and Frameworks to Your Project&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;It sounds obvious, but make sure you have added the external libraries and frameworks to your project. If you don't add them, your project will not link.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Add Search Paths&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;If you have added the libraries and frameworks to your project and you still get &lt;span style="font-style: italic;"&gt;undefined symbol&lt;/span&gt; errors, the most likely cause is the linker can't find the libraries and frameworks. What you need to do is add search paths for the libraries and frameworks you're using.&lt;br /&gt;&lt;br /&gt;&lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;Xcode&lt;/span&gt; has a Search Paths build settings collection. This collection lets you add search paths for libraries, frameworks, and header files. To add a search path, select the appropriate build setting and click the Edit button. A sheet will open. Click the + button in the sheet to add a search path, and click the OK button when you're done.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Linker Flags&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Adding search paths eliminates most linker errors, but when it fails, you can add linker flags to the project. To add linker flags go to the Linking build settings collection. The Other Linker Flags build setting lets you manually add flags the linker will use when building your project.&lt;br /&gt;&lt;br /&gt;If you still get linker errors, you're in for a long, frustrating search for a solution.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6726614034631587232-418154724087113167?l=meandmarkpublishing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6726614034631587232/posts/default/418154724087113167'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6726614034631587232/posts/default/418154724087113167'/><link rel='alternate' type='text/html' href='http://meandmarkpublishing.blogspot.com/2007/01/linking-external-libraries-and.html' title='Linking External Libraries and Frameworks in Xcode'/><author><name>Mark</name><uri>http://www.blogger.com/profile/07619553773031764027</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6726614034631587232.post-4074881034760622641</id><published>2007-01-02T01:37:00.000-05:00</published><updated>2008-01-09T16:01:15.088-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xcode'/><title type='text'>Updated Tip on Changing the Compiler</title><content type='html'>I updated the tip on the &lt;a href="http://www.meandmark.com/xcodetips.html"&gt;Xcode Tools Tips&lt;/a&gt; page that deals with changing the compiler Xcode uses to build your project. The updated tip tells you to add the build settings GCC_VERSION_ppc and GCC_VERSION_i386 instead of changing rules for the target. There currently is no need for the GCC_VERSION_i386 setting because Xcode projects use gcc 4 as the default compiler and you can't build for Intel with anything earlier than gcc 4. But the setting will come in handy in the future when Xcode ships with a newer version of gcc.&lt;br /&gt;&lt;br /&gt;There was nothing technically wrong with having a target rule that specified the compiler to use, but it was overkill when all you want to do is compile with an earlier version of gcc. Adding the GCC_VERSION_ppc build setting is more straightforward.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6726614034631587232-4074881034760622641?l=meandmarkpublishing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6726614034631587232/posts/default/4074881034760622641'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6726614034631587232/posts/default/4074881034760622641'/><link rel='alternate' type='text/html' href='http://meandmarkpublishing.blogspot.com/2007/01/updated-tip-on-changing-compiler.html' title='Updated Tip on Changing the Compiler'/><author><name>Mark</name><uri>http://www.blogger.com/profile/07619553773031764027</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6726614034631587232.post-1353495065921042761</id><published>2006-12-18T13:44:00.000-05:00</published><updated>2008-01-09T16:01:15.089-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xcode'/><title type='text'>Introduction to Xcode's Debugger</title><content type='html'>Most of you are familiar with the material in this article, but I read a lot of programming questions on message boards that could have been answered by running the code in a debugger. I hope new programmers will be able to find this article and use it to learn how to debug their programs.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;What is a Debugger?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Computers run programs fast, which is normally a good thing. But if you have a problem in your code, the code runs too fast for you to figure out what is wrong. It's like trying to watch a DVD in fast forward mode.&lt;br /&gt;&lt;br /&gt;A debugger lets you slow things down so you can see what is happening when your program runs. By using a debugger you can pause your program at any line of code, step through your code line by line, and examine the values of your program's variables. A debugger helps immensely when you're trying to find out what's wrong with your code. If you're serious about being a software developer, one of the best things you can do is learn to use a debugger.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Running the Debugger&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Xcode is set up so you don't have to do much work to run the debugger. Every Xcode project you create has a Debug (older versions of Xcode call it Development instead of Debug) build configuration that is set for debugging. The Debug build configuration is the default configuration so all you have to do is choose Build &gt; Build and Debug to open the debugger window and start debugging.&lt;br /&gt;&lt;br /&gt;The debugger window has four areas. At the top is the toolbar, which has buttons for performing the most common debugging tasks. You can also find these debugging commands in Xcode's Debug menu.&lt;br /&gt;&lt;br /&gt;Below the toolbar on the left is the call stack viewer. At the top of the call stack is the function where your program current is. Below that is the function that called the current function. Below that is the function that called the second function and so on. The call stack viewer is the least interesting part of the debugging window for those of you who are new to debuggers.&lt;br /&gt;&lt;br /&gt;Next to the call stack viewer is the variable viewer. The variable viewer lets you see the values of the current function's local variables and arguments as well as any constant variables that are in the current function's source code file.&lt;br /&gt;&lt;br /&gt;At the bottom of the debugger window is the editor, which lets you see what line of code the program is currently at.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Setting Breakpoints&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Launching the debugger initially doesn't do anything because you haven't told the debugger when to pause. Breakpoints tell the debugger to pause your program when it reaches a certain line of code. What you have to do is set breakpoints where you want your program to pause.&lt;br /&gt;&lt;br /&gt;Click the gutter next to a line of source code in the editor window to set a breakpoint at that line of code. The gutter runs along the left edge of the window. When you set a breakpoint, a gray arrow appears next to the line of code. Dragging the arrow off the gutter removes the breakpoint.&lt;br /&gt;&lt;br /&gt;Now when you run your program in the debugger, it will pause when it reaches any of the breakpoints you set.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Stepping Through Your Code&lt;br /&gt;&lt;/span&gt;&lt;span&gt;&lt;br /&gt;Stepping is one of the most important functions a debugger performs. It lets you walk through one line of code at a time and see the effects of executing that line of code. If you look at Xcode's debugger window toolbar, you will see three buttons: Step Over, Step Into, and Step Out. If the current line of code does not call a function, the Step Over and Step Into buttons do the same thing. They execute the current line of code and move to the next line.&lt;br /&gt;&lt;br /&gt;The Step Over and Step Into buttons perform different tasks when making a function call. Clicking the Step Over button tells the debugger to execute all the code in the function you're calling and move to the line of code after the function call. It &lt;span style="font-style: italic;"&gt;steps over&lt;/span&gt; the function you're calling.&lt;br /&gt;&lt;br /&gt;Clicking the Step Into button takes you inside the function you're calling, which lets you step through the code inside the called function. It &lt;span style="font-style: italic;"&gt;steps into&lt;/span&gt; the function you're calling. When you step into a function, the Step Out button becomes relevant. Clicking the Step Out buttons takes you out of the called function and moves to the line of code after the function call. Clicking the Step Into and Step Out buttons is the equivalent of clicking the Step Over button.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Conclusion&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;For more information on Xcode's debugger, read the Xcode's User Guide, which you can open in Xcode by choosing Help &gt; &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;Xcode&lt;/span&gt; Help. There is an entire section on debugging.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6726614034631587232-1353495065921042761?l=meandmarkpublishing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6726614034631587232/posts/default/1353495065921042761'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6726614034631587232/posts/default/1353495065921042761'/><link rel='alternate' type='text/html' href='http://meandmarkpublishing.blogspot.com/2006/12/introduction-to-xcodes-debugger.html' title='Introduction to Xcode&apos;s Debugger'/><author><name>Mark</name><uri>http://www.blogger.com/profile/07619553773031764027</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6726614034631587232.post-95948128858779795</id><published>2006-12-12T22:11:00.000-05:00</published><updated>2006-12-12T22:38:18.682-05:00</updated><title type='text'>Waiting for the New Zelda Game</title><content type='html'>The latest Zelda game came out for &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;Gamecube&lt;/span&gt; today at 5:00 PM, and I got to wait in line for it. My mother heard there were shortages so she asked my father to go to Target to get a copy. She needed two copies as Christmas presents, and purchases were limited to one per person so I ended up going to be the second person.&lt;br /&gt;&lt;br /&gt;We got to Target a little after 4:30 PM. Fortunately, there were only two people in line when we got there. A couple in their 60's got in line behind us a few minutes later to buy a copy for their grandson, and another person got in line a few minutes before 5. Seven people in line. I felt a little foolish waiting in such a short line.&lt;br /&gt;&lt;br /&gt;Then 5:00 came, and I saw the store had only 6 copies of the game. Those of us in line were the only people to get a copy of the game. I was shocked at how few copies were available. I figured at least 20 would be available, but I felt a lot less foolish waiting in line. It's going to be hard to find a copy of Zelda by Christmas.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6726614034631587232-95948128858779795?l=meandmarkpublishing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6726614034631587232/posts/default/95948128858779795'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6726614034631587232/posts/default/95948128858779795'/><link rel='alternate' type='text/html' href='http://meandmarkpublishing.blogspot.com/2006/12/waiting-for-new-zelda-game.html' title='Waiting for the New Zelda Game'/><author><name>Mark</name><uri>http://www.blogger.com/profile/07619553773031764027</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6726614034631587232.post-3605344108141492156</id><published>2006-12-03T15:22:00.000-05:00</published><updated>2008-01-09T16:01:50.584-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sdl'/><title type='text'>Setting Up SDL for Eclipse on Mac OS X</title><content type='html'>I got an email from someone who was having trouble setting up &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;SDL&lt;/span&gt; on Eclipse. I have never used Eclipse so I could not provide him much help. He eventually found a solution and emailed it to me so I could share it with you.&lt;br /&gt;&lt;br /&gt;There are four things you have to do to get &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;SDL&lt;/span&gt; working with Eclipse on Mac OS X in addition to what I outlined in my &lt;a href="http://www.meandmark.com/sdlopenglpart1.html"&gt;&lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;SDL&lt;/span&gt; tutorial&lt;/a&gt;. First, you must copy the files &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;SDLMain&lt;/span&gt;.h and &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;SDLMain&lt;/span&gt;.m to the same directory as your &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;SDL&lt;/span&gt; program. My interpretation of this statement is if you create an Eclipse project and add your source code files to the project folder, you must also add &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;SDLMain&lt;/span&gt;.h and &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;SDLMain&lt;/span&gt;.m to the project folder.&lt;br /&gt;&lt;br /&gt;Second, you must add the directory where your &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;SDL&lt;/span&gt; headers reside to the Directories setting for the &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;GCC&lt;/span&gt; C++ compiler. Your headers most likely reside in the following directory:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;/Library/Frameworks/SDL.framework/Headers&lt;/blockquote&gt;&lt;br /&gt;Third, you must add linker flags for the Cocoa and &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;SDL&lt;/span&gt; frameworks as well as the path to the &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;SDLMain&lt;/span&gt;.m file.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;-framework Cocoa&lt;br /&gt;-framework &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;SDL&lt;/span&gt;&lt;br /&gt;/Path/To/&lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;YourProject&lt;/span&gt;/&lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;SDLMain&lt;/span&gt;.m&lt;/blockquote&gt;&lt;br /&gt;Fourth, you must change the following line of code in &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;SDLMain&lt;/span&gt;.m:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;#import "&lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_16"&gt;SDL&lt;/span&gt;.h"&lt;/blockquote&gt;&lt;br /&gt;to the following:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;#include SDL/SDL.h &lt;/blockquote&gt;&lt;br /&gt;Put less than and greater than signs around the SDL/SDL.h. For some reason I can't get those characters to show up in the blog.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6726614034631587232-3605344108141492156?l=meandmarkpublishing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6726614034631587232/posts/default/3605344108141492156'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6726614034631587232/posts/default/3605344108141492156'/><link rel='alternate' type='text/html' href='http://meandmarkpublishing.blogspot.com/2006/12/setting-up-sdl-for-eclipse-on-mac-os-x.html' title='Setting Up SDL for Eclipse on Mac OS X'/><author><name>Mark</name><uri>http://www.blogger.com/profile/07619553773031764027</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6726614034631587232.post-7006102891454351817</id><published>2006-11-28T16:46:00.000-05:00</published><updated>2006-11-28T16:57:10.624-05:00</updated><title type='text'>OpenGL Book Pushed Back to 2007</title><content type='html'>I've come to the conclusion there is no way I'm going to be able to finish the OpenGL book by the end of the year, as I had hoped. I would like to have the book finished in the first quarter of 2007.&lt;br /&gt;&lt;br /&gt;Writing has progressed slower than I thought. I have my facts correct, but I'm having a hard time  making the material interesting to read and making clear explanations.  I'm frustrated by the slow progress I'm making, but I prefer taking the time to write a good book that helps people instead of rushing a crappy book that doesn't help anyone.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6726614034631587232-7006102891454351817?l=meandmarkpublishing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6726614034631587232/posts/default/7006102891454351817'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6726614034631587232/posts/default/7006102891454351817'/><link rel='alternate' type='text/html' href='http://meandmarkpublishing.blogspot.com/2006/11/opengl-book-pushed-back-to-2007.html' title='OpenGL Book Pushed Back to 2007'/><author><name>Mark</name><uri>http://www.blogger.com/profile/07619553773031764027</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6726614034631587232.post-7030039814606896219</id><published>2006-11-27T01:04:00.000-05:00</published><updated>2006-11-27T14:01:16.397-05:00</updated><title type='text'>Game Design Tip: Don't Make the Player Play the Same Stuff Repeatedly</title><content type='html'>By play the same stuff I mean play the same part of a level repeatedly. This problem occurs more with console games than computer games because console games have less flexibility in game saving.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Example: Metroid Prime&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I'm going to use the game Metroid Prime to describe the problem of playing the same part of a level repeatedly for two reasons. One, it's the game I'm currently playing so it is fresh in my mind. Two, it's a really good game. I want to show that even good games can have minor problems.&lt;br /&gt;&lt;br /&gt;If you're wondering why I'm playing a 4 year old game, I'll explain it now. I got Metroid Prime about 3 years ago and I got stuck early and quit playing it. I started playing it recently because my brother needed my Playstation 2 to play DVDs because his DVD player broke and I finished my other GameCube games.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Repetition Can Turn Something Fun Into a Chore&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Metroid Prime features a lot of boss enemies to fight, and they can be very difficult to defeat. To reach a boss involves fighting lesser enemies, running, jumping, maneuvering the morph ball through tight areas, and problem solving. Sometimes it can take 5-10 minutes of gameplay to reach the boss, and when you die, you have to go back to the last save point and play those 5-10 minutes again.&lt;br /&gt;&lt;br /&gt;Because some of the boss enemies are tough to defeat, you can die dozens of times, and replaying the same 5-10 minutes of gameplay to reach the boss gets old fast. Playing those 5-10 minutes to reach the boss is fun the first time. You're making progress in the game and exploring new areas. Playing to reach the boss a few more times lets you perfect your technique. But after dying 25-50 times, playing the same sequence to reach the boss becomes a chore instead of being fun.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Solutions&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;One solution to the problem of having to play the same area of a level repeatedly is to provide more save points. In the case of Metroid Prime, having a save point before reaching a boss would prevent the player from having to play the same sequence over and over again. But more save points could make the game too easy. Metroid Prime replenishes your energy (health) to 100% when you save the game.&lt;br /&gt;&lt;br /&gt;Another solution would be to continue the game where you died. In the case of Metroid Prime, being able to fight the boss right away after dying would eliminate a lot of frustration. The time spent getting to the boss could be spent on the real challenge, defeating the boss.&lt;br /&gt;&lt;br /&gt;The good news for most of the game developers reading this is you're developing computer games, not console games. Computer games can let the player save the game whenever they want so you can keep the player from playing the same sequence over and over again.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6726614034631587232-7030039814606896219?l=meandmarkpublishing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6726614034631587232/posts/default/7030039814606896219'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6726614034631587232/posts/default/7030039814606896219'/><link rel='alternate' type='text/html' href='http://meandmarkpublishing.blogspot.com/2006/11/game-design-tip-dont-make-player-play.html' title='Game Design Tip: Don&apos;t Make the Player Play the Same Stuff Repeatedly'/><author><name>Mark</name><uri>http://www.blogger.com/profile/07619553773031764027</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6726614034631587232.post-6272334708435538706</id><published>2006-11-24T15:05:00.000-05:00</published><updated>2006-11-24T15:33:46.338-05:00</updated><title type='text'>Sometimes it Takes a While to Respond</title><content type='html'>I got an email last night from a customer. He tried to download the updated version of Xcode Tools Sensei and got an error message saying the file was not found on the server. The error message is not surprising because I pulled the file from the server two months ago.&lt;br /&gt;&lt;br /&gt;I wanted people who had bought the electronic version of the book to be able to download the new version. For obvious business reasons I didn't want the new version to be on the site permanently. My solution was to post the updated version on my site for a week and send an email to every customer who wanted to be contacted about updates. I figured a week was enough time for the customers I emailed to download the new version. I apparently was wrong.&lt;br /&gt;&lt;br /&gt;I did send the customer the new version. If any of you bought an old electronic version (before September 2006) and want the new version, send me an email and I'll send you the new version.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6726614034631587232-6272334708435538706?l=meandmarkpublishing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6726614034631587232/posts/default/6272334708435538706'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6726614034631587232/posts/default/6272334708435538706'/><link rel='alternate' type='text/html' href='http://meandmarkpublishing.blogspot.com/2006/11/sometimes-it-takes-while-to-respond.html' title='Sometimes it Takes a While to Respond'/><author><name>Mark</name><uri>http://www.blogger.com/profile/07619553773031764027</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6726614034631587232.post-5594399985470080318</id><published>2006-11-22T21:59:00.000-05:00</published><updated>2006-11-22T22:09:05.858-05:00</updated><title type='text'>Switched to Blogger</title><content type='html'>&lt;span style="font-family: lucida grande;"&gt;I switched&lt;span style="font-size:100%;"&gt; the blog from Lulu to Blogger. The old blog did not handle large posts (over a page) well, eliminating text in the middle of the post. I did a test post of a 7 page article, and there were no problems so I decided to switch. Blogger's spell checking is an added bonus. I included a link to the old blog entries to ease the transition.&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: lucida grande;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6726614034631587232-5594399985470080318?l=meandmarkpublishing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6726614034631587232/posts/default/5594399985470080318'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6726614034631587232/posts/default/5594399985470080318'/><link rel='alternate' type='text/html' href='http://meandmarkpublishing.blogspot.com/2006/11/switched-to-blogger.html' title='Switched to Blogger'/><author><name>Mark</name><uri>http://www.blogger.com/profile/07619553773031764027</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry></feed>
