Opening Up Loose Leaf Development

You wouldn’t know it, butĀ I had to solve some difficult and interesting problems to get Loose Leaf shipped. You wouldn’t know because I never told anyone. I neverĀ described how I built Loose Leaf’s list view before UICollectionView, or how hard it was to get the penĀ ink to ā€œstickā€ to scraps efficiently, or what went into creating the scissors tool. I spent 2 years working without sharing anything, and it took me that long to see the missed opportunity ofĀ coding silently.

Ideas Aren’t Valuable, Sharing ThemĀ Is

I’ve made thisĀ mistake with almost everything I’ve built. I already knew that ideas are worthless, but I still held my feature ideas for Loose LeafĀ Leaf too close. The thought ā€œI can’t tell anyone, they’ll steal my ideaā€ just evolved over the years into ā€œI can’t show this, it’s not readyĀ yet.ā€ A different excuse forĀ the same behavior. Two summers ago, I even gave a talk at OwlSparkĀ about this very topic-Ā should’ve listened toĀ myself!

The Cost of Closed

Over these two years, I’ve missed out on a lot.

I missed out on user feedback. I only found out thatĀ Loose Leaf has trouble on boarding new users after I’d launched. If I’d been more open, I would’ve seen that problem before launch.

I missed out on learning. Loose Leaf was my first OpenGL experience, and to say it was a struggle is an understatement. Just being open and asking about my questions and troubles could have sped up that portion of development, among others.

I missed out onĀ teaching. Loose Leaf does more with UIBezierPath than I’ve heard about in almost any project. I’ve spent an incredible amount of time optimizing drawing and calculating withĀ BĆ©zier paths. I’ve learned a lot that I should’ve been giving back much sooner.

I missed out on giving. Sure, I shouldn’t give the farm away, but there’s no excuse for not open sourcing pieces of Loose Leaf’s codebase for the greater good. TheĀ BĆ©zier example above is a prime candidate.

TheĀ Value ofĀ Open

You’ve only really learned something when it changes your behavior, so how has mine changed?

I’m being proactive about user feedback. I’ve started building up a focus group of active users (join here!) and’ve justĀ finished up its first survey. I’ve prioritized version 1.1 development on specific user feedback.

I’m asking more questions. I’m on IRC atĀ #iphonedev, #macdev, #cocoa-init, and #OpenGL, and I’ll be posting questions to StackOverflow more often. I’m also attending startup and iOS meetups consistently to meet and ask other developers.

I’m answering more questions – both on the IRC above and on SO. I’ve setup RSS using fetchrss.com for specific SO keywords to funnel specific questions into feedbin. I’m also active in /r/iOSProgrammingĀ answering questions when I can. I’m also sharing as much as possible on this blog – everything from how I made the promo, or app preview, or or even recorded the UITouchesĀ for demo videos,Ā and I have many more blog posts in the queue.

I’m giving away as much as I can – most recently with the code to show allĀ UITouch locationsĀ and sharing what I’ve learned creating an App Preview. I’mĀ working on upgrading those dots to hand shadowsĀ and will open source that when I’ve finished (I’m even livestreaming the shadow dev every Monday).Ā I have a list of moreĀ features in Loose Leaf that I’ll be streaming and cleaning up for open source as well.

Open Inspiration

Some people who’veĀ really inspired me withĀ their open development: John SaddingtonĀ who is open and encouraging about his work on Desk.pm. Notch, who releasedĀ Minecraft before it even hit alpha. Shaun Inman who consistently blogged about making The Last Rocket.Ā Asher Vollmer who’s live tweeting his development of CloseCastles.