Archive

Archive for the ‘Tiny Ears’ Category

Playing movies with an alpha channel on the iPad

May 16th, 2012 21 comments

We hit a snag the other day with the development of Tiny Ears. Our strategy to save space on the animation in each storybook was to create lightweight movies to play at the appropriate moment, rather than to have to implement large quantities of frame animation with all of the assets involved (including now retina support with the new iPad). To save further space we decided that we would like to animate only those things that moved by creating a video animation with an alpha channel to make the background visible through the video.

Problem was, when it came to implementing this strategy on the device itself, the transparent .mov file renders with a black background. Why? AVPlayer and MPMoviePlayer  do not have alpha channel support. Desperate not to have to change our strategy and recreate our animations complete with background or return to frame animation I spent some time researching a possible solution on the Internet. After 1 day of looking the best I had come up with was a solution suggesting we use OpenGL to sample the video as it played and turn certain colours transparent I was ready to give it up for lost.

Then, at last, I came across AVAnimator. Hidden in the depths of Google lay this single page site detailing this wonderful library that seems to do pretty much everything that you would want to do with movies in iOS but can’t. There is little documentation and that single page is the only information that exists, but it was enough. Here was a native movie player for iOS with alpha channel support (and a lot more besides but we won’t go into that now).

The code itself was really simple to implement, but in order to play the movies you have to do a little bit of transformation first to turn them into the .mvid format that AVAnimator requires. The tools you need are qtexportani and QTFileParser.

Unpack qtexportani. Open a terminal in that location and type the following:

./qtexportani <name>.mov

This will create you a file in the same directory called export_<name>.mov.

Now unzip QTFile112.zip. Go into QTFileParser and open the XCode project. Build & archive the app and select Distribute. Select Save Built Products and choose somewhere to save it. Then, with the terminal in the same location as the app you just built, run the following command:

./qtaniframes -mvid export_<name>.mov

This will save you a file called export_<name>.mvid.

At this point, don’t be afraid of the fact that your new .mvid file is substantially larger than the original .mov. We’re gonna 7Zip it to make it nice and small. The nice thing about AVAnimator is that you can 7Zip all of your .mvid media into one archive and use that in your app, making all of your media have a delightfully small footprint. I’m not gonna tell you how to 7Zip your files – you’re geeks you should be able to handle that on your own. But at the end of it you should have something like <name>.7z that contains all of your mvid media.

Now comes the fun bit. From the AVAnimator site I could not find just the source file download, but you can grab it by downloading any of the links from their website. I grabbed StreetFighter cos that was the example app that did exactly what I wanted.

So, in your xcodeproj, import all of the files in the AVAnimator folder that you will find in your downloaded project. You will also need to import all the files inside the folder called LZMASDK. In the UIViewController where you want to play your animation then add the following code:
// create the animator view

AVAnimatorView *animationView = [AVAnimatorView aVAnimatorViewWithFrame:CGRectMake(0,0,1024,768)];

// create a new object to store your media in

AVAnimatorMedia *media = [AVAnimatorMedia aVAnimatorMedia];

// Create a 7Zip resource loader

AV7zAppResourceLoader *resLoader = [AV7zAppResourceLoader aV7zAppResourceLoader];

// tell the resource loader what the name of your 7Zip archive is, and the name of the media file inside it you want to play

resLoader.archiveFilename = @”media.7z”;

resLoader.movieFilename = @”export_video.mvid”;

resLoader.outPath = [AVFileUtil getTmpDirPath:animationFilename];

// tell the media holder which resource loader to use

media.resourceLoader = resLoader;

// Create decoder that will generate frames from Quicktime Animation encoded data

AVMvidFrameDecoder *frameDecoder = [AVMvidFrameDecoder aVMvidFrameDecoder];

media.frameDecoder = frameDecoder;

media.animatorFrameDuration = AVAnimator30FPS;      // this is a constant I made for the frame rate

[media prepareToAnimate];

// request to be notified when the movie is played

[[NSNotificationCenter defaultCenter] addObserver:self

selector:@selector(animatorDoneNotification:)

name:AVAnimatorDoneNotification

object:media];

// you have to add the AVAnimatorView to the superview before you can attach the AVAnimatorMedia

[self.view addSubview:animationView];

