MIT App Inventor Official Open-Source Release

I’m really pleased to see this release happen. Dec/Jan was an awkward time as Google dropped App Inventor and MIT didn’t have their site ready. MIT has done a sterling job since and it’s great to know that the full up-to-date source code is available. I hope a community of contributors to the codebase now starts building up.

One issue we ran into in our school with accessing the main MIT site and GAE was a lack of bandwidth. When you have 15 laptops all trying to download/upload Java Apps to the internet on a connection that I think is 512kbs, you are going to have problems.

So a private local App Inventor install means we could provision an old PC as an Ubuntu server in the school and serve everything over local wifi. I hope the dev server capabilities are improved beyond “a few users” so we can remove the dependency on Google App Engine and provide a trouble free setup for the kids.

 

First two trivial parts of getting App Inventor working on Raspberry Pi done

I’ve been playing a small bit with the Raspberry Pi VM on VMware to see what’s possible and what isn’t. One thing I am eager to try when it arrives on the week of May 14th (YAY!), is to get App Inventor working on it.

There are three basic user parts to App Inventor. The browser-based Designer, the Java-based Blocks Editor and the Phone Emulator (if you don’t have a phone).

Yesterday I got the first two bits working with about 2 minutes work. All you need to do is install the OpenJDK. SUN Oracle Java is not available yet.

The bit that will need more work is the emulator. I think. Ye see, I grabbed the code for the Linux version of the emulator and followed the simple instructions to build it. Then I saw it was building for i386 and of course the RPi is ARM-based. Damn.

A bit of poking around and I realised we were almost in a recursive loop. I was running ARM Linux in qemu i386 emulator on a Virtual Machine and I was trying to run an ARM emulator inside a another qemu i386 emulator inside that. Yes my head exploded too.

But then sense prevailed and I realised that Android is ARM and RPi is ARM, so do we need an emulator at all, or just an Android image compiled for ARM11 inside some sort of wrapper/container?

As an old Embedded guy I should be all over this but I’ve forgotten more than I ever learned about cross-compiling and building OS images. Anyone have any ideas on where to start? I popped a question on the relevant App Inventor Google Group too.

Of course all of this may be moot if the 256MB of RAM and 700MHz CPU is not enough to support all of this. But it’s worth a try.

MIT App Inventor Open Beta Preview

For the past two months, we have been conducting a closed test of the system for an increasing number of testers, and we’ve currently scaled to 5000 testers. Today, we’re taking the next step, and opening the MIT App Inventor service to everyone. All you will need is a Google ID for log-in (for example, a Gmail account).

via Announcing: MIT App Inventor Open Beta Preview | App Inventor Edu.

Really happy for the MIT team, they’ve done a great job getting App Inventor moved whilst nailing a bunch of annoying bugs. It now works on Internet Explorer too, which was a major pain point for us in our kids’ school.

If you want a gentle introduction to programming and mobile Apps, whether you are an adult or kid, I can’t recommend App Inventor highly enough.

App Inventor early access to educators with current and pending courses

Are you teaching App Inventor in a course this Spring, or beginning a course soon? Then you are eligible to apply for early access to the experimental version of App Inventor at the MIT Center for Mobile Learning. Apply by filling out the form at: http://bit.ly/MitEarly

via Early access to educators with current and pending courses! | App Inventor Edu.

App Inventor Source Code Now Available

Thrilled to see that the code is now available for anyone to grab and modify. Once MIT is up and running well, they’ll start accepting contributions.

My challenge to all the developers out there – port all of AppInventor to iOS. This would be far far more important and valuable for a child’s education than some overpriced e-Books on a single vendor platform.

 

A Rural Irish School’s App Inventor Pilot. The Story So Far.

Last May I started playing around with the idea of doing some sessions on Google App Inventor in my kids’ Primary School. I’d had great success trying it out with three of my own kids aged 12 to 7.

