<?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-9209316572052154923</id><updated>2011-11-15T07:10:27.665-08:00</updated><category term='Process'/><category term='Switching to Mac'/><category term='Programming'/><title type='text'>Shad's Programming Corner</title><subtitle type='html'>For Programming discussion based on Opengl, XNA and mainly IPhone Programming.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://shadhex.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9209316572052154923/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://shadhex.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Shadhex</name><uri>http://www.blogger.com/profile/12001354316575213124</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://4.bp.blogspot.com/_mSTDo6Y7p-c/Snt1GmPUoBI/AAAAAAAAADw/kZwMlIi9WJc/S220/mebynick.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>15</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-9209316572052154923.post-4282724891309549901</id><published>2011-09-15T18:39:00.000-07:00</published><updated>2011-09-15T18:39:50.507-07:00</updated><title type='text'>Multiple Instances Of Unity3d</title><content type='html'>Whenever I program in VS 2010, I normally have multiple instances of the studio open. Some times I use the extra instances because they are dependant solutions that I need quick access to, sometimes I have some good tutorials or example projects that I want to quickly reference, run and debug.&lt;br /&gt;&lt;br /&gt;I thought I had lost this when I started working in Unity3d, and I never needed more than now. &amp;nbsp;Although I can reference the code from other project easily enough using MonoDevelop, the code is only half the story. &amp;nbsp;Often, the scene can tell you more than the actual code can. &amp;nbsp;And although I've been programming in it for a while now, I still find the plethora of Unity tutorial online to be invaluable in my endeavour to better myself. &lt;br /&gt;&lt;br /&gt;It turns out it's absolutely possible to do this. &amp;nbsp;Just not as straight forward as you would launch it normally. There's a nice command line page for unity&amp;nbsp;&lt;a href="http://unity3d.com/support/documentation/Manual/Command%20Line%20Arguments.html"&gt;here&lt;/a&gt;, the option that is important for us right now is the -projectPath.&lt;br /&gt;&lt;br /&gt;Now from the terminal, I type:&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; border-collapse: collapse; font-family: arial, 'san serif'; font-size: 13px;"&gt;&lt;b&gt;&lt;code&gt;&lt;i&gt;/Applications/Unity/Unity.app/Contents/MacOS/Unity -projectPath /Users/username/Unity/ProjectName&lt;/i&gt;&lt;/code&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: arial, 'san serif'; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; border-collapse: collapse;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: arial, 'san serif';"&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; border-collapse: collapse;"&gt;Yep, that works! I now have another Unity instance right next to my previous one. &amp;nbsp;Now this is somewhat cumbersome as I don't want to go to the terminal every time I want to launch my project. &amp;nbsp;I now have the habit of creating a small batch file in each of my project that can automatically launch Unity in a separate instance if need be.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: arial, 'san serif';"&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; border-collapse: collapse;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: arial, 'san serif';"&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; border-collapse: collapse;"&gt;Using nano, I would normally go in my project directory and edit a Launch.command file with the following:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: arial, 'san serif';"&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; border-collapse: collapse;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: arial, 'san serif';"&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; border-collapse: collapse;"&gt;&lt;code&gt;&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;code&gt;#!/bin/sh&lt;/code&gt;&lt;/b&gt;&lt;br /&gt;&lt;code&gt;&lt;b&gt;/Applications/Unity/Unity.app/Contents/MacOS/Unity -projectPath /Users/shadhex/Documents/Unity/SpellSlinger/&amp;amp;&lt;/b&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;The .command extension insures that I can launch the script from Finder. &amp;nbsp;The &amp;amp; lets the application launch in the background so that I can close my terminal window without shutting down Unity.&lt;br /&gt;&lt;br /&gt;Hopefully that helps all the learn by example type coders out there!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9209316572052154923-4282724891309549901?l=shadhex.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shadhex.blogspot.com/feeds/4282724891309549901/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://shadhex.blogspot.com/2011/09/multiple-instances-of-unity3d.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9209316572052154923/posts/default/4282724891309549901'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9209316572052154923/posts/default/4282724891309549901'/><link rel='alternate' type='text/html' href='http://shadhex.blogspot.com/2011/09/multiple-instances-of-unity3d.html' title='Multiple Instances Of Unity3d'/><author><name>Shadhex</name><uri>http://www.blogger.com/profile/12001354316575213124</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://4.bp.blogspot.com/_mSTDo6Y7p-c/Snt1GmPUoBI/AAAAAAAAADw/kZwMlIi9WJc/S220/mebynick.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9209316572052154923.post-3626072322900215485</id><published>2010-07-05T14:39:00.000-07:00</published><updated>2010-07-05T14:47:11.638-07:00</updated><title type='text'>Scrum vs Kanban</title><content type='html'>While having a twitter "discussion" on some of the differences between Scrum and Kanban with Alan Shalloway, he prompted me to an &lt;a href="http://www.netobjectives.com/blogs/real-difference-between-kanban-scrum"&gt;article&lt;/a&gt; he wrote about the subject.  It's a very interesting post and I would encourage you to go read it now.&lt;br /&gt;&lt;br /&gt;I like how he attributes a team's learning ability as a result of retrospective done throughout different projects.  On a scrum project, this would happen once at the end of every iteration.  Kanban, by Alan's thinking, do mini-retrospection every day while reviewing the Kanban board.  Would many mini-retrospection be equivalent or better to a "prescribed" end-of-iteration retrospection?  I don't know, but the thought is interesting.  Obviously the team also gets key learning outside of retrospective but this is true regardless of process.&lt;br /&gt;&lt;br /&gt;In the same section he describes scrum as a black box, with  well-defined inputs and well-defines outputs (product backlog -&gt; software built).  Although he mentions that these words are not his but Ken Schwaber's, I don't agree with them.  I hate the thought of any process to be described as a black box.  It almost implies that the results are guaranteed when given a set of similar inputs.  We all know that this isn't true in software development.  In fact, that's why we look at empirical process in the first place instead of traditional prescribed methodologies. The input might be well defined as a product backlog, but the product backlog itself is not important, what's interesting is the stories it contains and the complexity behind them.  Given a similar project with a different team, the product backlog might look completely different.  Scrum is a black-box as much as any other process is a black-box, requirements-in -&gt; resulting assets out.  This usage of black-box in that context is not very interesting and obviously can't be used to differentiate methodologies.&lt;br /&gt;&lt;br /&gt;In both Scrum and Kanban, they have a solution for one of the most frustrating aspect of our work: interruptions.  There's ton of different types of interruptions (meeting, phone calls, company outings)but one that really is costly is switching tasks because of priorities.  I don't know of a worst thing for a developer to put his solution on hold while he's switch to another "more important" task.  &lt;br /&gt;&lt;br /&gt;Scrum's approach is to lock an iteration down (normally 30 days) where you cannot changed anything that you planned to worked on (sprint backlog).  If you do change something because of grave priority, then the scrum master may cancel the sprint entirely if the sprint goal is invalidated.  This is normally an exception and not the rule.  &lt;br /&gt;&lt;br /&gt;Kanban's approach is more flexible, you cannot change the task that you are currently working on unless you haven't attained your limit, but you can certainly changed what's the priority for the tasks in your to do list.  Iteration isn't a prescribed practice in Kanban.&lt;br /&gt;&lt;br /&gt;In my mind one of the most important factor between Kanban and Scrum: Inclusion of Management.  I actually agree that Kanban is better on the relationship between management and their team. Although I don't agree that Scrum stops management from providing "proper interference"(maybe an oxymoron?).  Interference might not be allowed at the daily Scrum meetings, why waste everyone's time if only a few are concerned. There's no reason why a guiding discussion can't happen with the Scrum master on information that could help the team.  Having said that, scrum does create a barrier between management and the members of the team that many managers would find uncomfortable (more on this later).&lt;br /&gt;&lt;br /&gt;I disagree on the visibility being the main factor (it could certainly be a factor). One of the factors I attribute to Kanban being easier to accept by management would be "Controlled Change Management", which Alan says is the biggest difference between Scrum and Kanban.  I think that this factor alone make it so much easier to get backing from middle management and above.  I believe having buy-in from management is one of the most important aspects of adopting a process (agile or not) for a company.&lt;br /&gt;&lt;br /&gt;If you do Scrum by the book, using the Chicken and Pig analogy, how many business do you think would be ready to accept it top-down?  It takes so much control and power away from the management (even if it might be for the better good) and they are the ones that should make the decision to use Scrum.  Or at least endorse it because the different teams believe it will help.  Most of the time, Scrum is instead implemented bottom-up (it's easier to ask for forgiveness instead of permission), and then it's up to the Scrum master to act as a proxy between middle/high management and the team.  Gantt charts over Product backlog, Scrum meetings where he urges some "chickens" to remain silent etc.  Maybe eventually, the results will speak for itself and will break down the barrier for an adoption of Scrum throughout the organization, but that takes time. Managers that employs a "servant-leader" approach already know instinctively why a methodology like Scrum would work, but not everyone is so open-minded.&lt;br /&gt;&lt;br /&gt;I've been with a company where one of a project really hit an impasse with one of our customer.  We were in trouble, everyone was desperate.  We called in some expert to put a process in place that would help us out with our problems.  I wonder how many companies are in that state of mind when they accept Scrum?  It's unfortunate, but I can see more companies accepting it because of desperation rather than wanting to change for the better.  I think this is fast changing though.&lt;br /&gt;&lt;br /&gt;So the ability to slowly adopt Kanban in your organization will certainly be easier to sell than the Scrum "in your face manager" attitude.  Especially with managers reading books like "The inmates are running the asylum" :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9209316572052154923-3626072322900215485?l=shadhex.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shadhex.blogspot.com/feeds/3626072322900215485/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://shadhex.blogspot.com/2010/07/scrum-vs-kanban.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9209316572052154923/posts/default/3626072322900215485'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9209316572052154923/posts/default/3626072322900215485'/><link rel='alternate' type='text/html' href='http://shadhex.blogspot.com/2010/07/scrum-vs-kanban.html' title='Scrum vs Kanban'/><author><name>Shadhex</name><uri>http://www.blogger.com/profile/12001354316575213124</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://4.bp.blogspot.com/_mSTDo6Y7p-c/Snt1GmPUoBI/AAAAAAAAADw/kZwMlIi9WJc/S220/mebynick.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9209316572052154923.post-4311172570892291024</id><published>2010-05-24T08:28:00.000-07:00</published><updated>2010-05-24T08:33:11.478-07:00</updated><title type='text'>IPhone Programming, where to start---REBOOT</title><content type='html'>I've previously posted &lt;a href="http://shadhex.blogspot.com/2009/01/iphone-programming-where-to-start.html"&gt;a where to start&lt;/a&gt; before.  This is when I had just started doing IPhone programming and I think the list of books would still stand today as being great books to learn from to start programming on the IDevices. &lt;a target="_blank"  href="http://www.amazon.com/Beginning-iPhone-Development-Exploring-SDK/dp/1430224592?ie=UTF8&amp;tag=sspc-20&amp;link_code=btl&amp;camp=213689&amp;creative=392969"&gt;Beginning iPhone 3 Development: Exploring the iPhone SDK&lt;/a&gt;&lt;img src="http://www.assoc-amazon.com/e/ir?t=sspc-20&amp;l=btl&amp;camp=213689&amp;creative=392969&amp;o=1&amp;a=1430224592" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important; padding: 0px !important" /&gt;, &lt;a target="_blank"  href="http://www.amazon.com/Programming-Objective-C-2-0-Stephen-Kochan/dp/0321566157?ie=UTF8&amp;tag=sspc-20&amp;link_code=btl&amp;camp=213689&amp;creative=392969"&gt;Programming in Objective-C 2.0 (2nd Edition)&lt;/a&gt;&lt;img src="http://www.assoc-amazon.com/e/ir?t=sspc-20&amp;l=btl&amp;camp=213689&amp;creative=392969&amp;o=1&amp;a=0321566157" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important; padding: 0px !important" /&gt;, &lt;a target="_blank"  href="http://www.amazon.com/Cocoa-Programming-Mac-OS-3rd/dp/0321503619?ie=UTF8&amp;tag=sspc-20&amp;link_code=btl&amp;camp=213689&amp;creative=392969"&gt;Cocoa(R) Programming for Mac(R) OS X (3rd Edition)&lt;/a&gt;&lt;img src="http://www.assoc-amazon.com/e/ir?t=sspc-20&amp;l=btl&amp;camp=213689&amp;creative=392969&amp;o=1&amp;a=0321503619" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important; padding: 0px !important" /&gt; are all great starting points to get to programming quickly on the IPhone SDK.&lt;br /&gt;&lt;br /&gt;Since then, I've added many other books to my repertoire.  Some that I didn't even have time to read yet :)  I've always been a fan of the gems type books.  They list concrete and sometimes more difficult examples than the normal "learning" type books.  To this list I added &lt;a target="_blank"  href="http://www.amazon.com/iPhone-Games-Projects-PJ-Cabrera/dp/1430219688?ie=UTF8&amp;tag=sspc-20&amp;link_code=btl&amp;camp=213689&amp;creative=392969"&gt;iPhone Games Projects&lt;/a&gt;&lt;img src="http://www.assoc-amazon.com/e/ir?t=sspc-20&amp;l=btl&amp;camp=213689&amp;creative=392969&amp;o=1&amp;a=1430219688" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important; padding: 0px !important" /&gt;, &lt;a target="_blank"  href="http://www.amazon.com/iPhone-Cool-Projects-Wolfgang-Ante/dp/143022357X?ie=UTF8&amp;tag=sspc-20&amp;link_code=btl&amp;camp=213689&amp;creative=392969"&gt;iPhone Cool Projects&lt;/a&gt;&lt;img src="http://www.assoc-amazon.com/e/ir?t=sspc-20&amp;l=btl&amp;camp=213689&amp;creative=392969&amp;o=1&amp;a=143022357X" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important; padding: 0px !important" /&gt;, &lt;a target="_blank"  href="http://www.amazon.com/iPhone-Advanced-Projects-Dylan-Bruzenak/dp/1430224037?ie=UTF8&amp;tag=sspc-20&amp;link_code=btl&amp;camp=213689&amp;creative=392969"&gt;iPhone Advanced Projects&lt;/a&gt;&lt;img src="http://www.assoc-amazon.com/e/ir?t=sspc-20&amp;l=btl&amp;camp=213689&amp;creative=392969&amp;o=1&amp;a=1430224037" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important; padding: 0px !important" /&gt;.  They are all great books, some of them helped me to work better in cocos2D and others gave me some good optimizing tips.&lt;br /&gt;&lt;br /&gt;I'm afraid though, that the most important book that most of us indie type programmer can buy isn't a programming book at all.  Let's face it, programming is rather easy for most of us.  I've been programming in games for years, and sure there's new things to learn when switching to a new platform and language.  But it's most likely not unlike anything you did in the past.  So what is this important void of knowledge we need to fill?  If you are on the Appstore trying to get noticed, you probably already know : &lt;b&gt;Marketing&lt;/b&gt;.  I've never really given marketing too much thoughts before going on the Appstore.  Even while developing for our Zombie Planet game, marketing is something I was going to do at the end, once it's in the Appstore.  Wrong! We were happy enough at first, but our numbers dropped quickly enough.  Since we got good reviews from the users who did try it, I think our marketing effort (or lack of) is at fault.&lt;br /&gt;&lt;br /&gt;So to refresh my list, here's the most important book you can buy BEFORE starting to program your application: &lt;a target="_blank"  href="http://www.amazon.com/Business-iPhone-App-Development-Marketing/dp/1430227338?ie=UTF8&amp;tag=sspc-20&amp;link_code=btl&amp;camp=213689&amp;creative=392969"&gt;The Business of iPhone App Development: Making and Marketing Apps that Succeed&lt;/a&gt;&lt;img src="http://www.assoc-amazon.com/e/ir?t=sspc-20&amp;l=btl&amp;camp=213689&amp;creative=392969&amp;o=1&amp;a=1430227338" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important; padding: 0px !important" /&gt;.  There's simply no better book out there right now on this subject.  Although the book makes it very clear that marketing should start before your game, it promises to also help the poor souls who are already released in the Appstore.  I haven't yet tried to apply any of these tips to our game yet.  I've been busy with our new bundle of joy the past few months (a baby, not a toy or a game).  I hope to do all of this soon though, as I'm working on releasing our first update to our game (way overdue now).&lt;br /&gt;&lt;br /&gt;I absolutely enjoyed this book. Because I lack any formal training in this domain, I've learned so much from it, which is absolutely thrilling. Imagine my surprised when I actually saw code in there to help you along for things like in-app purchase and in-app email.  I've always wondered how some games are able to give mojo or credits of some sort (We rule, imob) by downloading other applications.  This book covers how to do this too; mystery solved.  It also gives good tips on the benefit of free, when to use in-app advertising and how to properly use in-app purchase. &lt;br /&gt;&lt;br /&gt;If there is one part I didn't like about this book, it's chapter 3: Protecting your intellectual property. If you find yourself in the same boat, just skip it.  The main point you should take from this chapter is to do your research to make sure you don't use any existing trademarks.  As indie developers, the rest probably won't apply to you unless you are very successful.  If you are aren't indie, chances are you have your own marketing and legal department.  In any case, this chapter didn't speak to me but maybe there is someone out there that will like it.  The question is: if &lt;a href="http://www.tigsource.com/2009/05/29/tim-langdell-the-edge-of-insanity/"&gt; Mobigame &lt;/a&gt;had read this chapter, would they have changed anything about how they went forward with their great game Edge?  Probably not. &lt;br /&gt;&lt;br /&gt;Beside that chapter, the rest is pure gold.  It answers a ton of questions and what it can't answer due to space limitation it provides in links to online resources.  From affiliate programs to how to setup an ad-hoc distribution to social media integration, this book is full of useful tips!&lt;br /&gt;&lt;iframe src="http://rcm.amazon.com/e/cm?t=sspc-20&amp;o=1&amp;p=8&amp;l=bpl&amp;asins=1430227338&amp;fc1=000000&amp;IS2=1&amp;lt1=_blank&amp;m=amazon&amp;lc1=0000FF&amp;bc1=000000&amp;bg1=FFFFFF&amp;f=ifr" style="align:right;padding-top:5px;width:131px;height:245px;padding-right:10px;"align="right" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"&gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9209316572052154923-4311172570892291024?l=shadhex.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shadhex.blogspot.com/feeds/4311172570892291024/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://shadhex.blogspot.com/2010/05/iphone-programming-where-to-start.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9209316572052154923/posts/default/4311172570892291024'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9209316572052154923/posts/default/4311172570892291024'/><link rel='alternate' type='text/html' href='http://shadhex.blogspot.com/2010/05/iphone-programming-where-to-start.html' title='IPhone Programming, where to start---REBOOT'/><author><name>Shadhex</name><uri>http://www.blogger.com/profile/12001354316575213124</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://4.bp.blogspot.com/_mSTDo6Y7p-c/Snt1GmPUoBI/AAAAAAAAADw/kZwMlIi9WJc/S220/mebynick.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9209316572052154923.post-2889904067880644720</id><published>2009-12-30T13:25:00.000-08:00</published><updated>2009-12-30T13:31:05.151-08:00</updated><title type='text'>A Zombie Planet</title><content type='html'>Our first game using Cocos2D and Open Feint is out.  We started this game sometime in August and got it in on time for Xmas in the Appstore.  You can get more details on the game on our &lt;a href="http://blisteredthumb.blogspot.com/"&gt;team blog&lt;/a&gt; and you can download the game from the &lt;a href="http://bit.ly/7ivxjU"&gt;appstore&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Once I got more time, I'll try posting a post-mortem on our game.&lt;br /&gt;&lt;br /&gt;Cheers,&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9209316572052154923-2889904067880644720?l=shadhex.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shadhex.blogspot.com/feeds/2889904067880644720/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://shadhex.blogspot.com/2009/12/zombie-planet.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9209316572052154923/posts/default/2889904067880644720'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9209316572052154923/posts/default/2889904067880644720'/><link rel='alternate' type='text/html' href='http://shadhex.blogspot.com/2009/12/zombie-planet.html' title='A Zombie Planet'/><author><name>Shadhex</name><uri>http://www.blogger.com/profile/12001354316575213124</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://4.bp.blogspot.com/_mSTDo6Y7p-c/Snt1GmPUoBI/AAAAAAAAADw/kZwMlIi9WJc/S220/mebynick.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9209316572052154923.post-5138409645245432728</id><published>2009-08-06T17:28:00.000-07:00</published><updated>2009-08-06T18:01:41.924-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><title type='text'>Using Cocos 2D MyFirstGame</title><content type='html'>I've recently updated my version of Cocos2D to the new 0.8 rev for a new game I'm working on with a colleague of mine.  I was pleasantly surprise to see many changes, some of which I had to do in the previous version I was using which I was dreading about having to merge back in this version.  For example, the original event handler used to only take a CocosNode, which is not always convenient especially since there was a perfectly good interface (protocol) for event handling.  In my own version, I had changed it so that you could pass in (id &lt;TouchEventsDelegate&gt;) and did some refactoring to have the TouchEventsDelegate in its own .m file.&lt;br /&gt;&lt;br /&gt;I was a bit surprised to see the exact file name already created when I opened up the new Cocos2D, at first I thought I was looking at the wrong branch.  They also up the ante by removing the the event handlers from the Director, which was a good change (single responsibility principle).  I don't always feel well qualified to be looking through Objective-C code,  I feel my IQ drops a few point every time I try to design with Objective-C simply because I'm spending more time then I normally would thinking about syntax.  Looking through the new version, I'm at least relieve to see some decent improvement.  Once I spend more time on it, I'm sure I will find some holes here and there.  After all, there's no perfect framework.&lt;br /&gt;&lt;br /&gt;My first gripe is that I had went through the trouble of creating a cocos2d template type so I could quickly create projects using the wizard.  At the time there was a template for one specific version 0.6.? but when I moved to 0.7.1 I had to spend some time fixing it up.  I didn't feel like doing this again, especially since I had heard that MyFirstGame was there ready for you to use!  MyFirstGame is a very simple app with all the static link libraries (which I didn't have before) and a Hello World type construct.  The only problem I really had is that I truly loath it's location (test/samples/MyFirstGame).  I wanted to have quick access to this projects, so I moved it to the root of my directory structure.  Unfortunately now all my files for my static link project were in the wrong directory, this would be simple enough for me to fix in Visual Studio, but in XCode, well I don't want to call it tricky, it's just a bit different.  Once you know how to do it, it's really no more difficult than Visual Studio.&lt;br /&gt;&lt;br /&gt;Once this was all done (drag/drop the source file on the target's compile sources), I was finally able to recompile my project from my new location. Grrr, why does the Active SDK only list 3.0 as a valid SDK?  To fix this I brought up the info for the projects and went under the build tab.  From here, I did a quick search for SDK (that search box is awesome! I wish Visual Studio would have something similar), and I found Base SDK set to IPhone Device 3.0, I just changed this option to 2.2 and finally had option to access all my usual SDK.&lt;br /&gt;&lt;br /&gt;Now I'll go back and try to work on Templatizing Cocos2D again.  Although I think I found some good advice here for it : http://iphonesdkdev.blogspot.com/2009/01/xcode-template-for-cocos2d.html so this should be easier than my last time where I was going blindly through this process.  To be fair, doing wizards for Visual Studio is not fun to do either.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9209316572052154923-5138409645245432728?l=shadhex.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shadhex.blogspot.com/feeds/5138409645245432728/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://shadhex.blogspot.com/2009/08/using-cocos-2d-myfirstgame.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9209316572052154923/posts/default/5138409645245432728'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9209316572052154923/posts/default/5138409645245432728'/><link rel='alternate' type='text/html' href='http://shadhex.blogspot.com/2009/08/using-cocos-2d-myfirstgame.html' title='Using Cocos 2D MyFirstGame'/><author><name>Shadhex</name><uri>http://www.blogger.com/profile/12001354316575213124</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://4.bp.blogspot.com/_mSTDo6Y7p-c/Snt1GmPUoBI/AAAAAAAAADw/kZwMlIi9WJc/S220/mebynick.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9209316572052154923.post-3250326392560597012</id><published>2009-03-01T18:05:00.000-08:00</published><updated>2009-03-01T20:10:59.730-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><title type='text'>How do I start and complete a new game?</title><content type='html'>How do you start a project and bring it to completion?  This isn't as easy as it sounds.  We all have different level of motivation for making projects at home on our own time.  Personally, I'm somewhat of a self learner in the programming profession.  I started sharpening my programming skill before I was in high school, and the only way I could really learn anything was to create projects for myself almost every other month.  Have I finished many of those applications?  I've sold one of my programs to a few schools;  one out of hundreds of applications that I "completed".  My point is that "complete" needs to be defined, for any projects.  My personal projects were always more about the learning experience than the end utility about the program in question.  Once I learned what I needed from the experiment, I would move on, hence "complete".&lt;br /&gt;&lt;br /&gt;The definition of "complete" is no more well defined in most work places.  How often a programmer is given a certain task, asked how much time he thinks it will take him to complete it and the reply would be something like "Oh, for that no more than an hour".  An hour goes by, you come back to the programmer and ask if it's done and he says "Yep, all done, I'm just finishing the review of it now.  I'll have Jake go over it to make sure I didn't break anything, then I need to make sure it also builds and run on the target".  Huh?  What just happened, it's not done is it?  Well, the programmer has a very different definition of done than a delivery manager or a producer.  It might still need to be committed to the SCM and then submitted against a specific enhancement request, or maybe a defect.  After that, it might need to be build as part of an automated build process and be unit tested.  Then there's the smoke test on the build, installing on the target and QA finally needs to go through it.  Ok, so maybe it's not to this extreme everywhere, but you get the point.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Define Complete&lt;/span&gt;&lt;br /&gt;The best thing you can do to avoid a miscommunication of what you thought "complete" meant is simply to define it.  Does complete means "when I'm done with it", or "when it's ready to be in the customers' hand".  When you have a personal project, make sure  you define what it is your goal.  Do you want to make money out of the application, make a prototype that might get you some funding, or just playing around with a cool idea cause you want to learn?  There's no bad answers, just make sure you know what it is.&lt;br /&gt;&lt;br /&gt;Since I have starting working on my own time to develop on the IPhone, I now have different goals.  Some of those goals are conflicting unfortunately.  For example, the platform is rather new to me.  I never did Objective-C or Cocoa programming before and never even owned a Mac.  This means that I need to create some projects to learn.  Thankfully, learning new language for me now isn't the same as when I was in 7th grade, when I did not quite understand how pointers worked.  This means that my projects can be a little more varied and elaborate.  I just need to accept that their might a bit of overhead to my normal programming velocity.  I'm very surprised at how low that overhead is, to be honest.  So it is possible to learn while making application that would be somewhat fun and useful.  Ok, I'm not talking about Valentine Tips here.  I didn't particularly enjoy working on that project, but I did learn a lot.  My goal was mainly understanding the process that I was going to need to go through to publish the application on the Appstore.  As such, it was a great success.  A money maker, it was not :)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Come up with ideas&lt;/span&gt;&lt;br /&gt;Duh!  I know sounds stupid.  What I mean by this is not to limit yourself at the first idea that pops into your mind.  You need to come up with a TON of ideas.  Don't go into too much details at first, prefer to go wide instead of deep.  So you got a pirate game idea that you like; great, pirates are always cool.  But wait, before you go into too much detail you come up with a cool Zombie idea.  Obviously, those always work right?  Now, what if you take the two games and take elements of each and turn it into  a game?  What do you have?  Probably a law suite from Disney for infringing on Pirates of the Caribbean!  So go back to the drawing board and start again!  Every year, gamedev.net has a game contest, check out &lt;a href="http://www.gamedev.net/community/contest/4e4/"&gt;Four Elements IV Contest&lt;/a&gt;.  Replace the pirates with robots and Zombie with Ninjas and  your back in business.  If you need inspiration, read books and comics, watch movies or watch sports.  Look inside of you for different experiences that shape the person you are and see if you can use it to make a game (Think the game Bully was created by a bully or the person being bullied?).  Could be either really, the point is that they had experience with the subject in question.  Learn as much as possible once you have identified raw ideas, the learning process might give you new and better ideas.&lt;br /&gt;&lt;br /&gt;It's not easy to have a brainstorm of 1 person, so if you can, try to bounce ideas off your spouse, friends, dog or mirror.  Talk through your ideas out loud, it helps to make them clearer.  Write everything down, so walk around with a piece of paper and a pen.  Your memory will FAIL you, even if you think you have this great idea and you can't possibly forget it, POOF, it's gone 10 minutes later.&lt;br /&gt;&lt;br /&gt;If you are not the only working on the project, then awesome!  You are in a much better spot when it comes to coming up with game ideas.  Brainstorming with a group of people (2-4) is great for generating ideas very fast.  People truly feed on ideas from others and morph them for the better.  Again, write down everything.  Don't be rational at this point, you should be saying stuff like "Oh you can't do that cause bubbles can't bounce off walls, they would explode".  This isn't the time for killing ideas, just generating them (unless your ideas is exploding bubbles, which might work).  When it comes down to narrowing down ideas, keep your ego in check.  It's not always easy to have your ideas shot down; keep them for another time or forget about them completely.  Just be ready to move on with the project, it will need your buy-in.  &lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Do your research&lt;/span&gt;&lt;br /&gt;Over the years,  I've created many games that was never truly finished, some new ideas and quite a few clones.  In 1998, I created a 3D tetris using Java and VRML as the rendering engine.  I was very proud of myself for creating this somewhat original idea.  Later I found out that Blockout existed for almost 10 years prior than my version.  Humph, but it wasn't running in a browser now could it?  There's nothing wrong with making a clone, but it would be really nice to know that's what you are making.   For working on the IPhone, I personally use &lt;a href="http://appshopper.com/"&gt;AppShopper&lt;/a&gt; to see if what I want to make already exist in some form or another.  If you decide to continue, you should know the price point of your competition and what feature you can include that will differentiate yourself from them.  So be ready to buy someone else's game/software.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Flush out the design&lt;/span&gt;&lt;br /&gt;Make sure you understand what it is that you are creating.  Once that's done, make sure you can give a document to someone else so that she can understand it also.  I'm not saying that things won't be changing throughout the life cycle of the project, but that's ok, you can change the document as you are going through the development process.  Just remember that the latter you change things, the more work you'll need to redo.  Changing zombies to ninja will require a lot of remodeling and texturing and animations (unless they are zombie ninjas?).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Prototype&lt;/span&gt;&lt;br /&gt;Awesome, you got your great idea!  Now what?  Well, with any projects (game or application software), the first thing  you need to do is to create a risk list and provide solution for them.  Most likely, the solution will come in form of prototypes.  Prototyping doesn't necessarily mean creating a program in this case.  If you came up with a card game idea, you can always play it with real deck before writing any line of code.  If you do some kind of manual prototype, be wary of how it will port to the target platform.  Not to long ago, my father, who is an avid game maker (puzzles), came to me with a few new puzzles to see if any of them would fit the IPhone platform.  We played a few hands with cutout card boards of one of the puzzles and the game was fun and fast enough, but there was many times when neither of us could make any moves.  So we had to pick another piece and skip.  This happens very fast when you are playing on a table, but I'm not sure how it would have transfered on the IPhone.  I think the pacing would have been a bit wrong.  So it might be that the game needs a bit of tweaking before it's ready for the IPhone, but it makes a very fun puzzle game nonetheless.&lt;br /&gt;&lt;br /&gt;I'm currently making a board game for the IPhone.  Because my board was going to be a certain size, I knew the squares of the board were going to be too small to be easily picked by anyone with fat fingers.  So what's the first thing I did?  That's right, I prototyped a board to test how I could resolve this.  No fancy graphic, and no picking as of  yet, but I did create what I think is a solution to my problem.  I'm still not sure my current solution will be my final approach, but my top risk as at least been mitigated and I can move on to my next biggest risk.  The next risk isn't actually a technical risk, but more of a design risk because of how the AppStore works.  How do I provide a free version of the game that leaves the player wanting more?  It seems like you need to provide a free version of the game to be on the map on the AppStore.  I understand why, I just wish that there was a better way to go about it then to write a slightly different application.  Unfortunately, the AppStore doesn't allow time based trial or anything of the sort.  I'm afraid that a simple prototype might not do here, so I'm looking at it from a game design and architectural design instead.  If I can identify game design aspect that I think I can play with, then I can design the application to enable certain hooks that can disable or enable different game type (for example), depending on what version I'm compiling.  What I want to minimize is to have 2 different code branches.  I'll keep you updated on how this will progress.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9209316572052154923-3250326392560597012?l=shadhex.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shadhex.blogspot.com/feeds/3250326392560597012/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://shadhex.blogspot.com/2009/03/how-do-i-start-and-complete-new-game.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9209316572052154923/posts/default/3250326392560597012'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9209316572052154923/posts/default/3250326392560597012'/><link rel='alternate' type='text/html' href='http://shadhex.blogspot.com/2009/03/how-do-i-start-and-complete-new-game.html' title='How do I start and complete a new game?'/><author><name>Shadhex</name><uri>http://www.blogger.com/profile/12001354316575213124</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://4.bp.blogspot.com/_mSTDo6Y7p-c/Snt1GmPUoBI/AAAAAAAAADw/kZwMlIi9WJc/S220/mebynick.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9209316572052154923.post-7123361713036061650</id><published>2009-02-28T18:26:00.000-08:00</published><updated>2009-02-28T19:16:43.880-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Process'/><title type='text'>Big vs Small</title><content type='html'>During day time, I work for a rather large company.  When I'm done work and finally get home, I have a few hours of play with the family and then move on to work for myself.  The difference between working for a Big Company and for yourself is extreme.  The company I work for employs about 400 people or so.  There's multitudes of games being developed in parallel for many markets, all with their different rules and regulations.  We have game designers, artists, programmers, QA, integration engineers and delivery managers (this is equivalent of a producer).  Add to that managers for each of those groups and probably managers to manage them and you got lots of people working on intertwined projects.&lt;br /&gt;&lt;br /&gt;Then I come home, and I'm the manager, designer, programmer, QA and on some occasion, artists *shudder*.  That last role is a bit scary...I have no artistic bones in my body except for a bit of photography.&lt;br /&gt;&lt;br /&gt;I don't mind day time work; sometimes I can truly find a lot of fun in it.  After I'm done filling all my TPS reports that is.  I find the overhead of doing things when you are in big groups a bit frustrating.  Things are normally very simple, but put a simple problem in a large group and all of a sudden, it becomes really complicated.  Politics, egos they don't really play a big role when you are developing by yourself.&lt;br /&gt;&lt;br /&gt;Deadlines are probably some of the most frustrating element to deal with.  Everyone has deadline.  They are part of the software industry, it doesn't matter if you are on the gaming side, or the application side.  If you have a client, you will have a deadline.  As frustrating as deadline can be, they are a necessary evil in the software cycle.  I've read once that if you give two equally bright programmers the same task, give a 1 week deadline to the first and a 2 weeks deadline to the second and they will most likely take the exact amount given to them to finish the task.  I believe it.  I've seen people take 1 day to do an hour job.  Mainly because a task is never schedule for less than a day on a schedule.&lt;br /&gt;&lt;br /&gt;What I don't like from deadlines is that they are more often etched in stone by sales department or middle management than by those doing the work.  So if the date can't move, that's ok right, we can always throw out some features?  Nope, they are etched on the other side of that same stone.  So what gives?  Personal time and quality of work is normally what goes first.&lt;br /&gt;&lt;br /&gt;In my own personal projects, I try as much as possible to impose deadlines on myself.  If I do come close to a deadline that I know I can't meet, I might put a bit more of my personal time in the project (but hey, it's all personal time right?) but I will also cut features if I need.  As you can read in my post for my first &lt;a href="http://shadhex.blogspot.com/2009/01/my-first-iphone-application-is-done.html"&gt;AppStore Application&lt;/a&gt;, I had a very real deadline and had a long enough feature list.  When I started planning in January, I had a mini game planned for it, although I knew it would be almost impossible to finish on time (I was just too new to Iphone development).  So I cut the mini game, I also cut on some needless features. All in all, I finished about half a week ahead of schedule but I rather have more time than not enough.  I really didn't know if my app was going to make it through the appstore review in one piece and I'd rather have more time to fix and re-submit than not enough.&lt;br /&gt;&lt;br /&gt;I just recently did an estimation on a project I might be moonlighting on(if we get the contract).  I normally estimate tasks, not entire projects.  I have to say, it's not easy and I don't particularly like it.  I've given an estimate that I think will be as accurate as possible given the current knowledge I have of the project.  I added time for defect cycles in there for good measures.  We'll have to wait and see if the project is approved and what our deadlines will be.  Regardless, I think it will be interesting to see how our team of two compares to a team of 20.  I bet, that our schedule will hold up better, but it certainly doesn't mean that I can do a schedule to manage 20 people.  I probably would fail, like everyone else I know.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9209316572052154923-7123361713036061650?l=shadhex.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shadhex.blogspot.com/feeds/7123361713036061650/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://shadhex.blogspot.com/2009/02/big-vs-small.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9209316572052154923/posts/default/7123361713036061650'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9209316572052154923/posts/default/7123361713036061650'/><link rel='alternate' type='text/html' href='http://shadhex.blogspot.com/2009/02/big-vs-small.html' title='Big vs Small'/><author><name>Shadhex</name><uri>http://www.blogger.com/profile/12001354316575213124</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://4.bp.blogspot.com/_mSTDo6Y7p-c/Snt1GmPUoBI/AAAAAAAAADw/kZwMlIi9WJc/S220/mebynick.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9209316572052154923.post-8327042418588878376</id><published>2009-02-22T17:26:00.000-08:00</published><updated>2009-02-23T16:05:46.446-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><title type='text'>Using an off the shelf engine or build one yourself?</title><content type='html'>When doing games, this is a question that you will come across over and over again.  I've went through the pains of writing a 3D engine and a physics engine a few years back.  I never used it in any of my own games, but it was a blast to work through all the different problems, and there was many problems.&lt;br /&gt;&lt;br /&gt;One of the biggest problems to coming up with your own 3D engine is a general lack of direction if you don't tie it to a specific project.  Aimlessly doing an engine with no goals is not necessarily a bad things.  Just make sure you understand what is your own personal objectives of the project.  If you want to learn, then this great way to go about it.  If you want to build an engine that you'll be able to use on all of your future projects, then I'm afraid you'll probably fail.  I'm not attacking your own skills or dedication.  The problem is that it takes a lot of time to create a generic 3D engine that can be used by multiple projects.  By the time that you get finished a couple of projects with a successful engine, you will probably need to provide an update for it.  That time could be much better spent on an actual game.  Before creating your own engine, ask yourself what you want out of it.  If what you want is to create a game and not the engine itself, then chose an existing engine that will cover your need.  &lt;br /&gt;&lt;br /&gt;So what are the engine of choice?  It really depends at what level you are working at I guess.  The only professional engine I've worked with was Gamebryo, so I can't compare it to Unreal or any of the other engines out there.  On the free side, I've worked with &lt;a href="http://irrlicht.sourceforge.net/"&gt;Irrlicht&lt;/a&gt; and &lt;a href="http://www.ogre3d.org/"&gt;Ogre3d&lt;/a&gt;.  I have a preference toward Ogre since I find the user base larger and more active.  There also seems to be more updates on the Ogre engine itself.  Although I have to say I was pretty impressed with Irrlicht software renderer.&lt;br /&gt;&lt;br /&gt;Wait a minute, this is an IPhone blog.  Well, it turns out that at this time, there's no Irrlicht or Ogre port for the IPhone.  Although I've thought long and hard about porting Ogre to the IPhone myself, I've decided that my time would be better spent on working on a game instead.  So, what engines can we use on the IPhone?  Well, if what you want to do is 2D, then I would suggest a look at &lt;a href="http://code.google.com/p/cocos2d-iphone/"&gt;Cocos2D for the IPhone&lt;/a&gt;.  This is the engine I'm currently working with and I have to say that I am pleasantly surprised.  One thing to note is that it is completely written using Objective-C, which I'm still not completely familiar with at this time.  Although looking through the code of the engine, I have a much better appreciation for the language than I did when I started.  I just hope that I can get to a point where the code I write in Objective-c  just rolls out as easily as C# or C++/STL/Boost.  Another alternative if you want to build 3D games would be &lt;a href="http://code.google.com/p/oolongengine/"&gt;Oolongengine&lt;/a&gt; (doesn't roll of the tongue quite right).  I've personally haven't used it yet.  It uses mainly C++ with some help from Objective-C for gluing the whole thing together on the IPhone SDK.  A person of interest working on this would be Wolfgang Engel, who I believe had started (don't quote me on that) gameversity.com (I attended some class there) a while back and also who is the editor for the Shader X series of books.  A personal favorite series of mine along with Game Programming Gems.&lt;br /&gt;&lt;br /&gt;Do I regret working on my own engine for the better part of a year?  Absolutely not, beside learning a few things of myself, I now understand other peoples engine much easier.  Also it's normally not too complicated for me to go and change the engine if there is something that doesn't work the way I like or if there's a defect.  For example, I had to rewrite quite a bit of code in the Gamebryo engine to make it work on Linux.  It was a challenge, but it was well worth it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9209316572052154923-8327042418588878376?l=shadhex.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shadhex.blogspot.com/feeds/8327042418588878376/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://shadhex.blogspot.com/2009/02/using-off-shelf-engine-or-build-one.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9209316572052154923/posts/default/8327042418588878376'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9209316572052154923/posts/default/8327042418588878376'/><link rel='alternate' type='text/html' href='http://shadhex.blogspot.com/2009/02/using-off-shelf-engine-or-build-one.html' title='Using an off the shelf engine or build one yourself?'/><author><name>Shadhex</name><uri>http://www.blogger.com/profile/12001354316575213124</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://4.bp.blogspot.com/_mSTDo6Y7p-c/Snt1GmPUoBI/AAAAAAAAADw/kZwMlIi9WJc/S220/mebynick.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9209316572052154923.post-7217983422546982529</id><published>2009-02-08T14:26:00.000-08:00</published><updated>2009-02-08T15:01:45.569-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><title type='text'>Why use a Software Configuration Management system?</title><content type='html'>&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_mSTDo6Y7p-c/SY9fbfensnI/AAAAAAAAADY/Gl5ghb6ePWw/s1600-h/workspace.jpg"&gt;&lt;/a&gt;&lt;br /&gt;&lt;span class="Apple-style-span"   style="color: rgb(51, 51, 51);   font-family:'Trebuchet MS';font-size:13px;"&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Helvetica; color: rgb(51, 51, 51); "&gt;&lt;span style="letter-spacing: 0px; "&gt;&lt;b&gt;&lt;span class="Apple-tab-span" style="white-space: pre; "&gt; &lt;/span&gt;&lt;/b&gt;It’s not just about saving our code somewhere in a generalized place so that it is easily backup.  It’s not only for being able to work with someone else on the same piece of code.  When used from home, it’s main used is to keep you sane!  You will probably be the only person who will be accessing your SCM at home, but it doesn’t make it less useful.  Have you ever thought, “Oh, I wonder how the code would work if I’d changed this”?  Whenever you have a working version of a software and that you ask yourself that question, which might break working code for a few hours, you need a SCM.  This will allow you to have a source directory structure that works at one particular time.  If you are about to make major changes to a working product, check in your current progress and label it if it’s needed.  You can then do major changes and if you don’t like it, come back to your original changes, guaranteed.  Also, if you work on a few days and think you have introduced a bug, you can do diff on your files to see where the bug might have crept in.  There isn’t a day that go buy where I work on code that I don’t use a SCM, it’s that useful!&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Helvetica; min-height: 14px; color: rgb(51, 51, 51); "&gt;&lt;span style="letter-spacing: 0px; "&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Helvetica; color: rgb(51, 51, 51); "&gt;&lt;span style="letter-spacing: 0px; "&gt;&lt;span class="Apple-tab-span" style="white-space: pre; "&gt; &lt;/span&gt;I do not know how many people do not use SCM when coding from home, I’m guessing most probably don’t, especially if the programming is more informal rather than professional in nature.   If it’s professional and linked to any delivery, then I hope you do have a SCM working for you.  I would also invest in a local backup system for that SCM and look at an offsite backup system for that rare case if your house burns down. I’ve already told my wife, “You grab the baby, I grab the &lt;a href="http://synology.com/" style="font-weight: bold; color: rgb(51, 102, 204); "&gt;&lt;span style="text-decoration: underline; "&gt;Synology&lt;/span&gt;&lt;/a&gt; server and we meet at the front of the house”.  I don’t have an offsite backup, but I might be looking into this year if my moonlighting work requires it.&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Helvetica; min-height: 14px; color: rgb(51, 51, 51); "&gt;&lt;span style="letter-spacing: 0px; "&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Helvetica; color: rgb(51, 51, 51); "&gt;&lt;span style="letter-spacing: 0px; "&gt;&lt;span class="Apple-tab-span" style="white-space: pre; "&gt; &lt;/span&gt;For those of you that don’t have a backup solution, this article is for you.  We’ll try to setup a Perforce SCM solution.  I have been using a Perforce client on my Windows PC for many years now.  We’ve also used Perforce in combination with Jira, which is a bit more process driven.  In my work environment, I can’t checked in a change list without have first written a Jira issue describing in details why I’m doing the check in.  In a home environment, we’ll probably very rarely need such an elaborate process.  You might still use a bug tracking tool, but if you are one or two developer, it will probably not require you to have it tied to your SCM.  If you have the patience for it, great, but in my experience, it would add too much overhead for the work I personally do at home.&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Helvetica; min-height: 14px; color: rgb(51, 51, 51); "&gt;&lt;span style="letter-spacing: 0px; "&gt;&lt;span class="Apple-tab-span" style="white-space: pre; "&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Helvetica; color: rgb(51, 51, 51); "&gt;&lt;span style="letter-spacing: 0px; "&gt;&lt;span class="Apple-tab-span" style="white-space: pre; "&gt; &lt;/span&gt;Because I already use Perforce at work and at home, I’m going to describe how to do a similar setup, but for Mac OS X.  First thing we will do is to download a few tools from the &lt;a href="http://perforce.com/perforce/downloads/index.html" style="font-weight: bold; color: rgb(51, 102, 204); "&gt;&lt;span style="text-decoration: underline; "&gt;Perforce Web Site&lt;/span&gt;&lt;/a&gt;.  Once here I download the Macintosh version of the visual client P4V, the command line tool P4 and the server P4D.&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_mSTDo6Y7p-c/SY9eqNkbX4I/AAAAAAAAADQ/aeJyP9SJP64/s1600-h/visualclient.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 115px;" src="http://1.bp.blogspot.com/_mSTDo6Y7p-c/SY9eqNkbX4I/AAAAAAAAADQ/aeJyP9SJP64/s400/visualclient.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5300559365728329602" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_mSTDo6Y7p-c/SY9epwFrHvI/AAAAAAAAADI/OVsBC64wtTs/s1600-h/server.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 116px;" src="http://4.bp.blogspot.com/_mSTDo6Y7p-c/SY9epwFrHvI/AAAAAAAAADI/OVsBC64wtTs/s400/server.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5300559357814710002" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 115px;" src="http://3.bp.blogspot.com/_mSTDo6Y7p-c/SY9epljHEwI/AAAAAAAAAC4/bBLvTI-Ku6g/s400/commandline.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5300559354985386754" /&gt;&lt;span class="Apple-style-span"   style="color: rgb(51, 51, 51);   font-family:'Trebuchet MS';font-size:13px;"&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Helvetica; color: rgb(51, 51, 51); "&gt;&lt;span style="letter-spacing: 0px; "&gt;&lt;b&gt;Installation&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Helvetica; min-height: 14px; color: rgb(51, 51, 51); "&gt;&lt;span style="letter-spacing: 0px; "&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Helvetica; color: rgb(51, 51, 51); "&gt;&lt;span style="letter-spacing: 0px; "&gt;&lt;b&gt;&lt;span class="Apple-tab-span" style="white-space: pre; "&gt; &lt;/span&gt;&lt;/b&gt;Once you have everything downloaded, then comes time for the install.  First thing to do is to move the file downloaded to some useful directory.  I’ve created a Perforce folder under Applications to which I then moved my p4v.dmg, p4 and my p4d file.  Once moved, you will probably need to use Terminal to go to that directory and make the p4d file and executable file.  Go to which ever directory you put your files in and execute chmod +x p4d, do the same for the p4 file.  You might want to move the p4 file in a more useful directory, which would be under $PATH.  The reason is that we want to be able to start this program from any directory that we would be working .  /usr/bin might be a good choice, so lets move it into there.   Go in your download directory using terminal and once you are in the correct folder, move the p4 file using the command mv p4 /usr/local/bin.  Hmm, did that not work?  Protected directory you say?  Instead try sudo mv p4 /usr/bin, this runs the same command, but as a root user which is needed to access certain directory.&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Helvetica; min-height: 14px; color: rgb(51, 51, 51); "&gt;&lt;span style="letter-spacing: 0px; "&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Helvetica; color: rgb(51, 51, 51); "&gt;&lt;span style="letter-spacing: 0px; "&gt;&lt;b&gt;Running&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Helvetica; min-height: 14px; color: rgb(51, 51, 51); "&gt;&lt;span style="letter-spacing: 0px; "&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Helvetica; color: rgb(51, 51, 51); "&gt;&lt;span style="letter-spacing: 0px; "&gt;&lt;span class="Apple-tab-span" style="white-space: pre; "&gt; &lt;/span&gt;Now that everything is installed, let’s try running the visual client, P4V.  Go into the applications directory where you installed the P4V.dmg file and click on it.  You’ll see a p4Merge and a p4v in the mount.  Let’s copy those directly in the applications folder we created instead of keeping them in the dmg file.  Now run p4v and you should see something like:&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_mSTDo6Y7p-c/SY9epiECc5I/AAAAAAAAADA/sg0UqHVc8K4/s1600-h/OpenConnection.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 166px;" src="http://2.bp.blogspot.com/_mSTDo6Y7p-c/SY9epiECc5I/AAAAAAAAADA/sg0UqHVc8K4/s400/OpenConnection.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5300559354049754002" /&gt;&lt;br /&gt;&lt;/a&gt;&lt;div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 238); text-decoration: underline;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span"   style="color: rgb(51, 51, 51);   font-weight: bold; font-family:Helvetica;font-size:12px;"&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Helvetica; color: rgb(51, 51, 51); "&gt;&lt;span style="letter-spacing: 0px; "&gt;&lt;span class="Apple-tab-span" style="white-space: pre; "&gt; &lt;/span&gt;Maybe the 1666 is instead a $P4PORT environment variable, but it will be something close to this screen in either case.  Because perforce isn’t a known host, we’ll go ahead and changed this to localhost or 127.0.0.1, either should work.  For the port, you can either hardcode it to something specific like 1666 or use their environment variable and set it something similar (1666 is the default set by Perforce).&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Helvetica; min-height: 14px; color: rgb(51, 51, 51); "&gt;&lt;span style="letter-spacing: 0px; "&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Helvetica; color: rgb(51, 51, 51); "&gt;&lt;span style="letter-spacing: 0px; "&gt;&lt;span class="Apple-tab-span" style="white-space: pre; "&gt; &lt;/span&gt;Before we can go forward here, we’ll need to start the Perforce Server.  On my Windows installation, I did not need to install a perforce server since I could just us the filesystem directly instead.  This doesn’t seem possible with the Mac version.  To start the Perforce server, navigate to where you installed the p4d file using Terminal and the simplest way to start the server is by calling simply ./p4d.  If you want to use a different port than the default, you would need to use the -p flag and specify the port as such: ./p4d -p 2666.  If you want to be able to launch the process in the background and forget about it, you can append a &amp;amp; character at the end of the command line.&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Helvetica; color: rgb(51, 51, 51); "&gt;&lt;span style="letter-spacing: 0px; "&gt;&lt;span class="Apple-tab-span" style="white-space: pre; "&gt; &lt;/span&gt;One thing that you should know about launching the server in this way is that it will create all the file necessary to run the Perforce SCM under the root directory.  So make sure that you are ready to have your file saved in this directory before you proceed.  If you do want to change the root directory of the server, you can either provide a -r followed by the directory path you do want to use, or create an environment variable named P4ROOT that does the same.  On my own setup, once I’m finally done, my command line looks something like ./p4d -p 1666 -r ~/Documents/Perforce/&amp;amp;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Helvetica; min-height: 14px; color: rgb(51, 51, 51); "&gt;&lt;span style="letter-spacing: 0px; "&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Helvetica; color: rgb(51, 51, 51); "&gt;&lt;span style="letter-spacing: 0px; "&gt;&lt;span class="Apple-tab-span" style="white-space: pre; "&gt; &lt;/span&gt;As you can see, I created another Perforce directory under my ~/Documents folder.  This will be easier for me when I will be doing backup, since I might not normally backup my Applications folder, but I do backup my Documents folder.&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Helvetica; min-height: 14px; color: rgb(51, 51, 51); "&gt;&lt;span style="letter-spacing: 0px; "&gt;&lt;span class="Apple-tab-span" style="white-space: pre; "&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Helvetica; color: rgb(51, 51, 51); "&gt;&lt;span style="letter-spacing: 0px; "&gt;&lt;span class="Apple-tab-span" style="white-space: pre; "&gt; &lt;/span&gt;With the server launched and ready, we should be able to create our own user!  In the p4v application we launched earlier, we can see a User field, click the New button on the right of it.  This will ask you to fill in your user name, full name, password (although optional) and email. Once you have filled all this information, you then need to fill in a workspace if you need one.&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 238); "&gt;&lt;img src="http://2.bp.blogspot.com/_mSTDo6Y7p-c/SY9fbfensnI/AAAAAAAAADY/Gl5ghb6ePWw/s400/workspace.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5300560212349399666" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 400px; height: 314px; " /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span class="Apple-style-span"   style="color: rgb(51, 51, 51);   font-family:Helvetica;font-size:12px;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre; "&gt; &lt;/span&gt;The Root folder of your workspace should be somewhere under the root directory structure that we started the server with.  Which in my case was the ~/Documents/Perforce.  So in that directory, I created a directory workspace and now my Workspace dum points to that directory.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span class="Apple-style-span"   style="color: rgb(51, 51, 51);  font-family:Helvetica;font-size:12px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: Helvetica; font-size: 48px;"&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: Georgia; font-size: 16px; "&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_mSTDo6Y7p-c/SY9g0i8UDkI/AAAAAAAAADg/XWu7Avqju8Q/s1600-h/perforce.jpg"&gt;&lt;img src="http://4.bp.blogspot.com/_mSTDo6Y7p-c/SY9g0i8UDkI/AAAAAAAAADg/XWu7Avqju8Q/s400/perforce.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5300561742287605314" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 400px; height: 323px; " /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: 'Trebuchet MS'; font-size: 13px; "&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Helvetica; color: rgb(51, 51, 51); "&gt;&lt;span style="letter-spacing: 0px; "&gt;&lt;span class="Apple-tab-span" style="white-space: pre; "&gt; &lt;/span&gt;Here is p4v, started and ready to go.  You can now drop files under that directory and submit them, you can then revert, compare, check out and check in all of your source file for greater control over your home project, little or big.&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Helvetica; color: rgb(51, 51, 51); "&gt;&lt;span style="letter-spacing: 0px; "&gt;&lt;span class="Apple-tab-span" style="white-space: pre; "&gt; &lt;/span&gt;Next time we’ll look at the integration with XCode&lt;/span&gt;&lt;/p&gt;&lt;/span&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/9209316572052154923-7217983422546982529?l=shadhex.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shadhex.blogspot.com/feeds/7217983422546982529/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://shadhex.blogspot.com/2009/02/why-use-software-configuration.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9209316572052154923/posts/default/7217983422546982529'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9209316572052154923/posts/default/7217983422546982529'/><link rel='alternate' type='text/html' href='http://shadhex.blogspot.com/2009/02/why-use-software-configuration.html' title='Why use a Software Configuration Management system?'/><author><name>Shadhex</name><uri>http://www.blogger.com/profile/12001354316575213124</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://4.bp.blogspot.com/_mSTDo6Y7p-c/Snt1GmPUoBI/AAAAAAAAADw/kZwMlIi9WJc/S220/mebynick.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_mSTDo6Y7p-c/SY9eqNkbX4I/AAAAAAAAADQ/aeJyP9SJP64/s72-c/visualclient.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9209316572052154923.post-1871903560143416470</id><published>2009-01-29T17:28:00.000-08:00</published><updated>2009-01-29T19:18:07.390-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><title type='text'>My First IPhone Application is Done: Valentine Tips</title><content type='html'>&lt;p style="margin-bottom: 0in;"&gt;When I started programming with the IPhone SDK, I promised myself that I would come out with a program as quickly as possible.  The reasoning behind my Mac Book Pro purchased was that I COULD use it to start programming application for the AppStore and make a bit of money on the side.  Now the real reason behind my purchase had a lot more to do with the my morbid curiosity of the unknown.  I was quite happy in my little Windows world, but I was always wondering what I was missing by not having a Mac.  After speaking to many converts, who all preferred Mac OS X over Windows Vista, the temptation was just too strong to resist.  So I came up with this plan of buying a MacBook Pro (since I needed a stronger laptop anyway), and it would pay itself by me releasing a few applications on the AppStore.  I knew that I might have been lying to myself at the time, so I really wanted to prove myself wrong.&lt;br /&gt;&lt;br /&gt;So after getting my MacBook Pro, the first thing I downloaded was the IPhone SDK and I started programming right away.  I basically came up with a few pages of different applications that I would have loved to code on the IPhone and then did some research of what already existed out there so as not to create redundant offering.  I was devastated when I saw Labyrinth!  I had a wooden Labyrinth game as a kid and I thought that the IPhone would be a great medium for this game.  Someone beat me to it and made a terrific implementation.  If you haven't tried it, I highly recommend you at least try the “lite” version.  Although this would certainly not have been my first try at an application, I had to scratch it off my list.&lt;/p&gt;  &lt;p style="margin-bottom: 0in;"&gt;A few years ago, I was young and stupid (I'm not young anymore).  To make a long story short, I completely forgot about Valentine's Day and I played EQ till the middle of the night.  When I finally finished playing, my girlfriend (at the time) had place a Valentine's Day card at the door of my computer room.  Man, did I ever feel bad.  So my goal here was to never let this kind of accident happen to anyone else!  So my solution to this was to make a simple application that would keep track of how many days was left before Valentine's Day, but this alone isn't all that useful.  So I also included tips that would get release throughout the countdown to Valentine's Day.  So you'll get tips from February 1&lt;sup&gt;st&lt;/sup&gt; all the way down to February14th.  The tips would apply for girls, guys, new couples, old couples and even some for singles.&lt;/p&gt;  &lt;p style="margin-bottom: 0in;"&gt;So what did I learn making this first application.  Mainly, that I still have lots to learn.  This application took me at least 5 times what it would have taken me to do in Windows using either C++ or C#.  Another thing that would have went faster if I didn't try to over complicate things was the rotation aspect of the IPhone.  My first implementation allowed for portrait and landscape mode.  I added absolutely no benefit to the application, but made the code more complicated than needed and created bugs for me to track.  There's one bug I couldn't track down, with the rotation of the UITableView that didn't come back to the right area that I decided to drop it.  I would have saved myself a few hours of work if it wasn't for me trying to be fancy on a feature that was somewhat worthless.  It was good that I learned about the subject, but a better approach would have been to do it in something that didn't have a set deadline.&lt;/p&gt;  &lt;p style="margin-bottom: 0in;"&gt;I am getting used to Objective-C and Cocoa, but as soon as I'll do a more serious application, I'll probably drop them in favor of C++.  I'll keep using Cocoa for interfaces and input, but I'll probably be using Opengl ES for doing most of my rendering.  I find a lot of my time is spent on trying to figure out how to do certain things in Cocoa framework instead of just doing it.  What's funny is that my programming and design are really suffering because of this.  I'm not sure if it's because I have to consciously think about every little details where as normally it would just flow and come naturally, but looking back at my design and code, I have to say that I'm not impressed.  I always pride myself with having somewhat readable code and good design in my programs, but for how small this program is, it's actually quite ugly.  I've finally received my copy of Programming Objective-C 2.0 and I'm hoping that my skill level with the language gets much better soon (I'm about halfway through and learned quite a few things already).&lt;/p&gt;  &lt;p style="margin-bottom: 0in;"&gt;Another thing that I learn is that you can't use your IPhone Developer provision to release a product on the Appstore.  I was completely ready to submit my application and I got an error when uploading it.  Something along the line of “This application doesn't have a distribution provision supplied”.  It took me another 3-4 hours to get that setup before I could resubmit a proper version.  Now that I went through the process once, it should be easier next time.&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0in;"&gt;The application can be downloaded &lt;a href="http://ax.itunes.apple.com/WebObjects/MZStore.woa/wa/browserRedirect?url=itms%253A%252F%252Fitunes.apple.com%252FWebObjects%252FMZStore.woa%252Fwa%252FviewSoftware%253Fid%253D303374013%2526mt%253D8%2526partnerId%253D30%2526siteID%253DZN9gq8faaD4-CPPJDbImmd8UF0bNleY01Q"&gt;here&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9209316572052154923-1871903560143416470?l=shadhex.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shadhex.blogspot.com/feeds/1871903560143416470/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://shadhex.blogspot.com/2009/01/my-first-iphone-application-is-done.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9209316572052154923/posts/default/1871903560143416470'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9209316572052154923/posts/default/1871903560143416470'/><link rel='alternate' type='text/html' href='http://shadhex.blogspot.com/2009/01/my-first-iphone-application-is-done.html' title='My First IPhone Application is Done: Valentine Tips'/><author><name>Shadhex</name><uri>http://www.blogger.com/profile/12001354316575213124</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://4.bp.blogspot.com/_mSTDo6Y7p-c/Snt1GmPUoBI/AAAAAAAAADw/kZwMlIi9WJc/S220/mebynick.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9209316572052154923.post-29915603883648778</id><published>2009-01-08T17:11:00.000-08:00</published><updated>2009-01-08T18:43:39.442-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><title type='text'>IPhone Programming, where to start?</title><content type='html'>During my Christmas vacation, I decided that I will learn Iphone programming.  As soon as I finished ordering my Mac, I was on the Internet to try and find literature about this new development platform.  Sometime it's good when there aren't that many choices of books on a subject, and in the case of Iphone programming, there really isn't that many books available. As long as their some good choices (anyone ever seen a good Direct X book?  I haven't) then having little choices makes shopping much easier and faster.    It really doesn't take me long to see if I'm going to like a book, you can learn a lot from the content pages, the intro and the index, readily available on Amazon.  Most people agreed, "Beginning IPhone Development" was one of the better books to start learning IPhone programming.  &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;But wait a minute, I need to learn Objective-C also? And Cocoa?  This is slightly more complicate than I first thought.  I certainly don't back down from a challenge so I ordered another book for Cocoa, "Cocoa programming for Mac OS X".  It was rather well reviewed and seems like the goto book for this framework.  Objective-C was a bit more complicated because the book of choice "Programing in Objective-C" by Stephen Kochan is between edition right now.  I would love to get the book as fast as possible, but there was going to be a new release in only 2 weeks!  Surely I could do without having a book on the subject till then.  So I decided to pre-order the "version 2.0" and wait on this book a little while longer.  I received an email today that I should be expecting it by mid to end of February. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So far, I've read through the Beginning IPhone Development and I've really enjoyed it.  The syntax (Objective-C) is really really getting on my nerve, but more on that later.  I haven't had the need to read the Cocoa book, and I quickly noticed that the IPhone framework although similar is not the same as the Mac OS X programming.  By browsing quickly, I can see that there are things that would be useful for me, but these are normally already well covered by the Beginning IPhone Development book.  If your interest is with IPhone programming, I probably wouldn't get the Cocoa book if you are on a budget.&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;Objective-C&lt;/span&gt;&lt;/div&gt;&lt;div&gt;The IPhone programming book does NOT teach you anything about Objective-C, but it's a good thing.  I hate swiss army knife type books.  If I knew Objective-C well, having a book on IPhone development explain it to me would slow me down with learning what I actually want to learn: IPhone programming.  It would also just do a mediocre job at covering Objective-C compared to a purely Objective-C book.  So many books go down this road and it always annoys me (Appendix are alright).  Kudos on not making this mistake.  Unfortunately I do not know Objective-C, but thankfully the book points you to an online resource that does a great job at covering the basic of the language.  You'll need to register with the &lt;a href="http://developer.apple.com/iphone/"&gt;IPhone Dev Center&lt;/a&gt;, there you will find many resources here that will be absolutely necessary for learning IPhone development quickly. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I'm normally really quick at picking up new language, the last language I had to learn was C#.  I started and finished "Programming in C#" by Jesse Liberty  on a transatlantic flight over to Europe.  Alright, so it was the first edition and it was slimmer than the current version but nonetheless I was very impressed at how intuitive the language and the environment was.  C# is now the first language I turn to as soon as I have to do any tools.  I also looked at using it for games, unfortunately the support for XNA isn't great for the casual market.  The Visual Studio IDE with C# is top notch when developing user interface, I've never seen a better application for doing GUI development.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Objective-C is no C#!!!  The language feels quite archaic and the Cocoa framework is nowhere as clear as .Net when it comes to naming convention.   I was very surprised by XCode though, I actually find it very good for the most part.  Code Sense is a bit inferior to Intellisense but I was just happy to have something that works!  As I previously mentioned in an earlier post, I love to be able to switch between header and cpp file with a hotkey.  Maybe this is now available in 2008, which I haven't switch to yet, but 2005 only allows the Go to header and in 2003 you don't even have that luxury.  Instead I believe I use &lt;a href="http://www.codeproject.com/KB/macros/kingstools.aspx"&gt;King Tools&lt;/a&gt; to be able to have this functionality. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;As much as I really like XCode, Interface Builder is a major FAIL in my book.  It reminds me of the old MFC, if I can ding Beginning IPhone programming in only one way is that the authors alludes that this approach is better than generated code. My first annoyance with it is that it's not really integrated in XCode, which makes my environment a mess.  After clicking on a few nib files, I'm forever trying to find the interface that I need to work with.  Thank god for Expose!!  If I could change one thing, this would be it.  Find a way to integrate it into XCode, I want it to go away when I close my project and open another project.  In one instance I had made a copy of a project that I had so I could make some non-destructive changes.  To make sure I didn't mistake one project for another, I closed down XCode but forgot to closed down Interface Builder because it was residing in another space.  Next thing I know I'm modifying the right project, but the wrong interface....grrr.  I'm not sure how often someone would need the Interface Builder up without having the XCode running.  Maybe this is useful for some people and that they now have it part of their workflow.  I just don't see it working for me right now.  Another thing that really annoys me with Interface Builder is that when it comes to programming, I hate magic.  I want to understand how things happen and in C# I know exactly what is happening because I see the code.  I know that I can enter the same code manually and get the same result.  In Interface Builder, I believe the nib is serialized data that does these connections for you.  Because of this, my learning is much slower.  How I register callback functions for my actions?  How do I create a new GUI element programatically.  I can do a bit of digging and figure these out, but because it's not in my face all the time it takes much longer. I'm also always more comfortable looking at code to see if everything is setup right.  Now I have to check my code, then change application and check if everything in Interface Builder also is correct.  I'll get use to it, but I'll never like it like I like C#.  Maybe the comparison to MFC is a bit harsh though :)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;As you might have realized from my previous paragraph, I do not currently have any version control system.  I have perforce on my windows machine and I really like it.  I might have to check to see if I can't setup some kind of CVS system on my Synology backup system.  This would be the best approach for me since I could share code base easily between all my OS.  I installed GIT quickly but really haven't played with it.  If anyone has suggestion please fire away.  I need to set something up sooner rather than later.  Time Machine is alright, but it won't replace a good configuration management system. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Well, back to the grind...&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/9209316572052154923-29915603883648778?l=shadhex.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shadhex.blogspot.com/feeds/29915603883648778/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://shadhex.blogspot.com/2009/01/iphone-programming-where-to-start.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9209316572052154923/posts/default/29915603883648778'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9209316572052154923/posts/default/29915603883648778'/><link rel='alternate' type='text/html' href='http://shadhex.blogspot.com/2009/01/iphone-programming-where-to-start.html' title='IPhone Programming, where to start?'/><author><name>Shadhex</name><uri>http://www.blogger.com/profile/12001354316575213124</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://4.bp.blogspot.com/_mSTDo6Y7p-c/Snt1GmPUoBI/AAAAAAAAADw/kZwMlIi9WJc/S220/mebynick.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9209316572052154923.post-214101389893573309</id><published>2008-12-31T12:02:00.000-08:00</published><updated>2008-12-31T15:12:37.567-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Switching to Mac'/><title type='text'>More on The Great Transition</title><content type='html'>My old setup was a duo core PC with a core duo 2.6 gig and a dual 22" monitor setup.  I've grown very accustom to having a dual monitor setup and wouldn't really know how to work without it.  That's on Windows.  My Mac setup is a Macbook Pro 2.8 with a 320 HD hooked up to the Apple Cinema Display 24".  Yes, I've read many many posts about people saying that the ACD LED 24" is way over priced and that for the price of that monitor you could buy 2 24" monitor or at least a 24 in monitor, a mic, a camera and a spare power adapter.  Well, it's still sitting on my desk right now so get over it.  When I jumped to Mac, I really wanted to try the whole apple experience and having the screen in front of me right now, I don't regret it...it is BEAUTIFUL (we'll see how beautiful when I get my visa statement next month!).  Seriously, I'm an amateur photographer and when I put my pictures on this screen they just pop.  I've never seen anything like it.  I do find that it's over priced by about 100$ and I would have loved to pay a bit less than that.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In the first few days of working on the Macbook pro, I was using my laptop open + the ACD. I've since tried it with the laptop closed and just the 24 inch now and I like this much better. One of the reason I didn't like it with 2 monitor is that I couldn't make my ACD screen my primary monitor with the tool bar on it.  The toolbar would always default to the laptop monitor.  It was a real pain because I constantly had to drag my mouse to the other screen to go click on the menu because I had so many short cuts to learn.&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;Spaces and Expose&lt;/span&gt;&lt;/div&gt;&lt;div&gt;These are the greatest OS related tools I ever had to work with!  With this I can often work better on 1 screen than 2 screens on windows.  There are some occasion where I absolutely need 2 screens.  When creating games in fullscreen for example, I normally use one screen for my IDE where I can debug my game running on the other screen.  Most of the time though, I use multiple screen to divide and conquer.  I can run to instance of visual studio side by side on screen while having a few Firefox windows opened in the other.  Now I can run 1 to 2 instance of Xcode in 1 spaces, then use another spaces for Safari and yet another space for Interface Builder.   Would I like working with 2 screens on the Mac?  I probably would, but I don't like working on 2 screens when one is a 24" at eye level and the other is a miniature screen beside it.  Because the screens aren't really balance I'm sitting square toward my 24", while normally, on my Windows setup, I'd be sitting square between the 2 screens.  You can't really do that with a 15.4" macbook pro screen and a 24".  When it comes time to upgrade my PC, who knows maybe I'll get a Mac Pro at which point I'll either buy 2 new screens, reuse my old ones or get a 30" ACD (or other 30" screens that would be good at the time).&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;Rest of My Stuff&lt;/span&gt;&lt;/div&gt;&lt;div&gt;When I moved to the Mac I already had an Ipod loaded with a few apps, a few of albums and some videos.  I tried synching it and I couldn't find a way to synch it without losing everything I had downloaded.  I wasn't too thrilled about this.  I did it a bit hastily and I forgot the name of some of the programs I had previously downloaded and I since lots track of them.  From now on this shouldn't be a problem since I don't really need to synch my touch to the PC.  The Ipod touch was mainly bought for programming, otherwise the old IPod classing or the blackberry bold can do the trick just as well.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I had no problem installing my Wacom tablet, I just needed to download a driver and it was a painless installation.  My Synology CS 407 is a different matter :(.  There doesn't seem to be any easy way of me to use it as my backup system.  In the end, I'm using an old 500GB USB drive I had, although I would have preferred a centralized backup it will have to do for now.&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;Bootcamp&lt;/span&gt;&lt;/div&gt;&lt;div&gt;I was a bit disappointed with Bootcamp, actually, I was downright mad at first.  I tried installing Windows XP professional using Bootcamp.  Unfortunately I THINK that it didn't have the Service Pack 2 pre installed on it.  This was a rather old version that came with MSDN Subscription.  So when I installed the disk in and the machine rebooted to install XP, it went to the DVD menu but then it stuck there.  I couldn't pick any of the choice on the screen and I couldn't get the DVD out.  I finally found a way to get the DVD out by just pressing the mouse button, I thought this would be the end of my troubles.  Instead whenever I rebooted it would show the white screen but no logo and it would just sit there.  I finally found in the documentation how to clear the nvram at boot up and that did the trick.  Although I have to say I was sweating for a little while!  So for now I purchased VMWare Fusion and installed the very same XP version through VMWare with no problem.  I have to say, I have yet to use it.  Of course I have a very good Vista machine sitting right next to this one, so there's no real reason for me to launch the VMWare version other than pure curiosity.  Although I'm curious, practicality normally wins over.  When I'm on the road I'll probably bring my Macbook pro instead of an HP Tablet with Vista and I have no doubt that VMWare will become become a very good friend of mine when that time comes.&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/9209316572052154923-214101389893573309?l=shadhex.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shadhex.blogspot.com/feeds/214101389893573309/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://shadhex.blogspot.com/2008/12/more-on-great-transition.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9209316572052154923/posts/default/214101389893573309'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9209316572052154923/posts/default/214101389893573309'/><link rel='alternate' type='text/html' href='http://shadhex.blogspot.com/2008/12/more-on-great-transition.html' title='More on The Great Transition'/><author><name>Shadhex</name><uri>http://www.blogger.com/profile/12001354316575213124</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://4.bp.blogspot.com/_mSTDo6Y7p-c/Snt1GmPUoBI/AAAAAAAAADw/kZwMlIi9WJc/S220/mebynick.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9209316572052154923.post-6658363094582856718</id><published>2008-12-31T11:11:00.000-08:00</published><updated>2008-12-31T11:58:09.661-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Switching to Mac'/><title type='text'>The Woes of the Great Switch</title><content type='html'>With my recent switch to Mac, I am reminded of how dependent on all of my shortcuts I can be.  I launch Pages write a few paragraph and I want to change to a new page and control-enter doesn't work.  I don't use word processor to often, so this isn't a huge concern, and I could always install Neo Office that would probably closely match Open Office for windows.  It took me a while to find the front delete key (fn +delete).  I'm fairly used to start deleting where I land and having to reposition myself was starting to annoy me a bit.  Fn + delete short cut will do just fine though.&lt;div&gt;&lt;br /&gt;&lt;div&gt;My main problem right now is all the little short cut I use every 5 min that seems to be gone. Windows key + e for bringing up explorer, is now replaced by either using command + N or option + command + space if I wasn't clicking on the desktop first.  I haven't really found a way to check for processes running and their performance yet, except for using the terminal and running top.  I've used it a few time so far to close programs that hung(Mac program do hang after all!).  How about an easy way to lock your computer?  I was used to windows key + L, now the best way I've found was to move the mouse in the corner of my monitor to trigger the screen saver.  I hate using the mouse.  I already have my hands on my keyboard, so using the mouse for anything takes more time.  Plus if you move the mouse while it's in the corner and while its triggering the screen saver, it will cancel the screen saver.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It was worst within XCode, not because there's no short cuts, there's an abundance of short cuts and I have to confess that I'm already getting used to them, although I haven't found a way to comment out block of code automatically yet (Ctrl-k + Ctrl-c in visual studio).  Since XCode is what I use the most right now, I'm spending way too much time using the mouse which I normally rarely used during development.  After 3 days in the environment and being very deliberate about using short cuts (going through the menu with the mouse and then canceling out and using the short cut instead), I am getting somewhat comfortable about using them...maybe too comfortable.  I really like the Option+Command+ up array for switching between .h and .m file.  In Visual Studio 2003, I'm using a plug in for this and in 2005 they incorporated a "Go to header" functionality.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;All in all, I am on my way to a full transition.  It's not going as fast as I'd like, but I have to be somewhat realistic about how quickly muscle memory will accept new key combination.  After all, I never think about pressing the key combination, it's really just a reflex.  With time, it will come though, now I'm interested in seeing if I can switch easily between Mac mode and Windows mode.  I can't forget my Windows background either since I still need to use it for work!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&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/9209316572052154923-6658363094582856718?l=shadhex.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shadhex.blogspot.com/feeds/6658363094582856718/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://shadhex.blogspot.com/2008/12/woes-of-great-switch.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9209316572052154923/posts/default/6658363094582856718'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9209316572052154923/posts/default/6658363094582856718'/><link rel='alternate' type='text/html' href='http://shadhex.blogspot.com/2008/12/woes-of-great-switch.html' title='The Woes of the Great Switch'/><author><name>Shadhex</name><uri>http://www.blogger.com/profile/12001354316575213124</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://4.bp.blogspot.com/_mSTDo6Y7p-c/Snt1GmPUoBI/AAAAAAAAADw/kZwMlIi9WJc/S220/mebynick.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9209316572052154923.post-5158420656157337827</id><published>2008-12-31T09:21:00.000-08:00</published><updated>2008-12-31T10:00:03.405-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Switching to Mac'/><title type='text'>Windows Programmer Switches To Mac</title><content type='html'>I've been a Windows user for many years.  My very first computer was an Apple II, but after it came Dos and since then only Windows.  I've skipped a few version here and there, I stayed away from Millenium for example.   Windows 98 Plus?  C'mon.  All in all, I've had very few complaints about Windows although I had the occasional crash.  I'd also reboot my PC weekly,  but nothing that would really really bug me to the point that switching to Mac seemed like the only alternative.  My worst experienced would probably working with the Windows GINA a few years back.  Wow did I ever screw up my machine often.  VMWare would have been a god send back then!&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Why now thinking about switching to Mac?  IPhone/IPod touch development is why!  Although I wish I could do development on a PC (it would be much cheaper as I have enough of those :) ), the Intel Mac is currently the only platform that supports development for this interesting new mobile platform.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I've decided that I will be buying a Mac and learn as much as I could over the Christmas Holidays.  I don't have 2 weeks off in a row often, so I'm hoping I can take full advantage of this to learn my way around a new OS, a new IDE and a new language (Objective-C, Cocoa).  I've actually created this blog more or less to document my plunge into the Mac world since I think this is probably the biggest changed I've done in my profession to date (time will tell).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&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/9209316572052154923-5158420656157337827?l=shadhex.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shadhex.blogspot.com/feeds/5158420656157337827/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://shadhex.blogspot.com/2008/12/windows-power-user-switches-to-mac.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9209316572052154923/posts/default/5158420656157337827'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9209316572052154923/posts/default/5158420656157337827'/><link rel='alternate' type='text/html' href='http://shadhex.blogspot.com/2008/12/windows-power-user-switches-to-mac.html' title='Windows Programmer Switches To Mac'/><author><name>Shadhex</name><uri>http://www.blogger.com/profile/12001354316575213124</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://4.bp.blogspot.com/_mSTDo6Y7p-c/Snt1GmPUoBI/AAAAAAAAADw/kZwMlIi9WJc/S220/mebynick.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9209316572052154923.post-3224496143941856419</id><published>2008-12-31T07:39:00.000-08:00</published><updated>2008-12-31T07:44:16.163-08:00</updated><title type='text'>What...I'm a Taurus?</title><content type='html'>All these years here I thought I was a Gemini, but low and behold, I finally create a blog and it is telling me that I'm a Taurus.  It's a good thing that I've never read much in these thing.  Can you imagine if all my life I would have made decisions based on the fact that was in fact a Gemini but that it was all a lie.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I'm pretty sure that I am indeed a Gemini, but before clearing things up, maybe I should go check my horoscope to see which version I like better...&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9209316572052154923-3224496143941856419?l=shadhex.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shadhex.blogspot.com/feeds/3224496143941856419/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://shadhex.blogspot.com/2008/12/whatim-taurus.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9209316572052154923/posts/default/3224496143941856419'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9209316572052154923/posts/default/3224496143941856419'/><link rel='alternate' type='text/html' href='http://shadhex.blogspot.com/2008/12/whatim-taurus.html' title='What...I&apos;m a Taurus?'/><author><name>Shadhex</name><uri>http://www.blogger.com/profile/12001354316575213124</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://4.bp.blogspot.com/_mSTDo6Y7p-c/Snt1GmPUoBI/AAAAAAAAADw/kZwMlIi9WJc/S220/mebynick.jpg'/></author><thr:total>0</thr:total></entry></feed>