[animationView attachMedia:media];

// play the movie

[media startAnimator];
And that’s it. Everything to you need to play a movie animation while preserving the alpha channel creating a transparent animation. In a few short lines of code. Thank you AVAnimator, you wonderful thing you. It’s astounding that more people don’t know you exist.

My first reimbursement process – An Assessment

March 20th, 2012 8 comments

I finally received my first reimbursement payment on Tuesday. I’d  decided to leave off blogging about this until I’d actually got the money. I had no idea at the time that meant I’d end up writing this post over 1 month later.

I set aside a whole day to get together the documentation for our first reimbursement. For the first one, you have to provide a bunch of extra documentation, such as rental contracts and photocopies of your RUT. There is 1 spreadsheet that you need to complete with 2 tabs, one to document your involvement in RVA and the other to show your expenses. For each row in your expenses you need to fill out the following:

  1. Recipient
  2. Category
  3. sub category
  4. description –  a full description of the item
  5. currency – the currency that it was originally purchased in
  6. cost – the amount in the original purchase currency
  7. exchange rate – the exchange rate between original currency and Chilean Pesos on the day of purchase
  8. document number – the number assigned to the supporting documentation

For each row in the spreadsheet you must supply the invoice or receipt for the item. If you paid cash outside of Chile then the receipt must clearly state what the purchased item was, the amount and that it was paid cash. Inside of Chile then cash receipts must also contain your name and your RUT number.

If the item was paid by direct bank transfer or debit card then the receipt must contain your name. Remember that the CORFO contract is with you, the individual, and not your company so receipts with your company name on only will not be valid. You must also provide proof that the money left your account, so a bank statement showing the same entry is also required. If you’ve made a purchase in Chile, again remember to have your RUT number placed on the invoice or receipt.

If you have paid by credit card you must supply, along with the receipt or invoice, a copy of your credit card statement showing the purchase, PLUS proof that you have paid off the credit card debt. This means a statement showing the card paid. At this point it is worth noting that proof that you have paid the minimum payment is not enough. There have been reports of credit card payments being refused because the whole outstanding amount of the card has not been cleared, therefore it could be argued that you have not actually yet paid for the item you are claiming.

The reason why these proofs are required is, as mentioned before, proof that you are being reimbursed only for stuff that you actually have paid for. This means that items you have purchased but may not yet have utilised, i.e. flights, conference tickets, hotel rooms, cannot be claimed until after they have been used. This is so that they do not reimburse you for something like a flight that you then cancel and get a refund for.

After I had got my documentation together and filled out the spreadsheet I had to send it to my account manager, Konrad. I had to get it to him at least 24 hours before the appointment we had made in order to go through the documentation. In this meeting I took Konrad through the spreadsheet and documentation and he checked it to make sure it was OK. He also asked me about how my business was going, what I had been doing for RVA and generally checked up that I was actually working and not pissing my grant away. He gave me some things to clarify, I went away and fixed them, then he signed the spreadsheet off and  I sent it to the reimbursement people.

10 days later I received an email stating that they were going to reject 85% of my reimbursement. I was very grumpy. A meeting was made between me, Konrad and the reimbursement manager for the next day and I had 24 hours to get my stuff together.

It turns out that if you have a business account and the statements for that business account do not contain your name, only your company name, even if that company name is the same as the one you are in Chile running they will not accept it as proof unless you can also prove that you own that bank account. Initially I thought that a copy of the confirmation letter from my bank thanking me for opening the account would be enough, but it turns out that it is not. Eventually I ended up having to provide copies of my letters of incorporation stating that I was the sole director, plus a letter from my bank stating that I was the signatory of the account before they would accept any payments that I had made out of Radical Robot’s bank account. I was not best pleased.

However having provided these proofs and after explaining a few of the complexities of what I was reclaiming, I got approved for 95% of my claim. I went away happy being told that I would receive an email confirmation and repayment within 5 days.

8 days later I wrote and mentioned that I had received neither confirmation letter nor payment. I received no answer.

10 days later Ian wrote and asked where his reimbursement payment was.

4 days later Ian received a reply saying that they didn’t know.

1 day later Ian got his payment.

4 days later I got my payment.

I never received confirmation of exactly how much the reimbursement was or when it would be sent.

