Search This Blog

Friday, December 10, 2010

Embracing digital tools for early development - all in 45 minutes a day.

When I grew up, it was common for parents (including mine) to assume that making your child watch TV, or play video games at an early age was not the right thing to do. Anything to do with TV or video gaming was assumed to 'corrupt young minds' and the general thought process was to ensure your child grows up on traditional things (like real physical toys, pen and paper, chalk boards and educational books).There was a valid reason for this - in old days, content in such mediums was purely for entertainment and little was done for conscious education for children. Interestingly, that notion persists very strongly even today. I have lots of friends who have brought up their children pretty much devoid of TV and digital tools. When I say devoid, I don't mean a total ban. They let them use these objects once in a while, but not in a 'let it help you grow' mode. It is treated as pure entertainment and curtailed often to just one show, played over and over again, or just one game, played over and over again.

It is impossible to state what is right and what is wrong when it comes to bringing up a child, because the final decision is yours, as a parent. All  I can say is parents who are able access such new mediums should give it a serious look as times have changed. There is a slew of fantastic learning tools available that offer a level of interactivity and immersive-ness (is that a word?) that never existed before.

In general, I am a technologist. My work, my hobby and my passion all converge to one word: technology. I am totally for adopting digital tools where necessary if I feel it improves mental or physical growth as long as I am convinced that it is not also harming my child in any significant way. So in this post, I'd like to talk about how we  leveraged technology to help in our child's growth.

As a general rule, we as parents subscribe to the rule of limiting the time our son had his hands on these tools (we typically allow a 45 minute window at most each day for this, with weekends getting a little more digital time) and ensure that he mixes his digital tools with a lot of physical activity (the usual running, playing, reading books at night, board games, etc.), but the focus of this post is how we chose to maximize those 45 minutes each day in selecting the right digital/enterta

nment tools that help his mind grow.

Scope of this post

The rest of the post will talk about several key applications that I think have contributed greatly to reading, writing, music and social skills of our son at an early age. To you, I am not going to talk about  what is right/wrong, how much TV they should or should not watch, whether it is wise to let them play games or not (of the digital kind) etc. That is your choice. Should you choose to expose your little ones to the digital era at an early age, I will simply list tools and applications that we used and felt were of  significant help.

Each attribute mentioned later in the post are attributes that I've seen grow rapidly with him by the time he turned 3 and a half, so the results are obvious to me (i.e. ability for music, reading, writing, social skills, visual and problem solving skills)

Friday, November 19, 2010

Cocos2D iphone tutorial: Die, Grossini, Die! – Part II

(Click here Part I)

Previously, we described the fundamentals of a Cocos2D game (or in this case, 'show') and explained how everything is set up. Let's describe the game, now.

If you came here directly, Part I is here.

The image on the left is the splash screen that I use for the game. I replaced the default Default.png cocos2d image with this one. You will notice Grossini has a nice 3D effect here. That's just a simple Bevel effect on a layer. You can do this in GIMP, Photoshop or many other editors. The source for this classy looking Grossini image (well, just the regular image with a stick drawn on the right is here)

Cocos2D iphone tutorial: Die, Grossini, Die! – Part I

Click here for Part II.

What do I have against Grossini? I don't like the  way he dances.

Okay, if you are shocked, take it easy. Its my spotty sense of humor. Who is Grossini? Well, Grossini, is a bald headed dancing sprite that Cocos2D has made immortal. I have just started learning Cocos2D as a platform for game development. After my earlier effort of building Bricks using UIKit, I discovered Cocos2D-iphone and this is my first venture into it. Cocos2d-iphone is a port of the cocos2d engine for the, umm, iphone by Ricard Quesada.

Cocos2D is an excellent and easy to use iPhone 2D gaming engine with pre-built operations for a whole bunch of stuff. While there aren't too may good books on Cocos2D today (there are some that will be released later this year), there are excellent online resources and tutorials on the same.

The Obligatory Video of what we will be developing

No, its not really a game. Just sit back and watch some jumping and blood-shed.

What "GrossiniDie" is intended to do

You may have already figured it out from the video. Basically, our goal is to present a user with a "Main Screen". Once he selects "Play Game" we want to show an animated sprite (Grossini) dancing on the screen and jumping around as well. As he jumps, there are knives positioned at the top. If he hits a knife, we play a horrid scream, spill some blood and he continues to bounce. To make it is little more random, the knives  move up or down a bit after a hit. This is a "show" not a "game". You sit back and giggle at Grossini's fate.

