T-84 One week in and time to evaluate my plan and make some adjustments

Filed in iOS Development | Comments (0) |

I did not expect to have a huge list of accomplishments this first week, but I am a little disappointed with my progress. I did not have the time this past week that I thought I would, but I needed to have used what time I had more effectively. I bounced between too many different things, and need to focus on one item for several days in a row.

I leave on an 11 day business trip Monday and will spend some of my flight time with a notepad strategizing a way forward. Going on a trip like should provide me with some more focused time in the evenings, assuming the intensity of the days do not wipe out my capacity for thinking.

Day T-84 Accomplishments (Sunday, January 17, 2010)

  • Spent time working through some simple blender tutorials

T-85 Minor progress, but it is movement in the right direction

Filed in iOS Development | Comments (0) |

Before spending too much time working with the an engine or framework for simple prototypes, I wanted to see some examples of apps in the store that were built with it. I spent a few minutes downloading and trying several before I decided it was not going to help me in the immediate term, so I shelved it for now in favor of simpler, single purpose tests.

Day T-85 Accomplishments (Saturday, January 16, 2010)

  • Slowly improving my OpenGL familiarity
  • Some progress on first prototype, not as much as I’d like, but it’s forward motion.

T-86 was over allocated, but I still found some useful tools

Filed in iOS Development | Comments (0) |

Having a plan to spend quality time each day on my iPhone project has made it clear how much I over allocate my days. I am not discouraged by that, but I do need to manage my time and commitments carefully over the remaining 86 days if I am to reach my goal.

I allocated the first week of my 90 days for playing and thinking knowing that I might not have anything “real” when it was up, so I decided to try one or two game engines to speed up my idea prototyping.

My goal for Saturday is to have a prototype using SIO2 for one game play mechanic, and then try something similar with just OpenGL ES to make a reasonable comparison of my effectiveness with each.

Day T-86 Accomplishments (Friday, January 15, 2010)

  • Researched 3D tools and game engines online
  • Selected the SIO2 3D game engine to try first
  • Tried out some of the SIO2 tutorials
  • Dinner, discussions, and a movie with family and friends

T-87 shows promise! Some helpful advice and ideas for my first tiny prototype

Filed in iOS Development | Comments (0) |

After spending a couple of hours this afternoon reading, chatting, and sketching — I now have a clear path of things to try over the next few days.

Clarity and focus are refreshing, a motivation multiplier. I would love to stay up all night working on my idea, but today has been busy enough that my mind is starting to slow down, so I’ll just have to get up early to try some of them out.

Day T-87 Accomplishments (Thursday, January 14, 2010)

T-88 on my 90 day odyssey brings a little more clarity to my thoughts

Filed in iOS Development | Comments (0) |

Day T-88 Accomplishments (Wednesday, January 13, 2010)

Earlier this evening I spent a little while talking over my game idea with a couple of guys who have bright young minds, and even better, an iPhone and an iPod Touch! Pretty sure they will be two of my early beta testers and that I will get some good feedback from them.

I am thinking through some basic decisions I need to make, even if only temporarily:

  • Should the game play and display be 2d, 2d play but 3d-ish looking, or full-up 3d,
  • Depending on how 3d-ish the game becomes, what sorts of controls would work,
  • Should I be doing straight OpenGL, Cocos2D, or some other game engine.

I downloaded several new (to me) 3d games to explore different control styles (and have fun!). Any suggestions about great controls in iPhone games would be greatly appreciated. About to try these games to see how they manage game controls:

  • Crash Bandicoot Nitro Kart 3D
  • Deer Hunter 3D
  • Galaxy on Fire 3D Lite
  • Glyder
  • Jump Then Fall 3D
  • Koi Pond 3D
  • MyReef 3D Aquarium
  • TowerMadness
  • Wolfenstein RPG

T-89 on my 90 day iPhone game wonder

Filed in iOS Development | Comments (0) |

Day T-89 Accomplishments (Tuesday, January 12, 2010)

My major accomplishment today was thinking and working on my iPhone project two days in a row! Actually, more than that, I decided to pursue a game idea I had during the 360iDev Game Jam last fall in Denver.

In particular, I spent a couple of hours:

  • thinking about the core game play,
  • doing very simple sketches,
  • reacquainting myself with OpenGL programming on the iPhone.