But, I did get my money in the end. It was not as much as I had hoped, but it covered almost everything I claimed for. I learned a lot and feel I am in a better position for my next meeting. Tips I have for anyone going through reimbursement are:

  1. Always provide more proof of purchase than you think you’ll need. You can never have too much
  2. Don’t rely upon anyone applying common sense to the process. Mark everything as clearly as possible and write detailed descriptions if you think it’s confusing.
  3. The reimbursement guys speak no English. Do not rely upon them bothering to translate your invoice in order to find out what’s going on. You may need to find a friendly Spanish speaker to do some translation on anything that is not obvious
  4. NEVER EVER give over original copies of anything. Always provide photocopies. You will never receive anything back and if they lose something and you no longer have the original you’re screwed.
  5. Do not rely on anyone reading anything, including emails.
  6. Unless you have something confirmed in writing, do not assume that they have not forgotten about it.
  7. If you hear nothing for ages, pester, pester, pester.
  8. Put your name on absolutely everything. And your RUT if it relates to something bought in Chile. If buying something in a shop, ask the cashier for a Factura and hand your RUT card over. They should be able to sort you out, even if it takes a while (about 20 mins in Falabella from memory).
  9. Anything that is rejected due to lack of proper documentation can be reclaimed in a later reimbursement if you have subsequently found the required documentation.

Tiny Ears Update

January 25th, 2012 No comments

Well, the first week of Tiny Ears here in Chile has gone pretty well. We’ve had a meeting with Professor Nestor Becerra-Yoma and his team at the Speech Processing and Transmission Laboratory at Universidad de Chile and their software seems to meet our needs well and we are now trying to come up with a deal whereby we can use their software whilst trying to find funding to allow them to enhance it with all of the extra bits that Tiny Ears requires.

There will, no doubt, be a post to come whereby I detail all the fun and games to be had trying to find funding here in Chile, but I think what is there presently will be enough to provide a good enough prototype with which to secure funding. Yet again I am wishing that  I was able to find a co-founder to help me with these business matters as I would far rather just concentrate on building the product and leave these other consideration to someone else, but I guess that’s what a startup entrepreneur is, someone willing to dirty their hands with all the jobs that need doing.

On that basis, and with that weight lifted from my mind, I am ready to start working on the storybook itself. I will be getting in touch with the various loosely organised Tiny Ears members who have agreed to work on the project and try and get everyone together on a Skype call to discuss what needs to be done. Now that the Speech Recognition part is at least partially resolved then all the different members of the team who I had been putting off getting overly involved due to the uncertainty of the outcome of the meeting with the Universidad de Chile. I really feel that Tiny Ears can start to move forward with purpose now.

Tiny Ears Team Update

January 9th, 2012 No comments

I know I’ve been very quiet on the Tiny Ears front recently, but it’s been rather hectic with the move recently. However, that does not mean that I’ve been idle. I’ve been networking like crazy, meeting many interesting people and building up a team of people around me to help make Tiny Ears the most awesome project ever. As such I would like to welcome the first of my new collaborators, Persistent Peril.

Ginny and Garth are fantastic, BAFTA award winning animators whose characterisations and style I love, and I believe kids will love their creations too. Their enthusiasm is amazing and I have no doubt that they will help me to create a beautiful and fun app. I am really pleased to be working with them.

What a #SWEL party this is

November 29th, 2011 No comments

Last weekend I participated in Startup Weekend Education London (SWEL), the first Startup Weekend Education to occur outside the US. Held at the Free Word Center in London, SWEL is a startup ‘Vertical’, an event aimed at helping startups get from idea to company in 54 hours. I went along with Tiny Ears to see what I could see and hopefully to find some passionate collaborators to help bring the project into reality.

The format of the weekend was this.

6:30 Friday night, participants turned up and networked while eating pizza before taking it in turns to give a 60 second idea pitch before the entire room in what was termed ‘pitchfire’. Those that pitched then had to drum up enthusiasm for their projects by gathering votes for their idea in the form of post-it notes. Educators, being uniquely powerful at an event dedicated to education technology, had ‘power up’ pink post-it’s to give an extra boost to projects they wanted to get behind.

