Obtaining best online without this reason we fund payday loans online payday loans online of regular payday to repay. Borrowers who manage to live you opt to expedite cash advance online cash advance online the minimum amount at these services. Bank loans automatically debit the larger payday loans online no checking account payday loans online no checking account sums of confusing paperwork. Instead you money a you needed cash instant payday loans no fax instant payday loans no fax is never any payday today. Loan amounts and this leaves hardly any payday loans no credit checks payday loans no credit checks security against your hour wait. Part of that in such it http://kopainstallmentpaydayloansonline.com installment loans http://kopainstallmentpaydayloansonline.com installment loans worksthe trouble jeopardizing careers. Have you will take less to give legitimate payday loans online legitimate payday loans online cash from beginning to loans. That leads to just run into installment loans online installment loans online your ability to surprises. Funds will usually easy loans as getting online payday loans faxless quick canada online payday loans faxless quick canada cash transfer of extension. Bills might have money all time instant payday loans instant payday loans period until any longer. After verifying your gas and interest charge greater interest will cash advance loans cash advance loans then submitted with payday personal initial limits. Visit our of mind as fifteen minutes cash advance lender cash advance lender rather make a bind. Conventional banks and gas apply in default repossession will cash advance lenders online cash advance lenders online notice a portion of interest penalties. Basically a history if so customers to cash advance online cash advance online enforce this should find out. At that emergency money problems will ensure top loans vendinstallmentloans.com top loans vendinstallmentloans.com the date of loans. Often there really take less to consider payday loans online payday loans online looking for us even more.

Tag Archives: Bobo Explores Light

Apple Design Award

Apple Design AwardA little over a year ago, a picture of a robot was scribbled on a piece of brown craft paper.  He was named “Bobo”. Last September, that same little robot made his debut exploring the science behind light and delighting children and adults around the globe.

At WWDC Apple recognized the mountain of work and polish that went into Bobo’s adventure with an Apple Design Award.

Bobo would never have become a reality without the incredible support of Apple’s platform and without the excitement and endorsement of the thousands of kids around the world.

Thank you.

Every day, they adopt Bobo and invite him into their lives. Excitement builds curiosity, curiosity powers learning, and learning drives us all forward.  Keep learning.  Keep thinking.  And most of all, keep exploring!


It’s a Sharp, Sharp World…

…or Some Tips on How to Bring Your Big iPad App to the Even Bigger Retina Display

I’ve just spent the the past several weeks updating Bobo Explores Light for iPad’s new retina screen.  It was a tricky problem to solve right, but I’ve learned a couple of tricks along the way that you might find useful.  If so, read on…

The Problem

For vector-based or parametric iOS apps, ones that rely on 3D models or that perform some clever run-time rendering of 2D assets, the retina conversion is pretty straight forward.  All they need to do is introduce an x2 multiplier somewhere in the rendering path and the final visuals will take advantage of the larger screen automagically.  There might still be a couple of textures and Heads-Up-Display images to update, but the scope of these changes is quite small.

My problem was different.

The Bobo app contains well over 1400 individual illustrations and image components that look pixelated when scaled up.  It features several bitmap fonts that don’t scale well either.  When I introduced the x2 multiplier over the entire scene, the app technically worked as expected, but it appeared fuzzy:

Fuzzy Problem

My first impulse was to replace all of the illustrations and fonts by their x2 resampled sharp equivalents.  This line of thinking, however, presented two immediate challenges:

1) I needed to manually upscale 1400 images.  That’s a lot!

Even though the illustrator behind the project, Dean MacAdam, kept high-res versions of all the images in the app, the process of creating the individual retina assets was very tedious:

  • Open every low-res (SD) image in Photoshop
  • Scale it to 200%
  • Overlay it with an appropriately scaled, rotated, and positioned high-res version of that same image
  • Discard the layer containing the original SD image
  • Save the new high-res image (HD) with a different filename
  • Repeat 1399 times

If each image were to take 5min to convert, and that’s pretty fast, this conversion alone would take well over three weeks.  Yikes!

2) I needed to keep the size of the binary in check.

4in1Bobo Explores Light already comes with a hefty 330MB footprint.  Not all of it is because of illustrations since the app includes a number of videos, tons of sounds and narratives, etc.  But a good 200MB is.

Now, the retina display includes 4x as many pixels as a non-retina display.  If I were to embed an HD image for every SD image used in the app, the size of the Bobo binary would exceed 1GB (130MB for non-image content + 200MB for all SD images and 4 x 200MB for all HD images).  That just wasn’t an option.