90 days and counting to 360iDev 2010 in San Jose

Filed in iOS Development | Comments (0) |

With 90 days until the start of 360iDev, I am publicly committing to having my first app in the store before 360iDev begins. So, for the record, each day between now and then, I will:

  1. spend at least one hour advancing the state of my app (designing, coding, thinking, marketing, something)
  2. report on my activity via twitter with the hashtags #90days #360idev
  3. summarize my progress (or lack thereof) here: https://sunetos.com/tags/90days

Day T-90 Accomplishments (Monday, January 11, 2010)

  • Commitment: …Until one is committed, there is hesitancy, the chance to draw back, always ineffectiveness…
  • Develop very rough outline for next 90 days (13 weeks)
    1. Week 1: brainstorming ideas, planning, play with ideas
    2. Week 2: develop enough of a prototype to begin getting feedback from others
    3. Week 3-5: iterate through prototypes, expanding feedback circle
    4. Week 6: begin working on website and other app promotion ideas, continue development, begin seeking beta testers
    5. Week 7-10: iterate, iterate, iterate
    6. Week 11: finish polishing app, submit to Apple, ramp up promotion
    7. Week 12-13: wait for approval, continue marketing and promotion
    8. Week 14: 360iDev & GameJam!!!

99 hours at 360iDev made me a better developer

Filed in iOS Development | Comments (0) |

I just finished one of the most fun professional experiences I have had in years: 360iDev in Denver and Mobile Orchard’s OpenGL training class taught by Noel Llopsis of SnappyTouch.

I do not cringe at the thought of going to work. I love to fiddle with bits and hone my craft. I love it when someone is pleased with what I’ve done. I love the feeling I get when my clients tell me I have helped them get their job done better. But, even so, this was invigorating.

People talk about community in a lot of areas of life, but this past week in Denver, I experienced it professionally — and it was great. I met people of all levels of experience in iPhone development, and to a person, each was willing to freely talk about technical, professional, and business ideas with no real consideration of what was in it for them. I came away inspired to continue with iPhone development. I brought home many new ideas, and wish I had time to try even a fraction of them. I made more contacts and friends than I thought I would before I came, and the quality of each one was deeper than I could have hoped for.

I learned more practical aspects about iPhone development in class and in the conference than I have on my own over the last several months. Obviously, part of that was the simple act of breaking out of my normal routine and focusing on the iPhone, but I could have done that and still walked away disappointed. I’ve been to conferences where I learned things, but probably could have learned them just as well on my own. This time, I came back with a deeper understanding of developing quality applications for the iPhone.

And finally, having zero experience in iPhone game development, I was inspired by Noel’s class to participate in the 360iDev Game Jam. That was definitely a hoot. I might not have been the least experienced game developer there, but I was close. My initial plan was more than I could accomplish from dinner on Tuesday to breakfast on Wednesday, but I am still pleased with what I managed to finish. I learned more about what I was doing overnight than I would have in twice the time on my own. Thanks especially to Peter, Noel, and Serban for the advice and assistance

Okay, maybe it wasn’t exactly 99 hours, but it was pretty close, and I’m already making plans for April in San Jose.

Doug

GIT to the rescue

Filed in Miscellaneous | Comments (0) |

I recently completed some short term Java work where using git saved me quite a bit of work. The real savings came about because of the style of work that a distributed version control system allows you to follow: many small commits with easy branching and merging.

Background

Most of my work lately has been doing Java work remotely on my own machine. The projects use Ant scripts for the build process and Subversion for version control. I was used to having access to customer VPNs from my machine, using their servers for database access and version control.

All of this works pretty well for me and my customers, as it does for many developers today.

Recently, I picked up some short-term work to add undo and redo functionality to an existing Java Swing application. The project uses an older version of Rational ClearCase for version control, but circumstances did not allow them to use the web component of ClearCase. Also, company policy denies access to the VPN from non-company computers.

The work itself did not require a lot of interaction with the rest of the project team, so most of my work could still be done on my own if I could figure out a reasonable way to access and update ClearCase. I am perfectly willing to switch development tools or equipment if that works best for the customer, but since this was a short-term project, I knew I would be much more productive if I could keep my work style as unchanged as possible.

I had been using git for some personal projects, and thought it would be a good choice to support my work. I checked out the current project view from ClearCase on a company machine, copied the files to my machine, and setup a local git repository for it.