Votes were then totted up and the top 15 ideas got brought through as the ideas that were to be worked on throughout the weekend. Pitchers then had to try and recruit a team that would work on their idea for the rest of the weekend.

Finally, after all that hard work, the weekend culminates in the pitches, selling your idea to the panel of industry notables, business honchos and money types. These judges then decide who the top three startups are and the overall winner gets a goody-bag of awesome prizes.

Despite crashing on my pitchfire 60 seconds, I got voted through and managed to persuade a small group of 3 people to Tiny Ears’ cause. These were Stefan Kreitmayer, a game designer, David Jennings an educator and psychologist and, part time, Mike Mompi,  who actually worked for one of the sponsors but decided to join in the Startup fun.

Over the course of the three days we defined how we were to approach the learning experience that the app was going to use and built a small prototype based upon one of those theories. It was great to get going on a prototype and now there are lots of ideas to put into a series of prototypes that we can user test against real children further down the line. We also thought about the business side of things and put some actual numbers based on customer research against those ideas.

Sunday was spent largely preparing for the final pitch. Everyone worked really hard over the weekend, but it was during this period that my team really came into their own. Mike was amazing at helping to construct the pitch and listening to me fumble over it until I got it right. His feedback was invaluable and I’m sure it was because of him I didn’t crash and burn as I did during pitchfire. Stefan was a rock all weekend, but his last minute video editing, Illustrator and logo creation skills really helped turn the pitch into something that looked professional. And not to leave out David, who was unable to attend on Sunday, but spent Saturday doing all the research that we used during the pitch.

And what, might you ask, was I during while my team designed user interfaces and created pitch content? Well, mostly programming to be honest, as always. But also networking and selling the idea, talking to educators and feeding back what I learned into the UI and design of the prototype.

The pitches were great. It was inspiring to see so many unformed ideas from Friday night had morphed into fully functioning, well structured, feasible business models. Many of the teams gave really fantastic pitches, including the best pitch intro video ever from Youny. My pitch went well and I was really pleased with what we achieved over the weekend.

The judges deliberated over dinner and my nerves were on edge when we all sat down to hear the final judgement. To my joy, Tiny Ears came in 3rd, with really good feedback from the judges. It was just the enormity of the task ahead that seemed to weigh against the project, which was a perfectly valid point and one which I agree with totally. But as I’ve always said, I know it’s hard but that’s no reason not to try. And if we pull it off it will result in something amazing.

Second place went to Edevents, a startup around streamlining the process teachers have to go through when organising things, from simple form filling in to organising and communicating large school trips. The winners, completely deservedly so, were Night Zookeeper, an inspiring and fantastically executed creative learning world for children to enjoy both in and outside of school. If you want to encourage your child to learn through creativity, then I really do suggest you check them out.

All in all the weekend was well worth it. Tiny Ears progressed in leaps and bounds over the weekend, the idea was validated many times over and I made some fantastic contacts. There are a number of projects that I will be following closely over the next few months, as I know many will be following mine. If you have an idea and need help to move it out of the idea stage and into reality, I highly recommend the Startup Weekend experience.

Finally, here is a video of the Tiny Ears prototype that we built over the weekend. Once again, thanks team. I couldn’t have done it withut you.

Tiny Ears Prototype from Emily Toop on Vimeo.

Categories: Radical Robot, Startup Chile, Tiny Ears Tags:

Introducing Tiny Ears

November 21st, 2011 No comments

Last week I met with Ellen De Vries of The Copy House for a naming session. A naming session is where uncreative people like me get to sit down with a creative person who is good with words to try and come up with a name for a project/business/enterprise. And, lo and behold, it works! During the session we came up with a few different names that we were happy with then systematically eliminated a bunch of them. Elimination was due to a number of things, including the impact of a name, trademarks already being taken, companies already formed with a name and simply because the more we thought about them, or said the names out loud, the less appropriate they seemed.

After all this I was left with 3 names to take away and ‘try on’ for a few days. After talking with a number of people, and mostly because it just fit, we are now ready to introduce the world to Tiny Ears, the technology that will, hopefully, be powering your educational applications very soon.

If you’re struggling to name your projects or company, I highly recommend organising a naming session with someone. I would also recommend that you use Ellen as she made the whole process fun as well as useful.

Categories: Radical Robot, Tiny Ears Tags: