Teaching Programming to Kids

It appears that the next phase of “online education” industry’s growth will now be squarely focused on teaching computer programming skills to kids.

Tynker has raised $3.25 million in funding. For a product that seems a direct rip-off of Scratch that’s come out of MIT (specifically its Lifelong Kindergarten group led by the talented and awesome Mitch Resnick) in 2006, I had to wonder what was going on in the heads of those who agreed back up Tynker.

Delving deeper, it’s clear that it’s not the product, it’s the implementation that is different. Having it hosted on cloud and providing teachers (or groups led by educators) tools to create lessons, track progress, etc. as premium services is probably where Tynker hopes to find its sweet spot.

However, if Tynker is based on Scratch, there are bunch of other cool ‘derivatives’ that are inspired by it too: Berkeley’s Snap! and Google’s Blockly immediately come to mind. And then there are new and upcoming products like Hopsctotch which is aimed at iPad.

Interestingly, Scratch’s wiki actually lists out a bunch of alternatives to Scratch including paid variants like Stencyl.

I am sure that there will be a sort of “gold rush” to adopting this BYOB approach to create children-focused tools and software to teach them computing skill. And if Tynker offers any clue, with the real hard-work of core framework already done and in place thanks to Scratch and its community, it’s going to be relatively easy for others to follow suit and provide alternative and maybe even better implementations since the money is largely in the hands of educators who’ll use those tools to prepare their courses and curriculum.

What’s cool and a possible area of innovation for some future start-ups is marriage of BYOB approach of Scratch with robotics kits. A working model of that is already in place in LEGO WeDo, perhaps thanks to Mitch’s previous work with LEGO MindStorms.

Then there are some refreshing approaches like Code Spells which teaches children Java code by letting them create spells written in the language, and could very well become the “missing link” between BYOB approach of Scratch and the more traditional CLI or IDE-based programming.

Thoughts on Love

Back in 2008, somebody asked me a question about love and relationships.

Can two people stay happy together?

Here’s what I had written back.

It’s not easy. Look, the best thing you can do is to find a person who loves you for exactly who you are — good mood, bad mood, ugly, pretty, handsome, this habit, that habit — the right person will always think you’re the best in the world, no matter what.

Sometimes it’s hard to see the good in other person because you’re so involved with what you are thinking, because you are focusing on what you are feeling more than you remember how much you love the other person. At times like these, you might even get into a fight with the other person, and even think that the love is gone.

You have to remember that LOVE is not about how the other person makes you feel — it’s about how you make the other person feel no matter if the other person even acknowledges your love. It’s a one-sided affair — from your heart to the person you love. The lucky ones get loved back. Don’t insult your love by expecting a return — it’s not a bank account, it’s love!

HTML Image Maps Tutorial for Beginners

Once upon a time, I was a member of HTML Writer’s Guild and used to participate in their mailing list discussions as well. Here’s an old post I came across today while cleaning my system that’s probably still relevant.

Notice the date on which it was written. Ancient, huh? And yes, we did write the markup in CAPS back then.

HTML Image Maps Tutorial for Beginners
Written on Tue, 30 Dec 1997 01:55:49

When we use image maps, we are essentially defining areas of a picture as “hotspots” and the action to take when that “hotspot” is activated.

Let’s take an example. A car. You want it to be that when you click on the glass, it takes you to the page giving finer details of glass and when you click on the rest of the body, it takes you to finer details of how the car was painted. For this, we are going to “map” the image to different “HREF” links. How?

The standard, minimum recommended image tag is:

When we want the image to use a map, we add a "usemap" attribute. So, the image tag becomes:
<IMG SRC="car.jpg" ALT="A car" WIDTH=100 HEIGHT=50 usemap="name">

Now, we are telling the image to use a map. But where is the map? We have to define it first. How do we do it? We use the <MAP> tag. We also have to give it a name which we will specify in the “usemap” attribute. Let’s see what I mean:


So, the image tag will be:
<IMG SRC="car.jpg" ALT="A car" WIDTH=100 HEIGHT=50 usemap="#car">

As you might know, we use the “#” to tell the browser that the what we just referenced to exists in the same HTML document somewhere (usually people put the maps near the end of the document). So, it turns out that we use the “name” attribute in the “MAP” tag to bookmark the map and we can put a reference to this bookmark just as we would to any other standard <A NAME=”name”> bookmark in a HTML file. Notice something? The procedure remains the same. Only, since the content of the bookmark are mapping directions, we use <MAP> & </MAP> instead of the usual <A> & </A>. Easy till now? It gets simpler.

