Thursday, November 10, 2011

Strategic Time Management Techniques

It has been four weeks since I left my job to do iOS development full time. I am very happy with my decision. The thing I enjoy the most is I don't feel like my attention is split between different technologies anymore. I have been working in iOS since 2009 when I created my first game. I was also going to school fulltime and working fulltime while creating my game. It was tough.

Working from home on iOS applications has been awesome. I do meet up with my partner in crime regularly every week but the ability to work in my comfys is a huge benefit. But there are some things that I need to fix to make things better.

Working this way requires more discipline and the ability to stay on track. I have been searching for tools, tricks and some new ideas on how to keep myself productive and on track. I want to share two things that have made  a huge difference.

Organizing work

One great tip I learned from my friend was to organize work based on complexity. Do that work that requires more of your mental capacity when you are fresh and ready for it and save easy stuff for later when you feel more tired. When I start to feel myself getting tired I will start slicing up images or do some repetitive that doesn't require a lot of concentrated thinking. The feeling I have after doing this is phenomenal. I always feel productive this way. Because even if I get tired I have important things I can do that will make my work easier for the next day. I am constantly looking for these types of opportunities.

Another great improvement over my ability to organize has been my source control. Moving to git has changed the way I think about my code. I am more mindful about how I work and what slices of work I choose to do. I am always asking myself before I start what will my commits look like. With git I have more control over my commits and can change what my commits look like whenever I want (EXCEPT if I have already pushed my changes for other people to grab. Don't do that)

What tips do you have that increase your productivity? Please share them with me in the comments.

Thursday, September 15, 2011

Custom Merge Drivers and others solutions

For this iDevBlogADay I wanted to continue with my problem from last time. Git is the best version control system I have ever used. It changed the way I look at version control. In fact I would go as far as to say that it's the first time I really understood what version control could be. It changed the way I work on my iPhone games. But last time I explained that it's not all rosy.

Trying to merge the xcodeproj file can be a pain. It's hard to read and understand what is going on and requires you stop what you are doing and figure out how to correct it. Otherwise you may not be able to even open your project. And recreating your project file is just not an acceptable solution. I have a couple of ideas that I am going to try in addition to the one I gave last time.

ReReRe


rerere is an option that you can turn on in git that allows you to do a merge once and it will remember what you did and do it again for you. Like I said these are things I am going to try and see how they go.

Custom Merge Driver


Custom merge drivers allow you to specify a script that you can use to figure out how to merge a file with a specific file extension. Though this method would probably require that I figure out how the project file works and then write a script to parse it I still think this is an interesting option. And perhaps one I could share with other Xcode devs.

I apologize for my posts being terse but I am in the middle of an awesome iPhone project and enjoying myself too much. Breaking away to blog has been tough the last two weeks. Until next time please check out the other great dev's that post for iDevBlogADay!

Thursday, September 1, 2011

Xcode Project Files And Git

This is my first iDevBlogADay post. I am excited to be sharing with you some of the things I find interesting about iPhone game development. 

I love git.

There haven't been too many tools that got me excited about programming like git. I use to think that version control was a necessary evil and something I 'should' do. I always knew that it was important to version your code. Especially when that something really bad would happen and you could go back to a previous version. But version control systems just never seemed that approachable to me.

 But when I learned that git was awesome at branching it opened up my mind to better ways to organize my code. I immediately started using feature branches and got a huge boost in productivity. It made coding fun again. Even exciting.

But when I started working with someone else on an Xcode project I began to feel some pain with the xcodeproj file. I know that this is not necessarily an issue with git because other people using subversion have the same pain. But none-the-less it is a pain.

The problem is that the format of the xcodeproj file is not a friendly file format to have to merge conflicts. It requires you stop and think about how the xcodeproj file works and can put a halt on your development.  I merged these file a couple of times but then a big change made the effort not worth it.

So I googled the answer.

And it seemed the best answer was to put this in your .gitattributes in your project directory

*.pbxproj -crlf -diff -merge
That will treat your pbxproj file in your xcodeproj as a binary file. This is great until two people add a file to the project. Which on wins? Well you have to re-add the file back to your project.

But there is another solution that I am going to toy with.  I have not tried it yet but perhaps I will have before my next iDevBlogADay post. I will have to keep you hanging until then.

Stay tuned...


Wednesday, July 6, 2011

Resting and relaxing

I have been pretty much drawing all day. It has been therapeutic. I am close to finishing Star Catch with new graphics and some new game play. I am close to having it tested and can't wait to hear what people think.

Saturday, May 7, 2011

Why social interactions inhibit learning

There is an interesting correlation I have noticed between people who have trouble with socialization and their perceived intelligence. The more they lack the ability to empathize and interact socially the higher chance they either have a larger IQ or are recognized to have some gift or talent.

I believe the difference is that learning requires the ability to change often. This includes the ability to rapidly alter your belief systems. And the most important belief is our identity. Who we think we are has a dramatic affect on what we believe we can achieve. In social circles though having a quickly moving and different identity creates issues. Humans, especially social humans, require consistency. People who are viewed as inconsistent are harder to trust, understand and identify with. People like to know what you believe in and stand for.

I have always believed that learning requires great courage. Courage to let that knowledge alter who you are and how you think about life. But this was always in the context of existing in a social system. The courage comes from the risk of disappointing those people who might be uncomfortable with your constant shifting and changing. People who do not subscribe to these social systems don’t have this problem. They don’t care. 

How does this affect how I learn?

Saturday, April 30, 2011

Inspiration and Hacker News

I have been doing something fun the last month and thought I would share. I will typically have a topic or theme in my head each day and sometimes for several days. I am usually pondering how to learn something faster or how to make what I have learned available to me for finding patterns or new relationships. Find good material is sometimes difficult to help me explore the edges of the topic and leverage what other people have learned. Googling for key terms just doesn’t cut it anymore.

When it comes to news aggregate sites I frequent only two. Hacker News and Reddit Programming. I will occasionally pop over to the other sub reddits that I am interested in. I have been favoring Hacker News mostly because I have found the topics to be of higher quality. I also never click to the next page which helps me not spend too much time on reading blogs.

What I have been doing is starting my Hacker News readings with going to their google search and putting in the term I am currently noodling about. I have been surprised at the great blogs I have found and the articles on the topic of interest. This morning I had an interesting dream that led me to think about the connection between doing what I love and learning. I made a bunch of interesting connections between my current situation and where I want to be. When I searched Hacker News I found three really great sites that further gave me more to think about.

Give it a try. 

Friday, March 4, 2011

Game Development Tutorials

I have been thinking about sharing some of the neat things I have learned as I have been going through the process of updating my game. Besides sharing some of the best articles I have found and the new processes and tools I have adopted I thought I could also create some of my own tutorials. I have debated wether I should repeat some of the tutorials I have found or just share those to fill in space. I think I still need to think about that one.

Right now I am going to go out with my wife and have some fun.