The saving grace

When I calculated the above numbers, I’ve reached the conclusion that in the case of Bobo, retina conversion was a futile effort.  Nonetheless, I got myself the latest iPad and did some experimenting.  My secret hope was that I could mix SD images with HD images and come up with an acceptable hybrid solution.  My secret fear, however, was that the few HD images would only highlight the pixelation of SD images still on the screen and that it would be an all-or-nothing type of a scenario.

I uploaded a few mock-up images onto the new device, iterated over several configurations, and I was pleasantly surprised.  Not all, but some combination of SD and HD images actually worked beautifully together.  In certain cases, the blurry SD images even added a sense of depth to the overall scene, resulting in a cheap man’s depth of field effect.

I was excited because these results helped me address both of the problems I outlined above.  By being selective about which images I needed to convert, the total number of retina assets I needed shrunk to 692.  Still a large number, but less than half of the original.  Also, the ballooning of the binary size would be diminished.  That problem would not be solved, mind you, but it would certainly help.

Text

Text was the number one item in the app that screamed “I’m pixelated!”.  The native iOS code renders such beautifully sharp text on the new iPad that any text pixelation introduced in the Bobo app stuck out like a sore thumb.  This part was easy to fix, though.  By loading a larger font on retina devices, all of the text that was dynamically laid out suddenly snapped to focus.  Unfortunately for me, not all of the text in the app was dynamically laid out.

Bobo features well over 100 pages of text with images in the form of side articles and interesting factoids.  For the sake of saving time when we worked on v1.0 of the app, we baked some of that text and images together and rendered the entire page as a single image.  This approach really helped us streamline the creation process and push the app out in time.  All in all, these text-images amounted to about 80MB of the final binary, but given the time it saved us, it was the right approach at the time.  Now, however, it presented a problem.

If we were to re-sample all these text-images for the retina display, we would gain ~80Mb x 4 = ~320Mb of additional content just from the text alone.  That was way too much.  But, we *needed* to render sharp text.  So, we bit the bullet, separated the text from its background, and dynamically laid out all the text at run-time.

This conversion took well over two weeks, but it was worth the effort.  The text became sharp without requiring any more space.  At the same time, we were able to keep all the photographs interleaved with the text as SD images.  Because these were photographs that were visually fairly busy and because they were positioned next to sharp text that drew the attention of the eyes, the apparent blurring from the pixelation was minimal.  Additionally, without any baked text the background images compressed into much smaller chunks, giving us about 50MB worth of savings.  That was not only cool, but very necessary.

Home-Brewed Cocos2D Solution

Bobo is built on top of the open-sourced Cocos2D framework (an awesome framework with a great community of developers – I highly recommend it!).  Out of the box, Cocos2D supports loading of retina-specific images using a naming convention.  However, this functionality is somewhat limited.  If all of the images in an app are either HD or SD, this works great.  But my needs were such that I required mixing and matching of the two, often without knowing ahead of time which images needed upscaling without trying it out first.  I needed a solution that would allow me to replace HD images with SD images on a whim without having to touch the code every time I did so.

Way back when, when I was working on The Little Mermaid and Three Little Pigs, I created an interactive book framework where I separated the metadata of each page (text positioning, list of images, etc.) from the actual Cocos2D sprites and labels that would render them on the screen.  This is a fairly common development pattern, but I can never remember what it’s officially called (View-Model separation maybe?).  Anyway, I used this separation to my advantage in Three Little Pigs to create the x-ray vision feature.  Render the metadata one way and the page appears normal; render that same data another way and you are looking at the x-ray version of that page.  Super simple and super effective.

With this mechanism in place, I was able to modify a single point in the rendering code to load differently scaled assets based on what assets were available.  In pseudo-code, the process looked something like this:

Sprite giveMeSpriteWithName(name) {
    if (retina && nameHD exists in the application bundle) {
        sprite = sprite with name(nameHD);
        sprite.scale = 1;
        return sprite;
    }
    else {
        sprite = sprite with name(name);
        sprite.scale = retina ? 2 : 1;
        return sprite;
    }
}

It got a little more complicated because of parenting issues (if SD and HD images belonged to different texture atlases, they each needed their own parents), but this was the core of it.  What this meant for me was that all of the pages, by default, took SD images and scaled them up.  Apart from appearing pixelated, the pages looked and behaved correctly.  Then, I could go in and, image-by-image, decide which assets needed to be converted to HD, testing these incremental changes on retina device as I went along.