So now we know how to set a bookmark to mapping directions and we know how to call it for an image. Now we see how to “program” these directions for an image. Fine?

What comes between the <MAP NAME=”name”> & </MAP>? There is only one thing that can be used here – the <AREA> tag which defines areas on the image which refers to the map. Then we tell it which shape to use and what the coordinates,etc are for that shape. Then we specify what action to take. If no action is given, no action will be taken as a default. See? It’s simple.

Now you know it as well as I do that we can specify parts of an image like that only by addressing actual pixel values of the image. Let’s use our example here.

Remember the car image above? Its width is 100 pixels and height is 50 pixels. Let’s define two equal vertical bands. We do it by defining two rectangles using the “RECT” shape. The “COORDS” attribute is specified as left-x,top-y,right-x,down-y. Here is the map. See for yourself:

<MAP NAME="car">
  <AREA SHAPE="RECT" COORDS="1,1,50,50" HREF="front.html">
  <AREA SHAPE="RECT" COORDS="51,1,100,50" HREF="back.html">

Get it upto here? Let’s do it across now:

<MAP NAME="car">
  <AREA SHAPE="RECT" COORDS="1,1,100,25" HREF="top.html">
  <AREA SHAPE="RECT" COORDS="1,26,100,50" HREF="bottom.html">

Then you can map circles using SHAPE="CIRCLE" with the COORDS in the format "x-centre,y-centre,radius". A sample line:

<MAP NAME="sample">
  <AREA SHAPE="CIRCLE" COORDS="10,10,10" HREF="abc.html">

But what if you don’t want a rectangle or a circle but a triangle? To overcome this, the shape tag of “POLY” is used. It’s COORDS use pairs of x-y positions to form any shape you want.

For example, to make a diamond in our car and then to make is clickable, we use the map:

<MAP NAME="car">
  <AREA SHAPE="POLY" COORDS="50,1,1,25,50,50,100,25" HREF="abc.html">

The first pair, “50,1” means: 50 to the left (middle of the image) and pixel line 1 (the top of the image). The second pair, “1,25” means: 1 to the right (the extreme left of image) and 25 down (the middle of the image). And so on…

And if two areas overlap, the first defined takes preference. For example, if we were to make the flag of Japan clickable, we could use a map like this:

  <AREA SHAPE="CIRCLE" COORDS="50,25,20" HREF="red.html">
  <AREA SHAPE="RECT" COORDS="1,1,100,50" HREF="white.html">

Since we defined the circle first, on clicking that area, the action it specifies is taken.

Have fun!

A Polling Booth for 10 Voters

The best example that underlines India’s commitment to Democracy is what’s happening in the elections that are about to commence in Jammu & Kashmir with nearly 6,500,000 voters eligible to cast their vote.

India is setting up a polling booth in Ladhakh for just 10 people!

Yes, there are only 10 registered voters in this booth (No. 10) at Sunudo in Nobra frontier region, making it the smallest polling station in these elections, perhaps even the smallest ever in an Indian election.

This TOI story on polling preparations in J&K has some other interesting statistics.

A Brief Comment on Rahul Gandhi

Rahul Gandhi seems to be maturing into a fine politician.

I started giving a little more than a passing attention to reports on him after I read a story about him putting sycophants in Congress in their place. Compared to the near militant politics that is currently prevalent in most parts of the country by young, aspiring politicians, I have found his views and style to be far more restrained, mature, and generally sensible.

The fact that he is touring India in unannounced, almost secretive trips to understand her people better and is undoubtedly a future Prime Minister only bodes well for the general masses.

What prompted me into writing this? Rahul’s answer to why Afzal’s sentence hasn’t been carried out yet. He almost manages to sound like a regular guy.

Social Networks – The Final 3

After much back-and-forth, I have decided on the final 3 social networks I will be active on:

  • LinkedIn: It’s perhaps the only serious social network for professionals.
  • Orkut: It’s very popular in India and almost everybody I know outside work is on there.
  • Facebook: I have only recently started taking it seriously. However, it’s a good ‘missing-link’ between a ‘meant-for-professionals’ LinkedIn and totally-bindass Orkut.