If you are not familiar with App Inventor, it is a way of building mobile phone applications for Google Android phones using a simple graphical blocks approach. It is highly suited to an educational environment and has seen a lot of uptake since its launch in summer 2010. It has recently been taken over by MIT and I expect great things from them in the coming year.

I am a member of the school’s Parent’s Association and I pitched the idea of me doing some after-school sessions with maybe 5th and 6th class in the Autumn. They loved it and so I contacted the headmistress and the teacher mainly responsible for computers in the school. Due to the summer holidays, nothing much happened until September except for me realising that after-school requires a very long Garda approval process whilst during-school doesn’t. So we switched the focus to that.

A note on the school itself. It is a very successful rural school just outside Bandon, Co Cork with approx 25-30 kids in each year. The mix of kids (boys and girls) is everything from farmer’s children to those who live in Bandon town itself. Socio-economically, it ranges from the very well off to those on social welfare. Every class has an interactive white-board and there are 15 laptops available in addition to the teacher’s own. Most are PCs but there are a couple of Mac Books. However, there is no formal teaching of “computers”. More on this topic later.

Over the summer I made contact with some relevant people and was delighted to get the loan of 15 HTC Magic phones to use in the pilot. However do not under-estimate the amount of time needed to check that 15 phones work ok with App Inventor, have the correct settings turned on and are charged!

In the new term I met with some of the teachers and the new headmistress and they were very enthused. We put together a plan that would see me do a 30-minute session a week with each of 5th and 6th class from October until Christmas. The children would work in teams of two with a laptop and phone for each pair.

My big concern with the pilot was to ensure that “no kid gets left behind”. I knew those children who have PCs and even Smartphones at home would have no problems. I was much more interested in the ones who had neither and who had zero technical skills. I was also interested to see if App Inventor would work well for those who had resource teachers in certain subjects and even those who were on the autistic spectrum.

Basically, I had this idealised vision that our little pilot could help a bunch of kids discover the joy that comes from being creative in a technology sphere and maybe even give them job options in 8 years time that they had never considered possible. I know, I know.

I used the Google Apps for Schools system to create 30 GMail accounts for the kids which they would need to login to App Inventor. I took the first standard tutorial (HelloPurr) and re-wrote it to be much more simplistic. I made sure to get all the domains we needed allowed through the educational firewall. I installed Java and App Inventor on some of the laptops and the 5th Class teacher did the remainder in advance.

I headed in on the first day to introduce them all to App Inventor. The response was amazing. Every kid in both classes was totally pumped by the idea. They all immediately wanted to create Angry Birds, Zombie games and 3D games. Everyone seemed to be a Cut The Rope and Doodle Jump fanatic. It all looked good.

I put together a “curriculum” which would see us do two tutorials and then move to the kids coming up with ideas for their own Apps and then building them. The aim was to have a competition at Christmas for the best App.

Things didn’t quite work out as planned………..

The first few weeks were hell. Both myself and the kids got very frustrated. And it was all down to the most basic problems that you never think about as a technical person but which can stop any normal person in their tracks.

In week one we didn’t even manage to log every team into App Inventor. The problems included:

  1. Very few understood the difference between the address bar and Google Search
  2. Many had issues just getting the email address and password in correctly
  3. A lot of time was being wasted asking the children to type in long URLs to get to images etc and they would type them wrong or mis-capitalise things
  4. The Captchas stumped most of them
  5. App Inventor had huge issues with re-directing to blank pages and requiring page refreshes
  6. We finally realised that App Inventor is incompatible with Internet Explorer but that was all we had on every machine
  7. 15 laptops logging into the same site on a school rotuer caused freeze-ups due to lack of bandwidth
  8. Logout/Login between 5th and 6th class was a nightmare of bad re-directs, cookies and browser cache
  9. Kids don’t listen :-)

So we got Google Chrome installed on all of the laptops and things improved in week 2 (but not the blank screen issue).