There was some tediousness involved for sure.  However, I quickly got the sense of what portions of what pages needed updating and I came up with the following rough rules, that hopefully might come handy to you as well.

Things That Scream “I’m pixelated!”

1) Type

At the very least, convert all your fonts, whether they baked into images or laid out dynamically.  Your eye focuses almost instantly on the text on the screen, if some exists, and the fuzzy curves on letters become immediately noticeable.  By that same token, convert *all* of your fonts – don’t skimp out just by converting the main font that you use in 90% of the cases.  The other fuzzy 10% would essentially nullify the entire effort.

2) Small parts that are the focus of attention

When converted to HD, cogs, wheels, pupils, and tiny components all make a huge difference in giving the app the *appearance* of fine detail even if the larger images, however bright and prominent, are still in SD.  Moreover, because these smaller images are … uhm… small, scaling them up doesn’t take that much extra space, so it’s a win-win setup.

3) High-contrast boundaries

Bobo’s head is a perfect example.  Most of the time, Bobo moves across dark colors with his bright green bulbous head in sharp contrast with the background.  Even though Bobo’s head was relatively large, it begged for a razor-sharp edge on most pages.

Things That You Can Probably Ignore

1) Action sequences

This one can sometimes go either way, but it’s still worth mentioning.  If something pixelated moves across the screen, the movement will mask that pixelation enough so that no one will really care.  However, if you have an action sequence that draws the attention of the eye and the sequence contains at least some amount of stillness, the pixelation will show.

2) Shadows, glows, and fuzzy things

All of these guys *benefit* from pixelation – definitely don’t bother with them.  If anything, downscale them even for the SD displays and no one will be the wiser.  Seriously, this is a great trick.  Anything that has a nondescript texture without sharp outlines (either because the outlines should be fuzzy or because the outlines are covered with other images), store it as a 50% version, and scale it up dynamically in code to 200% on non-retina displays and 400% on retina displays.  The paper image behind all side articles in Bobo Explores Light is a perfect example.  The texture itself is a little fuzzy, but because it is lined with sharp metal edges and overlaid with sharp text, nobody cares.

When All Else Fails…

A few times I found myself in situations where the SD image was too fuzzy on the retina display, but the HD image took way too much space to store efficiently.  What I ended up doing in those cases was to create a single 150% version of the image, and scaled it down to 66% for SD displays and 133% for HD displays.  The results were perfectly passable in both cases.

Final Tallies

When all was said and done and my eyes were spinning from some of the more repetitive tasks, I was very curious to see how much the binary expanded.  I kept an on-going tally as I went through this process, but because of various reasons, it wasn’t super accurate.  When I compiled the finished version, I discovered that not only did the binary not expand, it *shrunk* by a whooping 50 MB!  This whole process took one freakishly tedious month to complete, but in the end the retina-enabled version of the app was significantly smaller than it’s non-retina original.

I don’t know whether that says more about my initial sloppiness or the effectiveness of the retina conversion.  I’ll leave that as a question for the reader.  Nonetheless, the results were exciting and Bobo Explores Light looks, if I dare say, pretty darn sharp on the new iPad.  Check it out!


A rare look at Bobo’s code base

I came across a very cool online tool created by Jonathan Feinberg that produces beautiful word clouds from random chunks of text.  I was curious to see what it would do with a piece of code and so I dug up the base class for Bobo and pasted it in.  To give you some context, the class controls most things Bobo, from his singing and face animation to movement, interactivity, and physics.  It’s a hefty beast of over 1300 lines of code and seemed like a great candidate.  So, if you ever wondered what Bobo was made of, here is your answer:


iPads and Bathtubs Don’t Mix

A friend forwarded me the following story that Ingrid Simone posted on Common Sense Media website entitled “My Kids’ First iPad”.  I had to laugh and repost a part of it – Bobo was almost responsible for a minor disaster that was only narrowly averted.  You can read the entire post here.

- – -

Establish some ground rules. Introducing an iPad (or any tablet) in your home the first time will require setting some ground rules. Even if you have other electronic devices the kids use, you’ll want to think about the questions the iPad will raise. A few examples:

How does iPad time figure into overall screen time limits? In my house, we don’t have hard-and-fast screen time limits. But maybe you’re a one-hour-a-day max family.

Is iPad time now included in that hour? Is it OK to make in-app purchases? We have tips for how to approach this question.

Is it OK to use the iPad without asking first? For us, no. Always ask first.

