Python for kids

April 21, 2013 at 3:42 pm

Many of my friends are having kids nowadays and asking me what are good resources for teaching kids Python. I don’t have any kids but I do know of some good resources for learning Python especially for younger children or people completely new to programming. Here they are:

pythonforkidsPython for Kids is a lighthearted introduction to the Python language and to programming in general, complete with illustrations and kid-friendly examples. We begin with the basics of how to install Python and write simple commands. In bite-sized chapters, you’ll discover the essentials of Python, including how to use Python’s extensive standard library, the difference between strings and lists, and using for-loops and while-loops. By the end of the book, readers have built a couple of games and created drawings with Python’s graphics library, Tkinter. Each chapter closes with fun and relevant exercises that challenge the reader to put their newly acquired knowledge to the test.

hello_worldHello World! Computer Programming for Kids and Other Beginners provides a gentle but thorough introduction to the world of computer programming. It’s written in language a 12-year-old can follow, but anyone who wants to learn how to program a computer can use it. Even adults. Written by Warren Sande and his son, Carter, and reviewed by professional educators, this book is kid-tested and parent-approved. Note: there is a newer edition of this book available for pre-order.

cover_inventwithpython_thumbInvent Your Own Computer Games with Python teaches you how to program in the Python programming language. Each chapter ives you the complete source code for a new game, and then teaches the programming concepts from the example. It was written to be understandable by kids as young as 10-12 years old, although it is great for anyone of any age who has never programmed before.

scratchScratch is a programming language that makes it easy to create your own interactive stories, animations, games, music and art, and share your creations on the web. The Scratch website has over 3 million project from around the world many submitted by kids. Scratch is developed by the Lifelong Kindergarten Group at the MIT Media Lab. Tynker is a startup inspired by Scratch.

Screen Shot 2013-04-21 at 3.38.43 PMAn Introduction to Interactive Programming with Python is a course designed to be a fun introduction to the basics of programming in Python. This course is designed to help students with very little or no computing background learn the basics of building simple interactive applications. The main focus is on building simple interactive games such as Pong, Blackjack and Asteroids.

This is by no means an exhaustive list of resources. If you know of other good ones, please leave a comment below!

Show your support for video publishing in Plone

February 3, 2008 at 8:38 pm

Thanks to the following generous individuals, we have raised over $1,200 for the development of Plone4ArtistsVideo, an add-on product that improves the publishing of videos in Plone.

Support this project with microPledge


11 pledges ($1220.06)

  • $20.06 from Kurt Bendl
  • $100 from Donna Snow
  • $200 from Zahid Malik
  • $100 from Totsie Marine
  • $50 from Scott Paley
  • $50 from Chris Johnson
  • $25 from Jon Stahl
  • $50 from John Habermann
  • $500 from Alexander Pilz
  • $25 from Jesse Synder
  • $100 from Aleksandr Vladimirskiy

We’re less than $800 towards our goal of $2,000! Please consider pledging your support to help us get Plone4ArtistsVideo 1.1 released which will have support for Plone 3.0.

Thanks in advance for contributing financially to the development of open source software! Any amount helps us get closer to the goal.

Intersecting journey of Free Culture, Creative Commons and Plone

February 3, 2008 at 6:20 pm

Several years ago I discovered the book Free Culture by Lawrence Lessig. It was actually one of the first eBooks that I put on my handheld PDA at the time, a Handspring Visor, a device that now seems quaint compared to my iPhone. I remember watching the Flash presentation of Lessig’s talk at OSCON in 2002, and being motivated to learn more about copyright law. Lessig made the issues tangible, and of incredible importance to anyone who considers themselves a creator.

More importantly, he demonstrated that the copyright laws of yesterday were no longer suitable for the creators of today, and what was needed was a new way to license your creative work. And so he founded the Creative Commons, a non-profit organization that provides free tools for creators to easily mark their creative work with the freedoms they want it to carry.

During one of my trips out to San Francisco, I met with Mike Linksvayer at the Creative Commons headquarters. At the time I was very interested in adding Creative Commons licensing support to Plone, the open source content management system, so I wanted to talk to him about the best ways to accomplish this.

Well, we didn’t talk much about Plone, but I did get to have lunch with the other CC folks, and afterwards Mike suggested that I talk to Nathan Yergler, the Python programmer who was making so many cool CC tools, that they had to hire him.

