Skip navigation

Monthly Archives: August 2009

Has time flown.  I can’t believe it’s already the end of the summer.  It’s been a blur, but looking back I realize I’ve done, learned, and screwed up a lot of stuff over the last 10 weeks.  Most importantly, I have learned a huge enormous gigantic ton of stuff that I would have been otherwise hard-pressed to find on Google.  I’d like to list and optionally briefly explain some of the things I have learned this summer:

  • How to build mesh data (for drawing) from vector data (from the simulation).
  • To draw as much as possible in a single draw call: all particles in an emitter and all objects that are related to one another by building one big-ass master mesh.
  • How to use interleaved data for fast drawing (didn’t actually use this, but I think I have the theory behind it down well enough to use it).
  • The power of good OOP architecture.
  • The crippling effect of poor OOP architecture.
  • The terminology of Factories in a CS context, what a Facade is in CS context, and a slew of other CS architecture paradigms.
  • Any kind of I/O sucks.
  • The worst form of I/O is networking.  Need to check for all cases including network failure, bad data, dropped data, incomplete data, yadda yadda yadda.
  • I enjoy building systems and I really like building tools to manipulate those systems.
  • How a particle engine is built and how a particle engine is built properly.
  • Verlet integration and the power behind a Verlet particle system.
  • That there are 3 ways to do everything: the wrong way, the right way, and the best way.  In software engineering, we shoot for the last and end up with the middle one most of the time.  The first is rarely engineered, but can be the result of failure at any point during the code base’s inception: communication of ideas, engineering, coding, QA, etc.
  • The Scrum process and the Agile Development paradigm.  These would have been fantastic to know and be used to before this internship, but that wasn’t really an option.
  • I suck at projecting the amount of time required to complete a task.  This is core to Scrum and Agile Development, which is why being familiar with that format would probably have benefitted me.
  • I don’t like C++.  While it has benefits, it’s structure is easily broken and it feels very hackish.  Admittedly, I am not aware of a lot it’s ins and outs, but what I have seen has made me very glad that I was introduced to programming through C and Java.
  • Complete Separating Axis Theorem!
  • There is nothing like a solid group of competent teammates on a programming project.  Things that seeming daunting to the individual can be conquered easily with the right team.

I have learned a huge amount and I want to thank everyone at ZG for giving me this wonderful opportunity and for putting up with me for a full 3 months!  I had a great time and I would highly recommend the experience to anyone looking to for an internship out there.  Yeah, that means you!

Anyway, even with all of this new-found knowledge I realize I still know next to nothing.  I feel my iPhone and Obj-C skills are pretty solid now, but there is much I still have to learn.  It’s unknown how much longer it will be until I graduate, but I feel confident that I will have something to contribute once I do.  I’m still debating whether I want to stay in state or move somewhere in specific, but one things for damned sure: it ain’t gonna be Florida again…

That’s it for me.  I’ll probably wrap up my internship thoughts sometime next week, but I’ll be sending my computer back home soon, so it will probably be short.  Keep on keeping on and I hope to have another post sometime soon.  Peace.