Instead of us getting HelloPurr done in 2 weeks, it took us until late November. Each week I would have to jump from pair to pair, dealing with problems ranging from kids forgetting their email address, to Chrome problems, to phone connection problems, to mis-understandings. It was chaos. And none of it was their fault, it was mine for not realising how little most children know about the nuts and bolts of using software. Most of them know how to get to a web-site in IE8, that’s all.

The Blocks Editor was a particular pain point and still is. It looks like we’ll have to switch to Firefox to get it to launch reliably.

But the day we got HelloPurr running on 15 phones in each class was really special. All of them were delighted with themselves. They were beaming. I also pointed out to them that their use of a phone emulator in the previous weeks put them in a very small group of programmers globally.

In the last couple of weeks we have switched to doing the MoleMash tutorial. The reason for this is that it can form the basis for a wide range of games. Due to the previous chaos and the fact that we have most of the nitty gritty problems sorted, I am doing this tutorial as a classroom style lesson. I do each step live on the white-board and they copy me. I don’t go to the next step until everyone says they have successfully carried out the previous one. The progress has been far better and on the 21st Dec, they all got the first revision of MoleMash running in an emulator.

One other advantage of this approach is that the teachers say they can follow things a lot better themselves. They were competely lost as I battled with Internet Explorer, the Blocks Editor and the Emulator.

The last two sessions were also an hour with each class instead of 30 minutes. I think we’ll stick with this in the new year. We lose 10-15 mins of every session with login/logout problems and transferring 15 laptops between the classes. We had much more than 2x progress with the longer sessions.

The Google tutorials themselves are totally unsuitable for children of that age as they are far too information-dense and assume too much knowledge. A lot more hand-holding is needed.

With the Google shutdown and the delay before MIT is ready, I have created a private install of App Inventor for the school so we can continue. I expect them all to get the full MoleMash game running on real phones before the end of January. Then I think we’ll do some variations on it so they can see how easy it is to modify. Then we need to explain some of the other key blocks and then maybe let them try their own Apps.

Whilst the sessions are exhausting I enjoy doing them. Particularly when the 6th class teacher told me that she sees kids completely engaged during those sessions who she has been unable to motivate in anything else. She also told me that certain kids who are struggling in school in general seem to shine doing App Inventor. Maybe I wasn’t being so idealistic?

One big problem we have is that I don’t scale. Committing to a day a week for months was unrealistic and I had to re-schedule a bunch of sessions. I always knew we’d have to do “train the trainer” but I don’t know if the school has other parents with the skills, interest and time to take part. I hope so. I’ll be putting the call out soon.

We will still have our App competition with a prize, it’ll just be months later than I expected.

The general lack of computing skills in Irish schools is pretty shocking and it tells me that it’s time to wind down certain subjects and add “computers” as a subject at Primary level. Can I suggest moving all religious education to Sunday Schools like other religions do? Parents with the skills, interest and time could run those religion sessions. That would free up a huge amount of time to let schools do their real job.

Overall? A big success, loved by both kids and teachers. I just need to be more realistic with the timescales and the skillsets.

 

Summary of Setting Up Your Own Private App Inventor Server For Your School