Wednesday, October 27, 2010

Tutorial: iPhone Game Programming- professional Bricks (Part III)

Click here for Part I

Click here for Part II

In Part II, we dove in to the implementation of pretty much every function except the core gameplaying logic. This part will now discuss the implementation of the core game playing logic and how I handle touch detections.

Tuesday, October 26, 2010

Tutorial: iPhone Game Programming- professional Bricks (Part II)

Click here for Part I

Click here for Part III

In Part I, we discussed the approach to implement a professional looking Bricks game for the iphone. We also described the basic design approach and broke down the header file in detail so you get an idea of how things will be. This part will now discuss the implementation. Before we do that, here is the video again of what we are implementing.

As I wrote earlier, this being a pretty small game, the entire logic is stuff into BricksViewController.m. Let's first take a look at it in totality and then I'll proceed to break it up. Click on the "show source" box below to expand it.

Monday, October 25, 2010

Tutorial: iPhone Game Programming- professional Bricks (Part I)

(Read Part II here)

Bricks - my all time favorite game (just after Tetris). So this post is a tutorial on how to write your own 'bricks' for iphone


What's a game tutorial that:

a) Does not look professional?

b) Does not have multiple levels?

c) Does not have ghastly sound effects?

d) Does not have explosions?

e) Does not have  missiles?

f) Does not have a "Hack Mode"? (w00t)

Before we get anywhere, lets take a look at what we will be building. Its a 3:30 min video which I strongly recommend you see first so you can related explanations easier. (And also, it took me all of 10 minutes to create it, so you better spend 3:30 admiring it :-D)

History & Disclaimer

I am by no means an iPhone developer. Actually, I am by no means a developer. While I've been involved in technology very deeply, my work does not require me to code, and so, I've mostly been out of coding for the past 12 years (with the exception of the occasional perl coding for personal projects).  But there is just too much going on in the mobile space for me not to get my hands dirty again. So, with that in mind, I took it upon myself to learn basic iPhone programming and what better way than to define a project? My project was "Bricks".

The disclaimer part: Since this is pretty much my first attempt, I can't comment on this tutorial being a "good approach". All I can say is,  "if I can code for iPhone, you can too" !

Finally, this is not a "from scratch how to code for iphone" tutorial. I assume you know about Xcode, Views, Interface Builder etc.

Monday, October 11, 2010

(OT) A WTF moment

Okay Google. If you don't want me to log in ever again to your service, give it to me on my chin. I'll take it. This is under the belt.

Thursday, September 23, 2010

Leap of Faith: Migrating from Windows to Mac

(image credit: snow leopard from

The Journey from Windows to OS-X

I've been a windows user for over 15+ years. Very recently, I had the need to simultaneously program on Android as well as iPhone. While it was pretty simple to get an Android development environment up and running on my laptop, iPhone development mandatorily requires a mac. Having to maintain two laptops and switch between them is a pain, so I thought this was the right time to fully migrate to a Mac laptop and take the leap of faith. So off I bounced to the Apple Store and asked a rep "I need a laptop so I can write programs for iPhone". I felt incredibly stupid saying this. It sounded like I was an antique way out of his league. The sales guy promptly flashed out a spanking new mac-book pro and told me this is all I needed to get started. The specs looked fine - 2.4 Ghz core 2 duo, 4 gig RAM, Wireless-N, 250GB Harddisk et al, so I knew it was a good configuration, hardware wise. Having never used the OS, I had no clue on how it would perform, but what the heck. I bought it and took it to office. I opted not to go for the slightly cheaper macbook and I'm glad I did not.

While I am a newcomer to the  OSX world, I am not a newcomer to Apple. Having embraced the iPhone 3GS, Iphone 4 and iPad a few years earlier, I quite expected Apple to live up to the standards of these devices when it comes to the laptop. I knew, however, that I depend on a lot of Windows applications which may or may not be available for the Mac, but like they say, I took the "leap of faith". I also knew that the "sticker price" for a macbook pro ($1199) was not going to stop there. Apple runs a dictatorial ship - it forces you to change your tools/equipments/habits to fully experience the benefits of their platforms...

My Windows laptop was a lovely Sony Vaio SZ650 - a very light (2.8lbs) high performance laptop which I've been using for the past 3 years and loved it. So here are my experiences, the challenges I faced and how I overcame them (and those I haven't found a way out yet):

Thursday, July 15, 2010