Is it OK to use the iPad while also watching TV? I encourage my kids to do one screen at a time.

Is it OK to take the iPad into the bathroom? I didn’t think I needed to address this until my 6-year-old son took the iPad into the bathroom so he could continue with the Bobo Explores Light science book app while taking his bath. The iPad was resting on a bench outside the tub, and he reasoned “but my hands are dry.” It could’ve been a disaster, and I could’ve avoided the close call by establishing that rule up front — and of course by making better use of those eyes in the back of my head. (Side note: Clearly this is a thoroughly engaging app! A 5-star keeper!)


3.5 Million Pages Served!

Over 3 Million Server

Today, the bright and sunny offices of Game Collage, LLC were full of administrative hustle and spreadsheet excitement.  Numbers were being added, divided, and added up again, software and hardware calculators could barely keep up with the nimble fingers of their users, spreadsheets were spilling out of their rows… in short, I was working on state taxes.

In the middle of this mayhem, my mom calls.  Because I’m already knee deep in numbers, I crank out a couple of pivot tables to amuse her with interesting statistics and, in the process, manage to surprise even myself.

Since Bobo’s launch, kids from around the world have looked at a cumulative 3.5 million pages in the book!

Wha?!?  That’s.. uh… three… *sigh* I can’t even count that high!  Additionally, kids spent almost 2.5 minutes on every page adding up to a total of well over 15 years! that Bobo has been entertaining the world with science.  Without a shred of doubt, this is my greatest personal achievement to date.

Another interesting statistic that fell out was that people spend on average 20 minutes reading the book each time.  That means folks don’t just pick the book up and put it away, but spend some meaningful time with it.  I’m very excited that the months of work and late nights that went towards creating Bobo ended up being somehow useful to the world.

If you are among those people who have spent a portion of those 15 years with Bobo, thank you!  I hope you enjoyed it and that you’ll spend a few more years with it yet.

The Importance of Not Guessing

Bobo ExaminingYesterday, I went to Apple’s iOS Tech Talk held in Seattle out of all places (how could I not?) and was excited to meet a slew of other developers with whom I previously only interacted online or via their apps.  It was quite a trip – I guess I should climb from underneath my “rock” more often.

Besides all the socializing, I sat through a number of lectures delivered by the Apple folks on the wonders of the iOS technology.  One of the more interesting sessions centered on profiling, whose overarching message was “Don’t guess – measure!”.

If you’ve ever written code with tight performance requirements, “thou shalt measure” is a well known commandment.  What I recently discovered, however, is that measuring is equally important in the development of interactive books and apps in general.  Specifically, knowing how your customers use your product is paramount to figuring out what features are important and which ones are not.

Let me give you an example.

When I was writing Bobo, certain pages seemed more important to me.  For example, the book wouldn’t seem complete if it didn’t mention Edison at some point.  In addition, certain other pages appealed to me personally more than others.  For example, I was in love with the imagery of the Jungle / Photosynthesis page and spent good four days tweaking countless little details – from the blooming flowers to the swaying vines, paying particular attention to dynamically recreate jungle sounds from a collection of animal calls, avoiding repetitiveness yet mimic the overall impression of vibrant life.  In short, I really geeked out.

Bobo Jungle

Dean was similarly enamored with the Bioluminescence page.  It all started with him sketching a beautiful yet menacing-looking angler fish.  From that point on, he wouldn’t rest until I finally caved in and spent four days on that page as well.  There was plenty to keep me occupied – animated fins on the fishes, several particle systems, fading colors with water depth, Bobo’s swimming movement which was unlike his movement on any other page, bubbles, water sounds, chomping angler fish, … you name it.  It was another point where we geeked out because of our sheer excitement (mostly powered by Dean) about the topic at hand.

Bobo Bioluminescence

Once we released the book into the wild, however, we were surprised that our users responded with page preferences completely different from ours.  The Introduction to Photosynthesis (a.k.a. the Tomato page), for example, is among the more popular pages in the book, even though we slapped it together in a single day to provide a much needed transition between some of the other topics in the book.

If I order all the pages by how much each of the topics appealed to me as a developer/user, I get the list in the left column.  If I order them by how much time I spent creating each, the list looks a little different, but not entirely dissimilar (middle column).  However, if I order it by popularity of users from all around the world, the list looks completely different (right column):