Upon closer inspection, I discovered that Nathan was doing some pretty cool stuff with Zope 3, including building desktop applications such as ccPublisher. While I still haven’t met Nathan (now CTO of Creative Commons), I can see from his blog that he recently moved from Indiana to San Francisco, so there’s a much greater chance that our paths will cross now.

Meanwhile Jonah Bossewitch had written up PLIP #136 (Plone improvement proposal) to get content licensing support native in Plone. There was a product called PloneCreativeCommons that was a good start, but Brent Lambert and David Ray from Utah State University, took it a step further during the Big Apple Sprint (also organized by Jonah) and created ContentLicensing a really great add-on product for Plone that we’re now bundling with Plone4Artists.

After moving to Boston, I got to know some of the folks involved with the Harvard Free Culture group, one of many college-based Free Culture groups that promote the public interest in intellectual property and information & communications technology policy.

Last week I was hanging out with the Free Culture kids at a dinner at the Cambridge Brewing Company hosted by Dean Jansen and Will Guaraldi, both of the Participatory Culture Foundation, best known for the Miro video player. For the Plone4ArtistsVideo add-on product for Plone, we’re exploring using some of the Python code in Miro for scraping popular video sharing sites such as Youtube.

Recently I stumbled across this TEDTalk video presentation by Lawrence Lessig, and invite you to watch as he takes you through a fascinating journey about culture and gets a standing ovation at the end.

Scientific Tools and Documentation Plone Sprint – Day 1

February 3, 2008 at 6:09 pm

KSS introductionWhat do you get when you bring developers from around the world to the same place for four days of intense coding? In the Plone community, we call this a sprint. I like to think of sprints as jam sessions for coders, an opportunity to work and play side-by-side other talented programmers and try out new ideas among peers.

To get a better sense for what a sprint is like, I invite you to read Jon Stahl’s reflections on the Seattle Sprint, an article Ready, Steady…Sprint! Creating Open-Source ECM, that appeared in CIO magazine about the Boston Plone4Artists sprint, and journalist Esther Schindler’s blog posts about the DocComm sprint at the Googleplex.

At the Plone Science sprint hosted by UCDavis this week we are sprinting on improving the scientific tools and documentation of Plone. It’s a self-organizing activity and we have been planning our work collaboratively in the planning wiki.

As an example, look at the tasks identified for CMFBibliographyAT, a tool that makes it easy to list publications in your Plone site. CMFBibliographyAT is an incredibly useful tool for academics at colleges and universities who want to make a comprehensive list of their published articles. It has some great time-saving features such as importing lists of publications via BibTex and Endnote. Stay tuned for a screencast with the author Raphael Ritz!

In order to better track the issues, prioritize and assign them to owners, we created tasks in the tracker from these issues. Ideally, we would have done this prior to the sprint to save on time, but sometimes it’s necessary to discuss the issues in order to create well-written tasks.

One thing that cannot be underestimated is the knowledge transfer that takes place when programmers meet in the same room and pair program. This is the biggest reason to attend a sprint. You will learn new things, probably a lot more than you would if you paid for lecture style training.

The reason this way is better is because you work very closely but informally with other developers. Working hands-on, there are ample opportunities for asking questions and tap into the brainpower of others in the room. Then in the evening you go out and have a beer with the same people. Sprints are not only great learning experiences, they’re a lot of fun too!

Most of the time, open source software development takes place between highly distributed teams of individuals, who are not working in the same physical space. Linux, the most popular open source operating systems, was created this way. How do they collaborate when they’re spread out all over the world? The communication takes place real-time on IRC or asynchronously on mailing lists.

A sprint gives people the opportunity to meet each other in person. But for those who cannot be present, we invite them to participate as remote sprinters. To give them eyes and ears into what’s happening at the sprint location, we’ve set up a live video stream. That way, they can hear what we’re talking about and still participate even though the conversations aren’t happening on IRC.

One of the overarching tenets of open source is transparency, and broadcasting what we are doing real-time is just one way to share the trials and triumphs of the sprint team. Another way is to post the IRC logs for those who want to see what has been discussed.