It turns out that the setup of a private App Inventor server is easier than I thought. If you are used to Amazon EC2, it’ll be a doddle for you. The Google App Engine bit is absolutely trivial. Full MIT documentation is here.

  1. Go to appengine.google.com and sign-up with a GMail/GApps address.
  2. Create an App. This only means giving the App an name.You’ll have to confirm your identity by SMS from Google. We used a variation of the name of our school as the app name so that our private App Inventor will be accessible at http://nameofourschool.appspot.com
  3. Download and install the latest Oracle/SUN JDK on your PC
  4. Download the App Engine Java SDK
  5. Unzip it to somewhere like c:\apps\appengine-java-sdk-1.6.1
  6. Download the latest App Inventor zip (currently Dec 20th 2011)
  7. Unzip
  8. Then un-gzip and un-tar the appinventor-Dec-20.tgz contained within. (Use 7-Zip for all these different archive formats if you are on a Windows PC)
  9. Navigate down into the the directory tree created by all this unzipping and copy the appinventor sub-directory you find so that it is at something like c:\apps\appinventor
  10. Now you need to setup a Build Server if you want to be able to download the Apps onto real phones. I did this on Amazon EC2
    1. Go to Amazon AWS and Sign-Up for a new account
    2. You will have to provide a Credit Card but it won’t be charged
    3. You will be verified by an automated phone call
    4. Once the account is fully live, go to the AWS Console and make sure you are viewing EC2 instances in EU-West (Ireland)
    5. Create a new Amazon Linux AMI Micro 32-Bit Instance in Ireland using their new Quick Wizard. (Go for 32-bit to save hassle)
    6. This is free for a year so you don’t have to worry about cost. Maybe a tenner a month after that?
    7. Grab the PEM SSH Key and do the usual messing to convert it to a Putty ppk file so that you can SSH to the instance.
    8. SSH to the instance
    9. Grab that App Inventor zip from Step 6 using wget on the EC2 instance
    10. Do all the unzipping etc again, but this time you want the other file contained within (for-BuildServer.tgz). Un-tar and un-gzip that for-BuildServer.tgz file
    11. I found that the OpenJDK that comes pre-configured on the Amazon Linux instances threw an error when I tried to build using it. So I installed the Oracle/SUN JDK instead
      1. Go to http://www.oracle.com/technetwork/java/javase/downloads/jdk-7u2-download-1377129.html
      2. It appears Java 1.7 has issues with signing the Apps. So you have to use the older 1.6 instead
      3. Go to http://www.oracle.com/technetwork/java/javase/downloads/jdk-6u30-download-1377139.html
      4. Download the 32-bit RPM bin for Linux using wget on the instance
      5. sudo sh thenameofthefile.rpm.bin
      6. sudo alternatives –install /usr/bin/java java /usr/java/latest/bin/java 1500
      7. sudo alternatives –set java /usr/java/latest/bin/java
    12. Now you can run the build server by going to the for-BuildServer directory you created in Step J above and just running ./launch-buildserver
    13. In the AWS Console, Open up port 9990 in the security groups
    14. Copy the public DNS name of your server from the AWS console
  11. Now back on your Windows machine, go to c:\apps\appinventor\war\WEB-INF\appengine-web.xml
    1. Change localhost in <property name=”build.server.host” value=”localhost:9990″ /> to the public DNS name of your build server
    2. Change <property name=”use.whitelist” value=”false”/> to be true
    3. Save the file
  12. Now edit c:\apps\appinventor\war\whitelist and add the GMail/GApps addresses of every account that you are allowing to use this App Inventor instance. In our case that it me, 2 teachers and 30 pairs of kids, all using the school Parent’s Association  GApps email addresses that I created.
  13. In a Windows Command Prompt, cd to the c:\apps\appengine (or whatever) directory and then enter  c:\apps\appengine-java-sdk-1.6.1\bin\appcfg.cmd -A myapplicationID update war   (where myapplicationID is obviously the name you picked in Step 2)
  14. The last step builds and uploads App Inventor to App Engine and runs it. If, after a few minutes, you get a Success message then you are in business! Just go to http://nameofyourapp.appspot.com and you can login with your GMail/GApps account and start using App Inventor just like on the original Google site.

As I said in the last post, the only major concern is what number of simultaneous users will kick us out of the free tier on App Engine. Also, if lots of people are packaging Apps for phones, the Micro EC2 instance will take an age to build them. This isn’t a huge issue for us as we spend 99% of our time either using the emulator or a live non-packaged debug session on the phones.

Shout if you have any questions or comments.

My next App Inventor post will be a status report on how the pilot in our school is going.