Feature Creep!
I know I made a post earlier about the biggest pitfall in Project Management being Feature Creep. But here I am, dealing with the problem myself. I started out on my new project with a simple app in mind, that had some slightly complicated math behind it. The idea was simple… Let people shoot videos as ink sketch animations! In case you haven’t seen what it looks like on my twitter feed yet, here’s a pic.
I got that to run at a smooth 60fps on my iPad3 at a 1080p Square Resolution, and around 27fps on my 3 year old iPhone 4 at a 480p square :) I’m sure I can get it to run at 1080p^2 on the newer 4S and 5 devices.
Tasks involved so far:
- Algorithm to convert Video Frames into sketches really fast.
- Learn GPU programming. Either through OpenGL, or using libraries such as OpenCV and GPUImage.
- Design UI w/ Record/Stop Button that saves to the Photo Library.
Then I thought, may be I should have different kinds of animation effects. That led me to designing an interface to select different effects. Sounds pretty simple. Why not?
- Single View App to Multiple Views
- Build multiple Effects, and create a whole class hierarchy for abstracting common functionality among all effects.
- Build an effect selector, that shows a list of effect icons, that you tap to get to the recording interface with that effect applied. A simple Table View… May be a side-scrolling “Belt” like the one found in Fotoyaki.
But, the effect selector was boring. Being a UI Snob, and due to my recent obsession with minimalism – a total 180 from the Skeuomorphic clusterf**** found in Fotoyaki – and “zero-appiness” like the design found in Flipboard, I went about getting creative with the UI for selecting effects. I kinda showed a preview of it in my ugly prototype from the last post.
Well, if splitting the video feed and applying different effects to different regions was a small speed bump to get over… making those effects scroll on top of the video feed “as smooth as butter” is like climbing K2. That’s where I’m at now. Not on top of that mountain, but barely at basecamp.
- Split the Video feed and apply different effects to different regions.
- Create a custom Scrolling View that hooks into the UIScrollView’s CoreAnimation layers to track its current position and adjust the video splits, and choose the appropriate effects to be applied.
And as if that wasn’t enough, I want the app to allow you to shoot videos in scenes. So, instead of Record/Stop. It’s Record->Pause->(Select different effect & Continue Recording)->Stop. It’s a really simple way to make movies with multiple scenes in them. (ala Vine, only longer).
- Figure out how to manage Scenes, and append Live Video to the end of previous recording. (And implement it of course)
And finally, the thing that made me realize all the feature creep that went into the project thus far. I want to build a whole backend component to the app for 1. Simple Sharing, 2. Really cool collaborative video making… Alright STOP!!! Save it for V2!
Anyway, I still think I can get all this done within the month, and ready for testing. I originally planned on working on the first three task bullet points over a month from June 1st - July 1st. I’ve been working on this part-time since May 8th – My full-time hours these days are spent on finding my next paycheck ;) So, In about 2 more weeks… June 8th? If you want in on the Test phase, let me know, and I can send you a TestFlight invite to try out the app first hand.
But, more importantly, if you are looking for a Software Engineer w/ mad skillz. Check out my resume at http://vijayarunkumar.com/resume.pdf and Hire me!