Inspired by Jonathan Lewis’ daily podcast reports from the Plone Archipelago sprint in Norway, I decided to make a video each day with highlights from that day. The first video from day 1 is posted and can be found on There wasn’t much coding on the first day, but we had a great time exploring the eateries in Davis and hanging out at Steve’s house in the evening. Thanks Steve!

I’d also like to thank the UCD Center for Mind and Brain who made it possible for me to participate in the sprint. Thanks to the other sponsors we are fortunate to have Raphael Ritz (from Germany/Sweden) and Balazs Ree (from Hungary) participating in the sprint.

Easy video publishing with Plone4ArtistsVideo

January 6, 2008 at 1:49 am

Plone4ArtistsVideo screenshotAs evidenced by the proliferation of Plone add-ons such as ATGoogleVideo, ATFlashMovie and the recent release of SevenVideo, there is obviously a demand for tools that make it easier to publish videos to a Plone site.

While each of these products is useful in that they make it easy to add a video hosted on Google Video (ATGoogleVideo), a Flash SWF file (ATFlashMovie) or a Youtube/Metacafe (SevenVideo), there are several disadvantages to these products.

Not extensible

With the exception of SevenVideo, each product only supports a single video site/format. What if you start out wanting to add Google Videos to your Plone site, and then later decide you want to add support for YouTube videos? Well, you probably aren’t going to want to extend ATGoogleVideo, because it wasn’t designed for that. So you’ll have to install SevenVideo. Then later you want to add support for another video sharing site. Well, you’ll have to then install another product. And so on…

Update: Matthew Latterell left a comment to inform me that ATGoogleVideo does in fact support Youtube as well. My apologies for not getting my facts straight.

Burden of maintaining multiple products

For each new product that you install in your Plone site, that’s another product that you have to maintain and upgrade when new versions are released. So if you want to support all of those video types, you have to install all those video products, right? Wrong! Read on to learn about a product that has support for all these video sites and file formats out-of-the-box and is also extensible so you can add other sites/formats.

Content type pollution

You can never have enough content types available for users to add to the Plone site, right? Wrong! For each new product that you install in your Plone site, you introduce new content types. Each new product introduces additional items which appear in the Add new item menu.

From a usability standpoint, this is a disadvantage because your users now have to think before they are going to add a video. “Now which type of video am I adding? Is it a Flash, Google, Youtube or Metacafe video?” and scratch their heads as they look through the list of items to find the appropriate content type.

Wouldn’t it be easier if they could just add a normal Link if they want to add a video hosted elsewhere, and a File if they want to upload a video file? This makes logical sense if you are just a normal non-technical user of the CMS.

Now wouldn’t it be even more convenient if when you added that Link or File, Plone was smart enough to detect where the link was from, or what kind of file you are uploading, and automagically extract the relevant metadata and choose an appropriate video player?

A video publishing tool for the rest of us

This is what the Plone4ArtistsVideo product provides, an intuitive interface for adding videos to your Plone site whether they are hosted on one of a dozen popular video sharing sites, or a Quicktime, Windows Media or Flash video file on your computer. And it introduces no new content types!

As part of the development of, we added the ability to extract the metadata from videos hosted on Google Video, Youtube, and This means that when you paste in a video link from one of these sites into your Plone site, Plone4ArtistsVideo will grab the title, description, thumbnail, tags and author, so you don’t have to type all that data in again.

We’ve also added the capability of rating and tagging in addition to commenting on the videos. Note: you must have the contentrating and tagging products installed in order for these features to be enabled.

Try it out!

You can download the latest version of Plone4ArtistsVideo 1.0 which is compatible with Plone 2.5, and we are working on Plone4ArtistsVideo 1.1 which will bring Plone 3.0 compatibility. Help us to get the 1.1 release out faster by pledging a financial contribution. We are developing this open source software on a volunteer basis, so we appreciate any amount of money that you can contribute. Thanks!

Jonathan Lewis is also making a screencast about Plone4ArtistsVideo which will complement the two that he has already done about Plone4ArtistsAudio and Plone4ArtistsCalendar.

In the meantime, you can take Plone4ArtistsVideo for a test drive on the demo site. Please try it out and give us feedback on what you like and what you don’t like!

Loss of FOSSCamp

January 6, 2008 at 12:05 am