Aside: I have also started Tweeting. Follow me.

Happy 76th Birthday Indian Air Force

Today, Indian Air Force turned 76.

Back in 1932, it was today that 6 young men (Subroto Mukerjee, HC Sirkar, AB Awan, Bhupendra Singh, Amerjeet Singh, and ‘Tich’ Tandon) were commissioned into the service after having trained at RAF College in Cranwell. With 19 ‘hawai sepoys’ and 4 Westland Wapiti IIA biplanes operating out of Drigh Road in Karachi, they flew on their maiden flight on April 1, 1933 (a day chosen by British to coincide with RAF’s birth).

It is now the fourth largest air force in the world.

Finding ‘Lost’ Content in a Basecamp Post or Comment

Basecamp is increasingly being used by a lot of people and many, many people use it for managing web-based projects as well. Unfortunately, Basecamp does not escape “<” or “>” and anything that looks like a HTML tag gets interpreted by the browser as one.

I consider this a fatal flaw in the software since it leads to loss of data (at least in a visual sense) and might end up causing very weird formatting problems of a thread being viewed, at times distorting the information beyond comprehension.

For example, if somebody were to write “Could you put this in a <h1> tag. More text.” it would show as “Could you put this in a

tag. More text.

“. What a mess, huh? And this is a very benign example. I’ve seen people posting HTML code of forms in posts and comments!

Most people I have seen get confused. They don’t realise immediately that there is a <h1> tag there which is messing things up. They only see “Could you put this in a tag.” and go: Which tag? Why is “tag” in big and bold? And so forth… And yes, sometimes, even experienced ‘web people’ are surprised by this initially because of this unexpected behaviour. That’s bad user experience.

So whenever you see weird formatting next to text that doesn’t seem to make sense, remember: There is probably a HTML tag in there causing the problem.

The solution: Look at the HTML source. The content is right there, dutifully regurgitated by Basecamp, unfortunately un-escaped, and thus rendered by browser.

Tip: There are browser plugins that allow you to make a selection and view the source of only that part of the page. Using them will make it extremely easy for you to home in on the content you’re interested in.

Another thing to remember is that Basecamp also uses Textile for text formatting. So there could be additional HTML formatting inserted in the comment which might not belong there. It’s usually easy to figure that out though. If that doesn’t work, you can always ask the person who made the post to clarify and try to be careful next time.

Suddenly Alive!

Suddenly, there was life.

Again. 😉

In The Lull, The Garden Blooms

I have been silent here for a while and in this meantime, there have been some major changes in my life.

The most profound one is my marriage in September to a wonderful girl from Jallandhar. I took 2 weeks off and we went south to the picturesque Lakshadweep islands where even my phone wasn’t working. Going there (we put up at Agatti) at beginning of the season turned out to be a boon in disguise. There were hardly any tourists there and we had a whale of a time doting on each other, walking along the white sand beaches, turtle watching, snorkelling, and doing about a dozen other different things.

Married life is certainly very different from the one before. What’s incredible is the psychological change that comes from within by itself, altering one’s perception of just about everything, including how one spends time… and where. And I’ll leave that at that. :)

15 Unfortunately Placed Ads

Context: sometimes it does funny things. Here are examples of 15 ads that happened to be at the wrong place at the wrong time. (via. AdLand) Some of them are hilarious.

The Darjeeling Limited

Forgot who sent me here but there’s no way I am going to miss this movie.

An emotional comedy about three brothers re-forging family bonds. The eldest, played by Wilson, hopes to reconnect with his two younger siblings by taking them on a train trip across the vibrant and sensual landscape of India.

The trailer is delicious.

Speeding Drivers Have Wee Wee-Wees

The excellent blog title post comes from the post I caught on AdLand about the new campaign by the Australian Traffic Authorities to make speeding ‘socially unacceptable’ by associating an embarrassing image with those who burn rubber.

Nice, huh?

Panchkula Carnival ’07

My city is organising a carnival tomorrow (via. TOI Report). With a parade. Wow!

I love this line from the TOI report:

Anyone can avail the facility to see the events of the day.


Starting ColdFusion… Again

Last two days I have been working in ColdFusion. This is the the second time in my life that I’m writing CFML.