I was then able to use git to make many small commits as I worked on the project. When I was in the office, I would copy over changed files from my local machine to my ClearCase view and update the company repository with my changes. The process worked well and I was able to stay productive most of the time.

Git to the rescue

Early in the process, I introduced a small bug that had no effect in my development environment (a MacBook Pro), but ended up with some screen update problems when running under Windows XP. I did do sanity testing on the GUI on a Windows XP box while in the office, but did not notice anything odd until two weeks later.

By that time, it was not at all obvious what kind of change could have triggered the problem, and I spent a fair amount of time investigating double buffering, validation, and other Swing differences between the Java VM on OS X and Windows. After probably too much time on workarounds and checking Swing internals, I decided to give it a rest for a day or so and then use my git history to help me track down what change caused the problem.

When I came back to the problem, I started with a copy of the project directory and basically did a binary search through all the commits to find the one where the bad behavior started. It took a little over an hour to find the change that caused the problem — a bug that might have taken many more hours to find using any other method.

I am so pleased with the results that I will be using git and the style of many small, local commits, in every project I possibly can.

GIT FTW
— Doug

CodeMash 2009 was worth the time

Filed in iOS Development, Miscellaneous | Comments (0) |

Thumbs up and highly recommended

It has been several years since I took the time to attend any kind of extended technical conference. Often when conferences would finish, I would wonder whether it was worth the investment of time. Even when I wasn’t sure if the answer was “yes”, I would either rationalize or convince myself that it was.

CodeMash was different, it was very much worth my time. I took the opportunity to meet people I would not normally have met, try some languages and techniques I have not tried before, and listen to sessions that I would not have heard otherwise. I was surrounded by people who were knowledgeable, yet still eager to share and learn new things. It was pretty cool.

Short version, if you are a developer who wants to grow, this conference is for you. Even if you do not directly use most of what you hear and learn, it will still have a positive influence on the work you do.

Precompiler Day

I attended the precompiler day, where extended sessions were offered (many conferences do this sort of early training day). It was good to be able to spend an entire morning doing one thing, then an entire afternoon something different.

Morning — Ruby 101

I have had Ruby on my list of interests for awhile now, but never quite taken the time to dive in. The whole day “Ruby 101” session caught my eye, and I was glad I attended during the morning. Jim Weirich and Joe O’Brien led us through a series of programming koans designed to gradually introduce us to key Ruby features and uses. I thought it was a very useful technique — we mostly proceeded at our own pace, but Jim and Joe were on call to answer some of the “why would Ruby do it this way” sorts of questions. Going back and forth between simple exercises that built on the previous ones, some Q&A with experts, and some rabbit trail type experiments was a great way to begin learning Ruby.

The session continued into the afternoon, but I chose to continue my koans on my own so I could attend something different that afternoon.

Afternoon — iPhone Development 101

Chris Adamson, one of the co-authors of the Pragmatic Programmer’s book on iPhone development, led this session. I had already started learning and writing some simple iPhone apps, so was familiar with the basics, but the session was still very useful for me.

Chris took us through the steps of creating a simple web browser as a native app, then through a series of refinements. Along the way, he explained and demonstrated several points of iPhone development that I had missed or where I had a very sketchy understanding. The most useful thing I gained from the session was a better understanding of who nib/xib files and custom classes work together. That by itself was worth the afternoon.

Keynotes and sessions

The themes I picked up from the week were the emphasis on agility and on getting out of your comfort zone.

I really enjoyed and learned from almost all the keynotes and sessions I attended, but I found the most value in those that encouraged me to think differently (and hopefully better) about who uses what I write, design, and testing.

I may write some followup entries on some individual sessions, but overall I was pleased with those I chose to attend. There were a couple I regretted not being able to attend, but by Friday afternoon my new idea tank was rapidly filling up.

Meeting people

One of the biggest benefits of any conference was in meeting people and actually talking to them. I’ve been to conferences or training events where the meet part happened, but real conversations lagged. CodeMash was great in that everyone I met, no matter where, was eager to talk and discuss a wide range of topics.

I loved the interaction with people outside my normal professional circle, and outside my areas of expertise. If for no other reason, I have already put CodeMash v2.0.1.0 on my schedule for next year (Jan 12-15, 2010). Hope to see you there.