fosscampHow did I miss the FOSSCamp in October 2007? I attended both BarCamps and PodCamps in Boston, but somehow this one did not get on my radar screen. There were many attendees from Ubuntu (including Mr. Ubuntu himself – Mark Shuttleworth!), Red Hat, KDE, Novell, etc. but strangely there is no record of the schedule or materials from the unconference. Although I did find a snapshot of the handwritten schedule board here and here. Oh well, consider this blog post a reminder to attend the next one, assuming that it’s repeated next year.

Plone4Edu edition of Plone for universities and educational institutions

December 8, 2007 at 11:11 pm

I’ve written in the past about the idea of fostering sub-communities within the greater Plone community, and after some recent developments, I’d like to revisit this discussion and invite you to get involved in making this happen.

First, a brief history:

Back when I was working at Learning Lab Denmark in 2003, I had the privilege of attending the Plone educational sprint in Paderborn, Germany. Not only was I introduced to the German tradition of drinking large Hefeweisen beers everyday for lunch, but it was also one of my first introductions to the Plone community and the concept of sprinting. I had attended my first sprint, the Castle Sprint, only weeks before in Austria.

At the educational sprint, I met Raphael Ritz, who took on the challenge of converting his CMFBibliography product to Archetypes, which consequently resulted in a name change to CMFBlbliographyAT. Archetypes was still relatively new at the time, but Raphael successfully got it working by the end of the sprint. I remember being quite impressed by his programming prowess since he was not trained as a computer scientist but as a neuroscientist.

At Learning Lab, we ended up using CMFBibliographyAT extensively to catalog our researchers’ articles. This was how I justified to my boss at the time, that attending sprints was well worth the investment. Being able to meet and work directly with the product author and in many cases influence and shape the direction of the software is just one of the many benefits of participating in a developer sprint.

Another initiative was underway at the Educational sprint, and that was the EduPlone project. This project originated in Austria and unfortunately never really made much of an impact, presumably because it’s main focus was on using Plone to build a learning management system (LMS), and not a general purpose distribution of Plone for educational institutions.

The last release of EduPlone on sourceforge site was in 2004, and the and domain names have since been snatched up by domain squatters, so I think its pretty safe to say that EduPlone is dead. RIP.

Just a few months before the Educational sprint, there were murmurings on the plone.educational mailing list about creating a special distribution of Plone for educational institutions. Sadly, like so many great ideas, without a champion to cultivate and nurture the idea, it fizzled and died.

Fast forward to 2007…

During the Plone Conference 2007 in Naples, Andreas Jung organized a Birds of a Feather (BoF) session he aptly titled Plone4Universities, and cited the Plone4Artists project as inspiration for the idea. On the following day, Andreas summarized the BoF with a 5 min lightning talk about the new Plone4Universities project.

As result of this very popular BoF, the Plone4Universities project was founded. The launch of P4U generated a lot of buzz and now provides a forum for those working in education to rally around a common purpose. Thanks to Andreas, we are making progress towards unity!

Just weeks after the Plone4Universities project was launched, Enfold Systems hosted a Ploneability Higher Ed event in Texas focusing on Plone in higher education. The event had over 40 attendees and resulted in a wealth of presentation materials.

Shortly after the Ploneability conference, Jordan Carswell offered to donate the domain name Plone4Edu to the cause, and rename Plone4Universities to Plone4Edu since it was more representative of the Plone in education effort, not limiting it to just universities.

What this activity indicates to me is that there is a strong demand for using Plone in educational institutions. However, many educational institutions lack the IT staff and resources to go through the lengthy process of evaluating Plone and the various add-on products to see which ones are right for their university. There has to be a way to bootstrap these universities, so that they can get a better feel for Plone’s power and how it can be used to serve their needs.

A proposal to create a Plone4Edu buildout.

I’d like to propose that as part of the Plone4Edu initiative, a buildout is created with a collection of products suitable for the educational audience. The purpose is not to provide a complete solution, but to make a convenient package of the most common add-on products for Plone, that would appeal to an evaluator from the education sector.

So how do you make a buildout?

There are already a number of buildouts available for Plone, to name a couple: PloneGetPaid buildout and Plone4Artists buildout This is probably a good place to start if you want to see how to make your own buildout.

