This Mother's Day, while my wife straightened up and I reclined on the couch browsing Twitter, I happened to see an article ranking the top 10 science fiction mothers. On the front there was a picture of Linda Hamilton from Terminator 2, brandishing an automatic rifle and lookin' buff. At that very moment, my wife walked by carrying an armful of Nerf guns back to the kid's arsenal. 

Of course, Linda Hamilton in T2 is and my wife are different.  Sara Connor prevents Armageddon by fighting a robot from the future, after all. However, my wife does battle midget terrorists on a daily basis. Terrorists that can operate an iPad but, paradoxically, can't figure out how to put a plate in a dishwasher. So, there a lot of similarities there too.

In the end, I came to this conclusion:

And, I was just kidding about loafing on the couch while my wife was doing housework. I was actually on a chair.

Posted
AuthorTodd Zarwell

One does not become a professional lawn mower overnight. All kids dream of the bright lights, the glory, the big contracts, but few are willing to put forth the effort required to make it to the big time.  

You don't have to start at a young age, but it helps. Take Aiden, for example. He started training at two years old and has already logged more hours than many people 10 times his age. His chances of making a traveling mowing team by age four are quite good. There, he'll refine his skills by competing against the best of the best and, by the time he's 18, should snag a lawn mowing scholarship to a top university program. 

And, with hard work, dedication, and a little luck - such as avoiding any career ending injuries - perhaps Aiden will be drafted by a pro team some day. Of course, going pro is a whole other level, but, in the right system complete with veteran leadership, good coaching, lots of film study, I'm convinced my boy could be a star. And hopefully he'll buy me a new house. Or at least pay off my school loans.

Check out the gallery below to see some of AIden's training techniques.

 

And, lastly, a video illustrating his dedication to his craft.

Posted
AuthorTodd Zarwell

Six months ago, I wrote about my thoughts on the difficulties of teaching kids to write code. There were a few iPad apps that seemed to have potential to introduce kids to programming.

Unfortunately I've had a hard time finding a way to introduce my sons to these apps. After all, it's kind of a slippery slope. I want this to be fun, and I'm afraid if it seems like too much of a chore right off the bat it might be a while before I can try again. Also, when you open up the iPad there are potential distractions just two clicks away. If the app comes off as boring or too educational I'll get a "can I play Minecraft instead?" within minutes.

So, I've been biding my time and waiting for the right moment. Then, lo and behold, we were signing my oldest son up for supper activities this Spring when I saw an appealing option: "Coding with Kodable". Ooh, that sounded interesting. After reading the description I learned that Kodable is another "learn to code" app in the same vein as the ones I mentioned in my blog post last December. Well, of course we signed up for it and my son will be finishing up his "camp" today.

It has gone really well. He did it with other kids his age, so it was fun, and he really did learn core concepts in programming. Today was the first time I dropped him off at his class, so I hung around for a few minutes and watched my son work through the app's puzzles. I was pretty impressed with what I saw.

Now, keep in mind that we're talking about 7 year olds here. They're still learning how to write and spell, so typing in complicated blocks of code is out of the question. The goal is to start with the basics.

What is a computer program? It's a sequential list of instructions that tell a computer what to do. So, that's where Kodables starts. In this case, the instructions are geared towards guiding a "Fuzz" through a maze.  (The optometrist in me can't help but notice this is also a great exercise for laterality / directionality, spatial reasoning, etc). The child simply drags a series of arrows onto the screen to guide their character though its course. Just like in programming, the order of the instructions counts. Also, there can be more than one way to accomplish a task, but there is often a way that involves the least amount of instructions or takes a better approach (in Kodables, the better approach is the one that leads the Fuzz past the most coins). 

The next major concept is conditional statements. A program needs accept input then make a decision as to what to do next. In most programming languages this is done in an IF/THEN statement, eg) IF (weight > 200) THEN diet. In codables the condition the child can apply a color to their arrows that essentially says "if your Fuzz encounters a red square turn down".

Conditional statements on Kodable. The instructions are the arrows in the top left side of the screen. Note the arrow with the red background - this is a conditional statement.

Conditional statements on Kodable. The instructions are the arrows in the top left side of the screen. Note the arrow with the red background - this is a conditional statement.

 

As people improve at coding they learn an important lesson: Don't work any harder than you have to. You oftentimes find yourself writing out the same sets of instructions multiple times. Whenever you find yourself in this situation you have to ask yourself if there's an easier way. Working smart,  not just hard, can result in huge time savings. In programming, two fundamental concepts that can help with this are loops and functions.

Loops can be used when repeating the same task two or more times. Consider the following maze on Kodables:

Loops on Kodable. 