A little over a couple of years ago, I was using a spreadsheet to track the work assignments to my team. It was cumbersome: others couldn’t see how I had assigned the work, when I was expecting what from whom, what the priorities were, and at times when the work load was high even exactly what was needed to be delivered.

With Deepak helping me out whenever I truly got stuck I wrote a basic application that all my team members could access. It had different user levels so that only I could assign work and a few other little bits that were non-standard back then. Since the application was running on a local server, load times were instantaneous and I didn’t have to worry about a lot of things. I did it over a few nights (totalling two working days I believe). Over the next few days after I let my team on it, I kept making small changes to help make things clear so that I would not have to provide information that I could put beforehand in the work list.

Then I stopped.

There weren’t many CF coders in our office so when I wanted some advanced stuff added, I had to get it re-done in PHP. Since the benefits of the application were very visible, I got the developer time easily. A few other teams tried it out to see if they could manage their work with it too. That was flattering.

Anyhow, back to topic.

Our time tracking system is written in CFML/MSSQL and hasn’t really seen many updates recently. The reports generated are no longer suited to our current needs. Though we are able to take things forward this way or that way since the data is there, it’s a pretty time-consuming way to do things.

Therefore, last two days I have been working on learning SQL and trying to remember the basics of CFML. And just as last time, at the end of second day, I have my first report ready.

It is still as fun as it was last time.

Army Gets Supersonic Cruise Missile

India today became the first country in the world to get a supersonic surface-to-surface cruise missile, BrahMos, officially inducted into active service (IE Report). The President handed over a replica of the missile at a function in Delhi to Army Chief General J J Singh to mark the commencement of delivery (President’s address & photos). The actual delivery will start next month, a whole year ahead of schedule. BrahMos is a joint venture between India’s Defense Research and Development Organization (DRDO) and Russia’s NPO Mashinostroeyenia who have created the BrahMos Aerospace company to commercially sell their missiles. GlobalSecurity.org has a good article on BrahMos.

Rigveda Added to UN’s Heritage List

Rigveda has been added to UN’s Memory of the World Register (IE Report). It’s available online in both Devnagri & the translated text from 1896.

Counterfeit Banknote

Today I got a call from one of the banks where I had deposited money that a Rs. 1,000 banknote was counterfeit and that I should come over. The note was impounded and I was simply issued a receipt that the note was a fake.

I went to the bank that had issued me the note and the account manager there said she’ll try to do something about it. I got a call later in the evening from the teller as well. From what I could tell, because I had failed to detect the note to be a fake on receiving the cash, and since it was not part of a bundle (but rather part of loose notes I had taken), there was no way of telling that the note actually came from the bank. In other words, they might not do anything about it. Ouch! I’ll know for sure tomorrow.

Do you know how to tell a note is counterfeit?

Indian Cricket Team’s New Coach

Isn’t it going to be ironical if the new Indian cricket team’s coach is called Whatmore?.

Of Sleeping Souls & Opportunities Lost

A friend who is an avid biker except probably he’s the only one so excited about it in his/my group forwarded a link about going on journeys on bikes in the hope it will rouse the sense of adventure in our sleeping souls. In my meanness, polished over the years of practise, I retorted back with, “Nice reading, but I enjoy my sorry life, thank you” hoping very earnestly for an amusing retort and indirectly reminding him that the company he seeks is hard to find in the group he loves so much. But what he wrote back is more than just that and I loved the emotion of it. I replicate it here, probably at the expense of him punching me on the arm for doing so:

I am really really sorry, that I wasted your time and my energy, I forgot that only the sleeping ones can wake up not the dead ones. Your inner child, your will to live life is dead. I am sorry for you. and ya sure you enjoy your sorry life, cause this is the only thing you have “Sorry”, in few months you will get married, and then you will live happily ever after, but remember the only thing then you miss will be hanging out with us, you will not be able to go on long drives on bikes cause then there will be some one else, who will become your responsibility, you will go on long drives for sure but in a steel cage, and I thought slavery is dead and we are free. We are still slave of our sorries.We are not free cause we love to live in cages, cages of steel, cages of concrete, cages of fear.

Enjoy your sorry life!

People! Don’t let your life pass you by in the daily grind. Grab the opportunities that present themselves to you for they are rather selective of who they present themselves to and the chances of them doing it again are slim and grow slimmer by the day…