Martin Aspeli, author of Professional Plone Development has a chapter about creating buildouts in his book. He’s also written a howto in the documentation center called Managing projects with zc.buildout.  Also, see the comprehensive documentation about zc.buildout on the Python cheeseshop.
We need to give some more thought to how to make these buildouts more accessible, since right now they are geared more towards the developer. Anyone have some thoughts along these lines?

Hivurt – a new Zope 3 based CMS?

November 9, 2007 at 10:06 pm

Stephan Richter just alerted me to a new CMS that has been developed in Zope 3. Mikhail Kashkin from Key Solutions (a Russian company) reported on the Zope developers list that they are developing a Zope3-based CMS called Hivurt and some of the components are already available on their SVN repository.

All of the documentation is only in Russian, but Stephan said that they are busy translating it to English. A Google search brought up this code repository on so that may be the future home of the English translated code and documentation.

Looking at the screenshots, I can’t but help observe that the UI looks surprisingly similar to Plone/CMF with a “contents” tab, and “add” and “actions” dropdown menus. Although given that it’s built on top of pure Zope 3, I’m guessing that it’s much faster than Plone. It will also be interesting to see what functionality is missing from Hivurt that comes out-of-the-box with Plone.

According to this newsitem, is the first major site built using Hivurt CMS. is the official website of TC “Sport” – Russia’s “most reliable sport news supplier.” Its potential audience in Russia is 62 million people living in 72 regions of Russian Federation.

TC “Sport” plans publishing the latest information in the sports world, video collections (Video-On-Demand), streaming video on various sports commented by the leading journalists and sports professionals. The portal offers many interactive features for its visitors, blogs of famous sportsmen, coaches and commentators.

Hivurt sounds like a very promising CMS and a welcome addition to the Zope 3 community. We’re looking forward to seeing the English documentation and trying it out!

Blogged with Flock

Tags: , , , , , ,

IE Tab embeds IE inside Firefox

November 7, 2007 at 11:38 pm

This is a pretty cool extension that allows you to switch rendering engine for any tab from within Firefox. Basically, you can view any page in Firefox either using the native Firefox rendering engine, or you can use IE to render the same page without having to leave Firefox. The best part is that you can still use all your cool Firefox debugging tools (Firebug, Yslow…) when you are using the IE rendering engine. For Windows only. IE Tab :: Firefox Add-ons

Blogged with Flock

Tags: , , , ,

More Facebook Music Rumors

October 31, 2007 at 6:17 pm

6a00d83451b36c69e201676863b68c970b-120wiFacebook Music will essentially be a way for musicians (or their labels) to create their own fan pages just like on MySpace, each with a separate sub-domain within Facebook. Facebook members will be able to join any artist’s network as a “fan”. This will be similar to joining a group, but centered around music. Members will be able to listen to streamed songs, watch videos, add music to their own pages, find out about upcoming tours, and meet other fans. Facebook is also supposedly working on sales widgets for these pages (to be introduced at a later date) so that artists can sell downloads directly through Facebook.

More Facebook Music Rumors

It will be interesting to see how this stacks up against MySpace, and if bands will move their web presence from MySpace to Facebook. Many bands don’t even have their own website these days, and prefer to just use their MySpace page as their “homepage”. This is really silly because you’re essentially giving MySpace all of your traffic, and making your fans look at all those banner ads.

As Christopher Penn said at Podcamp this weekend, you don’t want to build your house at the intersection of major highways, but you want to post billboards to direct traffic to your own home on the web. In other words, use these sites to promote your own website, but don’t give all of your content to them.

Ever since Facebook opened up it’s platform up to developers, we’ve seen a plethora of interesting apps created for Facebook. This was a brilliant move on the part of Facebook, because it means there is now a way for 3rd party developers to tap into a huge existing social network, one that is growing at a phenomenal rate:

  • 350,000 new users per day
  • 50 million users
  • # of users double every 6 months
  • average person spends 21.5 min on the site
  • 65% come back the next day

It will be interesting to see what happens with Google’s OpenSocial which launches tomorrow. Apparently, it provides a common set of APIs for accessing social networking data.

If I’m building a social networking app for musicians/bands today, I don’t think I necessarily want to be tied to one particular platform which may go out-of-style tomorrow. Can anyone say Friendster?