Loops on Kodable. 

The instructions would go like this:

  1. go right
  2. go up
  3. go right
  4. go up
  5. go right

That wasn't too bad to type out, but what if we had to do it ten more times? Or a hundred more times? This is where loops come in handy. A lop would essentially say:

  1. go right
  2. go up
  3. repeat the above steps 100 times

Functions are very similar in a lot of ways, except we don't necessarily duplicate the same instructions repeatedly. Instead, we save a set of instructions as a block, or function, that we can use, or "call", at any time. Consider this Kodable maze:

Functions in Kodable. Note the three steps that are included in the function (seen to the right of the curly brackets { } on the right hand side)

Functions in Kodable. Note the three steps that are included in the function (seen to the right of the curly brackets { } on the right hand side)

To get through this maze the instructions would look like this:

  1. go right
  2. at the pink box, turn down
  3. go right
  4. go up 
  5. go right
  6. at the pink box, turn down
  7. go right

Notice any patterns here? Steps 1-3 are identical to steps 5-7. The "programmer" astutely noticed this and made a function. The function is located on the right side by the curly brackets { }, and contains the same block of instructions as steps 1-3 above. So, the new instructions will look like this:

  1.  run the function
  2. go up
  3. run the function

It doesn't look like much, but this is one of hallmarks of efficient coding and can save tons of lines of code, not to mention time,  as programs get longer and longer.

A Kodable bug

A Kodable bug

Another very important feature kids will learn from Kodables is debugging. Coders rarely write a perfect program on the first try. Programming is very much a trial and error process: Write some code, run it, see where it screwed up, rewrite some code, and repeat. Just like real coding, you can run your program and watch each step as it executes to localize where the problem is coming fro. In Kodables there's segments where it purposely gives you a program with errors in it, and actually places a cartoon bug on the maze at the location of the problem. When you fix the programming "bug", your Fuzz rolls over the cartoon bug and squashes it. I know from experience there's nothing more satisfying than squashing those bugs.

In summary, Kodables seems to be a great way to get kids started in programming. It teaches them to look at a problem and break it into little parts, then give the computer stepwise instructions to solve the problem. It teaches concepts such as conditionals, loops, and functions. It also teaches debugging and, as a result, the acceptance of the inevitability of errors and the dedication needed to troubleshoot and fix your bugs.

In the future, kids that want to continue with coding will need to learn a programming language and its syntax. However, in my opinion, learning the basics of programming is much more important. And, after learning one programming language, picking up others is relatively simple once you master the fundamentals.

 

PS My 5 year old came along with me when we dropped my 7 year old off at Kodables camp today. After he saw his big brother solving puzzles on an iPad he wanted to do the same thing. We went to a coffee shop, downloaded the app, and spent an hour and a half "programming". He picked it up very quickly and we had a lot of fun together.



Posted
AuthorTodd Zarwell
CategoriesTech

Seeing Star Wars was one of the seminal moments of my childhood. My mom saw it when it came out in 1977 and immediately decided to see it again - with me, her 5 year old son. She was a little worried that I'd be scared of some of the creatures, particularly the riffraff in the Mos Eisley cantina. Needless to say, that wasn't an issue, and I spent the rest of that day acting out the movie with light sabers made with crayons and cardboard. 

I'm now 43, and gave three little boys of my own. I thought it was time the older two, ages 6 and 4, see Star Wars. I've been telling them stories about the movies for years, but I've been a little cautious about when to watch it. I had the same concerns about it being to scary.

Secretly, I was also a little worried about how they'd react to it. For kids growing up with fantastically rendered Pixar movies, would 1977 special effects seem lame? Would they respond to the story? I tried to set my expectations low. If they didn't like it I couldn't let it detract from me childhood memories.

So, how did it go? 

See for yourself: 

 

I'd say it was a success. 

Posted
AuthorTodd Zarwell
appleIIe

I spend a fair amount of time thinking about how to introduce my three young boys to programming. As much as personal computers have evolved over the last 30 years, I feel learning to code has gotten more complicated.

Computers weren't very accessible until about 1976, when Steve Wozniak developed the Apple. My grade school, like just about every other school in the country, got an Apple II that sat at the back of the classroom. Considering that computers had always been room-sized objects that only existed in movies, it seemed like the future had arrived.

It seems kind of crazy now, but there were actually very few things we could do with the computer at that time. We had a couple games, such as Oregon Trail.  We quickly discovered that the Apple II came with a BASIC compiler, so we started to learn how to use it. During breaks between classes, three or four of us would huddle around the computer and type in programs from magazines like Enter (I wrote about my love of Enter a while back). 