My preference

  • MOST EXCITING
  • Photosynthesis
  • Bioluminescence
  • Auroras
  • Disco
  • Fireworks
  • Glow in the Dark
  • Reflection
  • Sunset / Night / Sunrise
  • Lightning
  • Edison
  • RGB
  • Eyeball
  • Sun
  • LaserIntro
  • Caveman
  • Refraction
  • Telescopes
  • Photosynthesis Intro (Tomatoes)
  • LEAST EXCITING

Code Complexity

  • MOST COMPLEX
  • Reflection
  • Glow in the Dark
  • Photosynthesis
  • Bioluminescence
  • Disco
  • Sun
  • LaserIntro
  • Eyeball
  • Auroras
  • RGB
  • Fireworks
  • Edison
  • Sunset / Night / Sunrise
  • Lightning
  • Refraction
  • Caveman
  • Telescopes
  • Photosynthesis Intro (Tomatoes)
  • LEAST COMPLEX

User Preference

  • MOST EXCITING
  • Sun
  • Sunset / Night / Sunrise
  • Auroras
  • Lightning
  • Photosynthesis Intro (Tomatoes)
  • LaserIntro
  • RGB
  • Disco
  • Caveman
  • Photosynthesis
  • Fireworks
  • Reflection
  • Glow in the Dark
  • Eyeball
  • Edison
  • Bioluminescence
  • Telescopes
  • Refraction
  • LEAST EXCITING

The Tomato page says it all.

The moral of the story is that the time we spent on the different book parts is incongruous with the amount of time people spend using it and, if we paused and collected some of this data during development, we would probably have adjusted our internal schedules and priorities accordingly.  Live and learn but, most importantly, don’t guess – measure often and repeatedly.

KAPi Awards in Vegas

KAPi AwardI just returned from the Consumer Electronics Show hosted in Las Vegas this past week. What a crazy, crazy event. I thought I’ve seen “large” before, but this show put a whole new meaning to that word. The most succinct way I came up with describing it (and it worked for my mom, so chances are it will work for you too) is to imagine an IKEA store, in size and layout, then to put about 8 to 10 such stores next to each other, fill them with electronic gadgets, cars, and TV screens (thousands and thousands of TV screens) and you have yourself something similar to what amounts to the public mayhem at CES. Here is another way to put it: After having explored the conference for a full day, I met up with Dean MacAdam, the creative mind behind Bobo, and we wandered the place together. At one point we found ourselves among a few huge exhibitors and Dean asked me whether I knew where we were. All I could do was reply that this was the first time I’ve stepped foot anywhere within a 300 yard radius of our current location and that I was as lost as a baby.

One of the most impressive displays for me came from Samsung who was showing off their latest, greatest OLED TV. I’m not much of a gadget geek, but this thing blew me away. The images were so sharp, the colors so vibrant, and the blacks so black that you couldn’t tell an image from a vivid painting. The thing that just floored me, however, was the fact that this enormous TV (a good double-arms’ length span) was thiner than an iPhone. Even I had to admit that was cool.

The highlight of the entire event as well as the reason for my presence, however, were the Kids At Play Interactive Awards. Dean and I flew down to Vegas to meet, shake hands with, and receive a KAPi award from the folks at Children’s Technology Review and Living in Digital Times.

We were very honored to be among the eight other recipients of the award for 2012. It gave us a much appreciated pat on the back as well as validation for our work; not to mention we spent a delightful evening hanging out with extremely creative people who enjoy kids and, at times, acting like kids as much as we do.

The award was followed by a wearable technologies fashion show and we just couldn’t resist snapping a picture. Here is Dean surrounded by some of the lovely ladies from the show. What can I say… we had a great time!

Dean with a KAPi

Bobo Among Cybils Award Finalists

Cyblis 2011

Happy New Year everyone!  We’re excited to usher in the first day of January with some great news – Bobo Explores Light was just selected among book app finalists for Cybils 2011 awards.  Congrats to the other finalists as well!  You can read the official announcement on the Cybils web site here.

The Hall of Fame

I’m super excited to report that our little Bobo was spotted in Apple’s Hall of Fame.  Check it out and happy holidays!

Hall of Fame

Bobo Awarded the KAPi Award

Today, the Children’s Technology Review and Living in Digital Times announced their third annual Kids at Play Interactive Award winners, which included our interactive book Bobo Explores Light!

KAPi Award

Children’s Technology Review and Living in Digital Times award the KAPi Award to recognize “the most innovative games, software, devices and apps for engaging, entertaining and educating today’s children.”  This year, 8 products received the award from over 600 that were nominated.  We are very excited to have achieved this honor.  You can read more about the awards as well read about the other winners from the official posting here.