Sunday, January 22, 2012

On to vim

We have been with this group of kids for about a year. We have looked at Ruby with the Gosu game library, we have looked at ruby on rails (although that was too advanced at the time), we have looked at NXC. The kids now have a good handle on what the steps needed to build a program, they have seen a couple of programming languages. It is time to solidify their knowledge and start on key building blocks.

It is time for the kids to pick an editor. We will do our best to steer them towards vim. It is the defacto standard with startups and the editor they are most likely to encounter if the kids stay in this field. So this Saturday we picked up vim for the first time. We showed them Derek Wyatt's intro video, the kids really enjoyed it; Derek is funny and I think he sold them on vim.

We will work through the tutorial and plugins. We will also re-introduce git, it is also time that they pick their source control system. They all have github accounts, but now we will stress its functionality and we will use this as a way to get a group project going. We will also revisit Ruby and the Gosu framework.

It is a second view at git and ruby, but now with 8 months of exposure to programming. It will be good to see how well they take it now. And all the while, they will be using vim as their only editor. As a matter of fact, I have challenged them to use vim as their only typing tool for all their homework also.

The nxc experience

The fall was spent working with NXC (Not Exacty C) and the Mindstorms kit. We tried to use Arduino, but building robots quite involved (soldering, special order parts, etc). Mindstorms, while expensive up front ($260), gives us the microcontroller and the lego pieces with plenty of options to build robots. The kids could build a robot, disassemble it and re-build it in minutes.

So we settled on Mindstorms. However, we are teaching kids how to program, and the GUI version of Mindstorms Lab View was not going to cut it. So we found NXC, which is a C subset that targets the Mindstorms kit; perfect!

We have a website dedicated to the exercises we built, we had a ball with the robots, the kids really enjoyed the experience. We introduced them to C functions, to compile a program and download it to a microncontroller.

The more common exercises are for the robot to follow a line, to move forwards, backwards, etc. We did a bit of that, stressing clean code, breaking functionality into single purpose functions, etc. We are building programmers, so clean code is always stressed.

Tuesday, September 20, 2011

Restarting ruby4kids this fall -- arduino/mindstorms here we come

We are getting ready to start our ruby4kids sessions again this fall. We are looking at arduino and Lego mindstorms as a way to show kids how to program.

We are planning on using this tank for the arduino, maybe have rf receivers so that we can send instructions to it from a computer and write the ruby program on the computer itself.

For Lego mindstorms, we might go with the regular Lego demos just so that the kids can be exposed on the LabView approach to developing for microprocessors. Looking at ruby-nxt for this.

Getting ready for classes. Here is a snippet of code showing the initial testing of ruby-serialport and using Firmata on the Arduino. Here is a quick video of the code in action showing the LED 13 blinking, the servo moving positions and a motor running and stopping. None of the code resides on the arduino, only Firmata. All the commands for action come via serial from ruby on the laptop. Once we get the rf antennas for the arduino and laptop, we can remove the usb cable and we will be going wireless up to 300 ft, enough to have the tank go places ...


Sunday, June 5, 2011

Learning Rails - Zombies and CRUD

Saturday, we dove into something challenging and our kids were ready for it: IRB (with rails console), hashes and understanding the basics of databases. This was all possible by using Rails for Zombie slides and then modifying them to fit our audience. This is an exciting topic for me and was surprised how energized and creative the kids became once they learned these concepts. OH: "I can create my own twitter? Sweet!"

There were a lot of great questions and discovery as we walked through the lesson called "Twitter for Zombies." We built a simple Rails app with a single form and we put in some fake "tweets" from different zombies. Then, we opened the terminal and learned how to create, read, update and destroy zombie tweets. And nothing is more fun than destroying zombies, right?! Well, their tweets to each other. :-) (nom, nom, nom)

Towards the end, we connected the dots between the scaffold we created and the database that drives the content. This is where the kids got excited and began to ask questions on creating their own Facebook, chat site or even business. These kids get it. They are building and deploying, debugging and creating apps with rails in such a very short time.

Monday, May 16, 2011

Starting with Web Development

This weekend we restarted the ruby4kids sessions. We are meeting at LivingSocial office in Reston, with 7 kids. This time, the kids asked to learn about web development.

Our first class was in Introduction to the web, and the kids really got excited about this. We used sinatra to come up with a quick web server to serve actions that they would change/change and the response would be rendered on the browser.

We then used rails to create a simple note taking app, and with Heroku the kids were able to quickly see their application posted on the Internet. They really got a kick about that.

We are going to go into each area of web development, using the rails app as the basis for teaching. We will start with the view portion of it, modifying the html and css.

Saturday, March 26, 2011

Our last class for the winter

Well today was our last class for our winter session. For the past three weeks we were working on a comprehensive game, adding a bit at a time in each class. One kid would go to the computer with the projector, and we would all tell him what to type, adding how a player gets hit, how the targets will drop bomb at the player, etc.

I am pretty sure the kids enjoyed the classes. I was pleasantly surprised with their level of interest.

We are planning on being at RubyNation for a lightning talk, and in the Spring, we might start a new class in the evenings. Not sure yet.

We will be posting a screencast of our latest game soon. For now, you can pick it up from github. It is called shooter.

Monday, February 28, 2011

Basics - puts and gets

This week we went over basic concepts. We went over strings and puts and gets, integers, floats, conditionals and looping.

We reviewed the definition of a variable and about classes and objects. We wanted to first show classes and objects before getting to fundamentals of Ruby. We did this on purpose (putting together gosu games) so that kids would get excited about the possibilities.

This class on fundamentals went fairly well. I was concerned kids would be yawning with the lecture material. But we broke it down into a slide or two and an exercise, and that worked. The kids were really into it.

I was pleased with how well all of them did with the exercises. We will go over arrays and hashes next week and then back to gosu.

The presentation can be downloaded here. Please let us know your comments, or email us if you have any questions if you are following the lectures. Contact us at