So what is different nowadays? Why should learning to code be more complicated in 2014 than it was in 1980? I can think of at least a couple reasons.

Kids are harder to impress. When I was a kid, just hitting letters on a keyboard and seeing them show up on a screen was pretty thrilling. Until then, the only thing I'd every seen in a screen was whatever the TV station decided to show me. Even cooler, typing

10 PRINT "Todd" 

20 GOTO 10

would print my name an infinite number of times. What could be cooler than that?

Today, my kids play with computers all the time. I hate to admit it, but I frequently take a powerful one out of my pocket to keep them entertained when I need a little peace and quiet. They have pretty high standards: an app the prints 

Drew

Drew

Drew

Drew

isn't going to impress them.

Coding is a lot more complicated. Computers can do so much more than they ever could before. However, this adds countless layers of complexity and, as a result, creates a much larger barrier to entry.

When I wrote little programs on an Apple IIe, I just fired up the computer, fired up BASIC, and started typing. Today, it's a little more abstract. For most, the easiest place to start would be to write some javascript and HTML in a text editor and run it in a web browser. However, this still requires multiple steps along which multiple things could go wrong. After this option, things get a lot more complicated: proprietary software, frameworks, fancy IDEs, etc. might be required just to get started, which would likely be out of reach of any kids that don't have a programming- savvy adult to help them out.

I do think things are improving, however. Apple's new Swift programming language includes Playgrounds, which allows newbies to write small amounts of code and immediately see the results.

"Playgrounds make writing Swift code incredibly simple and fun. Type a line of code and the result appears immediately."

Definitely a much easier way to start experimenting with programming concepts.

Maybe it's because I now have small kids and it's on my radar, but it seems like there's a lot more awareness of the need to teach kids to code. The Hour of Code seems to be a great program that has introduced a lot of kids (and the President) to coding.

There are now a number of iPad apps that teach programming (Tynker, Hopscotch, Scratch). For the little kids, this doesn't mean coding - 6 year olds aren't going to write lines of Objective-C. However, they teach the systematic approach to programming: breaking your problem down into tiny little problems and solving each one in an elegant way. In my opinion, this is the most important part of writing code. Once you've got this down it doesn't really matter what language you're learning

And here's something else that just showed up in my RSS feed today: BitsBox, from a couple employees of Google's Sketch:

"Each month a surprise comes in the mail, filled with dozens of programs to type in. Like the computer magazines of the 1980s, we invite kids into learning with irresistible projects."

It's a Kickstarter project, but it sounds like a great way to get kids excited about programming. Kids love getting packages in the mail, after all!

As a dad, and a geek, I'm really excited that there seems to be a renewed emphasis on teaching kids to code

 

Posted
AuthorTodd Zarwell

A typical conversation with my four year old:

the boy: Daddy, can I have a snack?
me: But we just ate dinner. And then you had Jello!
the boy: But that was dessert. I didn't get a snack tonight!

At first I was confused, but I did a little research and learned that growing boys have an  anatomy that's a little different than the rest of us.

Transient

And they're not full unless all of their stomachs are full.

Posted
AuthorTodd Zarwell

Recently I was fondly reminiscing about watching Saturday morning cartoons. I'd wake up at the crack of dawn, go downstairs, and watch me some Bugs Bunny. I even remember waking up once and my shows weren't on, only to find out I was awake before cartoons even came on.

Watching cartoons was a pretty simple process, even for a 5 year old. It went something like this:

TV watching in 1977

TV watching in 1977

So, I was thinking, why don't my kids do this? They certainly get up early enough on Saturdays, so that's not the problem. Well, for one, there's nothing special about Saturday mornings. There are cartoons available all the time, whether they're on cable, the DVR, the DVD player, etc..

However, I think the biggest obstacle is the modern TV watching workflow. It goes something like this:

TV watching in 2012

TV watching in 2012

Now, if history is any indicator, my kids are going to be more tech-savvy than my wife and I. However, they're only four and two years old (and a one month old, if we're counting everyone) right now, and this is a little much for them.  

So, what do they do on Saturday morning? Well, it goes something like this:

Entertaining kids in 2012: the iPad

Entertaining kids in 2012: the iPad

Posted
AuthorTodd Zarwell

Lisa and I are expecting our third boy in October.  Five years ago we were expecting our first child, and I was getting a sticker shock as we were buying all of our baby supplies.  I kept joking that I could save a little money on a breast pump by making one myself - all I'd need would be a little tubing, which I could get from our fish tank, and some sort of pump.  

I eventually decided this would make a good practical joke, and shot this video.  Can you tell I had more time on my hands back then?

 

Posted
AuthorTodd Zarwell