ios 4.0.1: Seems to (partially) fix the irritating proximity sensor bug

(Update July 16: Nope. Better, but still messed up. See update below)

So I just patched my iphone 4 with ios 4.0.1. While consumers, and specifically tech sites were going nuts about the reception, I just installed the bumper and it fixed the problem for me. That was pretty much a non issue with me post the bumper.

The one issue that really bugged me was the buggy proximity sensor. Every time I put the phone to my ear, with a bit of movement, I would either mute the call or add another line. Most irritating. My initial tests seem to indicate that ios 4.0.1 fixes this nuisance. I certainly hope that is true as I continue to use it. I've been reading others say it does not fix it, but I tried 3-4 calls now and I did not experience that issue. But time will tell.

I don't really care if they increased the bar size, decreased the bar count and what not.

What do you feel? Did 4.0.1 fix the proximity sensor bug?

Update: July 16:

No, 4.0.1 does not completely fix this. It seems to certainly be better, but I can't say its completely fixed. I've made several calls now and I've managed to:

a) Start Facetime by mistake

b) Put a call on mute

without my doing anything out of the normal (sitting on my chair, talking to a colleague over the phone)

Fortunately, Jobs publicly announced the proximity sensor fix in the next release. I look forward to it, and a refund on my bumper.

And the apple antenna page is cool too.

Friday, June 25, 2010

Facetime on Iphone 4: Vanilla unencrypted STUN and SIP

(July 13: sorry for the downtime, looks like my bandwidth limits were exceeded. Upgraded my hosting package - fixed)

(note: Only the call part is Vanilla SIP. The procedure for registering a Facetime user into their servers etc. is all non-SIP, encrypted/ciphered.)

(for my user review of the iphone4 and bumper read here)

Well heck, good job Apple! I just tested facetime and did a quick check on its protocol. No hacking needed - just an on the wire black box inspection - its just plain SIP and STUN for firewall discovery. Apple plans to make this protocol public, and they seem to have done an excellent job. And thanks for showing the world that you don't need complicated encryption and proprietary tunneling tricks for an excellent experience. You need a good codec set, a good media stack that can adaptively switch codecs and manage buffers  and a good 'point-of-presence' network for the most part.

I am just going to restrict this post to an overview of the flow.


click on each image for a larger size (if they are small)

This is a facetime all flow - good, plain, SIP (they use MESSAGE for some proprietary data exchange during the call)

rest is perfect sip.

The protocols are here to see (besides SIP)

Ah here is their 200OK for INVITE

A quick look at their RTP stream:

Good Job Apple. Thanks for putting in an excellent quality, SIP client embedded into your dialer experience.

Sunday, January 24, 2010

My interview at the SmartGrid Summit: South Miami, 2010

Live from TMCnet ITEXPO 2010 (Miami, Florida)

Interviews with Arjun Roychowdhury, Asst. Vice President at Hughes Systique Corp (HSC). HSC is a HUGHES company, an industry leader in IP and communications technology.

(recorded at 2010-01-21 12:04:39)

click HERE if the video below does not show up.

Sunday, January 10, 2010

Air-India: The Maharajah experience?

As a frequent traveler, I’ve flown several airlines to several places. However, the one airline I’ve categorically avoided in the past is India’s own Air-India (AI) for international travel. I guess it’s because pretty much all my life,

I've only heard bad things about its service, quality of airlines etc from my parents , their friends and friends of friends. But this was 15 years ago. Times change. However, I was still not willing to try AI due to its (in)glorious past track record that was handed down to me by word of mouth and from generation to generation.

A week ago, I had to travel to India for work. This was January 2010 and the fog conditions in Delhi were particularly bad. As I sit in my hotel in India and look out of the window and write this article, the fog is really bad – hardly any visibility. With this much of fog,  most flights that arrive in Delhi late at night get rerouted to other cities and make it into Delhi only during daytime the next day. My colleagues who arrived in India earlier warned me of the condition, so I looked around for flights that landed in the day in delhi. Pretty soon I realized there was only one option for me to try: Air India. Drat. All the other flights like Lufthansa, United etc all arrived late at night and the only other daytime options were ridiculously expensive. I had read that Air-India had recently re-done its entire international fleets and there were new planes and newly re-designed business class and first class seats which according to their marketing was “comparable to other international flights”. Furthermore, the fact that it flew directly from IAD to Delhi with a short stop at JFK was a very attractive option for me, so I decided to take the plunge and try out this carrier for the first time in my life. What follows next is my experience.