>> Arjmand Samuel: It’s my pleasure to introduce today Shaileen... Microsoft Research. Shaileen manages the education outreach and curriculum

advertisement
>> Arjmand Samuel: It’s my pleasure to introduce today Shaileen and Andrew to
Microsoft Research. Shaileen manages the education outreach and curriculum
development for the App Inventor. She has a background in software
development, a long one, as well as doing research in education. So I would
like to welcome you.
Then we have Andrew McKinney who is the Lead Software Architect for App
Inventor. He has 20 years of experience developing education technology and
he has been at Harvard and how he is at MIT leading this App Inventor effort.
Welcome Andrew.
>> Shaileen Pokress: Okay. I will get started. Thank’s for having us. We
are fresh off the plane from Cambridge, well no we came in yesterday, but we
are from MIT in Cambridge, Massachusetts. The Center for Mobile Learning is
the organization that App Inventor is housed inside of. The Center of Mobile
Learning is at the MediaLab. And we are built on the philosophy of promoting
learning anytime, anywhere for anyone.
So the MediaLab you might know is a very generative, creative, crossdisciplinary place and that make is a great place to have a tool like App
Inventor. That’s actually why tools like Scratch, the programming language
Scratch a very well know drag and drop visual programming blocks-based
language comes from the MediaLab from Mitch Resnick. So Mitch Resnick, Hal
Abelson and Eric Klopfer formed the Center for Mobile Learning in order to
have a place to put these tools that are similar to each other and have these
goals in mind. Probably the big thing that drives us is allowing people to
rather than being consumers become creators of their own technology. So if
they have a technology need we want everyone, everywhere to have the ability
to create their own tools, technological tools, without having to wait for
someone else to author it for them. It’s a type of literacy that we believe
should be afford to everyone.
So these are the three people I just mentioned. Eric Klopfer is at the
Scheller Teacher Education Program. He is a biology guy turned educational
games, games for learning and he runs a really interesting set of projects
out of the STEP Lab, the teacher education program lab. Hal Abelson is our
colleague who really runs the show of App Inventor. He is the father of App
Inventor, as well as all these other wonderful things. He is a busy guy and
he has been a CS professor at MIT for quite awhile. Mitchel Resnick is the
creator of Scratch and is one of the leads of the MediaLab. Really he is one
of the people who were there early on when the MediaLab was established I
believe in the late 80s.
So Center for Mobile Learning came to be just about two years ago. Scratch
was already well established and Hal was off at Google creating App Inventor.
We are going to show you more about what App Inventor is and what it does.
App Inventor was built on the same idea as Scratch, so it’s not like Hal just
said, “Oh we need an easy way for people to make their own apps”. He
actually said, “Look at Scratch, that’s great you can make games and
animations on your local computer, you have a little stage and you can have
things play out. How cool would it be if I had a similar programming
interface, but you could get a mobile out at the end”. So that was his idea
going into it before the Center for Mobile Learning existed, before he
decided to join forces with Mitch.
So when he spent --. Hal went off to Google who built the first version of
App Inventor. When it was time to come back to MIT, sabbatical was ending;
he had to get back to teaching computer science students he brought App
Inventor back with him. And it’s partly because Google was rearranging
things and GoogleLabs was ending and partly because Hal was leaving and
wanting to take his project with him. And so they formed the Center for
Mobile Learning. This other project is something called Taleblazer, I have
another slide about that, that is for augmented reality games. I will say
more in a second.
So does everybody here know Scratch, are you familiar with Scratch a little
bit? No, it’s freely available online scratch.mit.edu you can check it out.
You will see some similarities, because we are going to show you App Inventor
today, you will see some similarities in the way that the blocks click
together and the metaphor for programming that Scratch brings. Scratch
really is one of the original blocks-based programming languages. And it was
Mitch Resnick’s strong desire to do something about engaging young people in
creating with technology.
Taleblazer is the augmented reality game toolkit that I just told you about.
It’s also a drag and drop puzzle piece programming interface, although you
can’t see it right here because it’s some tabs and on another tab you
actually will program your games behavior. So it’s very similar to Scratch
and App Inventor except that the end goal is an augmented reality game. So
you program the game and then everyone has got a device with that game
running on it. You then go out into the world and use the devices camera to
pick up bits of information and put things in your bag pack. So the
primitives in this environment are specifically for games, for location based
games.
And that if you know about Eric Klopfer’s work you can see how this evolved,
because this is what he does. He is always thinking about non-traditional
ways of learning. Where people are engaged in a way that it’s playful fun
and learning becomes just an experience and not something you have to sit and
force yourself to do with your highlighter and textbooks.
Okay. So now pretty much the rest of the presentation will be about App
Inventor, but I am happy to go back if you have questions about the Center
for Mobile Learning and how it all fits together. This is really why we do
what we do, democratizing building of mobile apps. We want to allow people
to create what they need without waiting around for someone else to do it for
them. We find that it has a low barrier to entry and a very high ceiling
because all of the phones functions are available. As phones and I say
phones but I mean phones and tablets. Right now App Inventor is only on
Android, so any Android device can have an app built with App Inventor put
onto it.
An example of this, you know, we can access all the phones functions. Most
devices now have NFC and back when App Inventor was first built that wasn’t
true. I don’t think any Android devices had NFC back in 2009, maybe they
did. So we are now putting in an NFC support. There will now be a component
in the component list that says, “Oh, NFC and I guess I can tell the phone
how to handle NFC tags or talk to NFC tags, read them and do stuff with that
information”. And you can build real apps. They can go all the way up to
the Android market. We have had people do that.
What does MIT provide? We have a website that is actually even more evolved
then what you see here. That’s been a big part of what I have been doing for
the past a little over a year that I have been working at MIT. To take this
great software tool that was fresh from Google and being integrated at MIT
and put onto MIT servers. And Andrew and his team were hard at work to make
sure that it was stable, robust and could handle a lot of people. All of
these things existed. There were some Google forums, there were places to
get tutorials, but they were scattered in different places. So we have put
them into a website at least, that was a start. So this is constantly
evolving.
But, I think it’s important to know that it’s free. It’s actually open
source so if someone wanted to take and make their own instance of an App
Inventor server they can do that. They can even change it and a whole school
district, or I have actually heard about in other countries this being a
possibility where if there is some issue with going out on the internet or
something. I don’t know of anyone who has actually done it, but we have
heard it talked about in the UK and China of, “Oh, well maybe we could just
take the code base and make our own version and then run it locally”. There
are a lot of implications for it being open source.
Okay. These next four or five slides are what I call, “Why I Do What I Do”.
I find it very motivating to do this work to help people, especially young
people, but really anyone. I will even admit that I have a bias towards
young women. I would like to help diversify the number of people who feel
comfortable with what really happens inside that black box and how do you
tell it what to do.
So building apps seems to be such an amazing hook. People of all ages,
especially teenagers are just hooked right away when you tell them they can
build their own app. And I think it’s because they are very meaningful and
personal. You hold it in your pocket, it feels very personal just the way we
interact with it and hold it. It’s very relevant to the real world. Being
able to carry it with you is a dimension that’s not available with a tool
like Scratch or we were talking about BYOB in the beginning. You can build
cool stuff, but it stays on the computer. And you go back to your computer
to show it off. Now you just carry it around, you can give it to your friend
and they can have it on their device. Portability is a big piece of this and
it is easy to share.
We have just a few numbers which even as I was putting this slide together
really kind of surprised me. The number of people using mobile devices is
just growing and continues to grow. And I am sure you are well aware of this
in the work you are doing here. I know just from my own school district
where I live back in Massachusetts that adoption of tablets and in some cases
bring your own device, which can include phones, is happening. Schools are
considering ways to get more technology into their schools and tablets are
cheaper. So they are really looking at tablets. We are just going to see it
grow and grow.
I will just pull these all up. These are all things that App Inventor can
tap into and allow the developer to access. The fact that it can access
these things is what makes App Inventor so engaging, because you can build
something that’s socially interactive. You can build something that reacts
to your touch, or shake, or tells you where you are and does something with
data that’s coming into the phone. So it immediately becomes a toolkit right
in your pocket.
This is sort of my public service announcement of why it’s important to teach
computer science to everyone and how tools like App Inventor --. And there
are other tools out there that get at these things, but if people can get
exposed at a younger age, be exposed in a way that’s engaging, and
interesting, and fun and relevant it can change their lives. I know that
sounds like a grand statement, but it really can. I will talk after Andrew
talks a little bit about a program called Technovation and a few other’s that
have.
I have some anecdotal stories, but there is also a trend were we are starting
to collect more and more data showing that just one of these experiences like
a five week course or even sometimes just an afternoon after school class is
really affecting the lives of young people. And especially middle to high
school age because they have still got decisions ahead of them of what they
want to study. And the experience of building something fun and cool that
they can show to their friends and, what I call opening up the black box,
that opens up the black box and they say, “Oh, I see kind of how it works in
there and I can understand that. I can do that, I can change the way it
works or I can build something else that’s like what I had, but I wanted it
to be different. It can change it or whatever”. It is a really remarkable
experience that shapes someone’s outlook for what they are good at and what
they might like to do.
So I am going to turn over to Andrew for a few minutes to talk about how it
works.
>> Andrew McKinney: So what I am going to do is sort of give you an overview
of the components that make up App Inventor. App Inventor is a pretty big
web application. It’s got lots of moving parts. It lives in the cloud under
Google App Engine. It is written in GWT, Google Web Toolkit. So it’s all
Java based. So GWT for those of you who may not know is a client server
architecture technology. You write your code in Java, but it actually gets
compiled into JavaScript for the client. So that’s one piece.
We have storage, Google Cloud Storage, that we use for holding all of the
projects and all of the user data for the people who use this, as well as a
Google Compute Engine which we use. Again, these are all cloud based
services. We have used Amazon and you can use any sort of cloud based
service to host these up in the cloud.
So what you see here is now the application. The application consists of a
designer, which is on your left and the Blocks Editor. The application can
connect --. One of the interesting things about App Inventor I think is the
ability to do live development. So you can connect your program to an
emulator and see and develop your application as you build it. You can
connect to an emulator if you don’t have a hardware or actual device. If you
have one you can connect via WIFI or via USB. So that is sort of a general
overview of App Inventor.
Where are we going? Currently we have been working on a new version of App
Inventor. And I should perhaps go back to this slide and say that the Blocks
Editor current version is a Java application that’s run on your computer via
Java Web Start. So it’s separate from the web based application. It’s
spawned application that lives on your computer on the client side. With App
Inventor 2 we have integrated the Blocks Editor into the browser. So
everything now is in the browser. We have done away with the use of Java as
sort of this external set of tools that a user needs to install on your MAC
and manage, which is cumbersome.
So we have integrated it all together. The Blocks Editor is now together
with the designer. It’s built using an open source project called Blockly,
which is a JavaScript blocks language. Right now I am going to show you a
demo. This is actually App Inventor 2. We are planning to announce and make
available, it’s an alpha version, in July, mid July, so about a month. We
are opening it up to the public as an opt-in testing announcement so
everybody can start playing with it.
This is live code; it’s running locally on my machine right now. Some of the
features that you see will be coming in July. So here is the App Inventor.
This is the first page when you start App Inventor. I don’t have any
projects so what I need to do is create a project. I am going to call this
[inaudible]. So what you see now is the designer. And on the left hand
side, your left hand side, there is a palette of components that you can use
to build your application. You see there is sort of the generic sort of
components that you would expect; buttons, canvas, check-box, etc and images.
We also have other media type components, things that you would expect to be
on your phone that you can use, camera, sound, video player, etc. There are
animations, and there are Twitter components that we have written, E-mail
Picker, so on, and so on and also sensors. So there is quite a bunch of
components that one can use to develop their apps with. So in this demo what
I am going to do is take an image. So you grab a component and you drag it
into your work space, into the designer.
>> Shaileen Pokress: I think you actually [inaudible], unless you are doing
[inaudible].
>> Andrew McKinney: Yes, you are right.
>> Shaileen Pokress: So a button can have an image as one of its properties
or you can just have an image. And the reason I am stopping Andrew and
saying wait you want the other button, is because buttons come with a click
event. When the button is clicked do this, whereas an image doesn’t come
with a click event.
>> Andrew McKinney: Thank you.
>> Shaileen Pokress: And there are very good reasons to use an image and not
a button, but for this demo you want to do the button.
>> Andrew McKinney: Thanks. I am also going to use the sound.
non-visible component as you see. It’s not part of the --.
So what I am going
image to it. So I
properties of this
upload a couple of
So sound is a
to do is I am going to take this button and attach an
can go over to the properties palette. These are the
button and I can upload an image. I am also going to
sounds.
>> Shaileen Pokress: Here, I don’t think you can do them all at once right
now.
>> Andrew McKinney: Oh, okay.
>> Shaileen Pokress: And that’s actually Hal Abelson’s cat.
little bit of information.
I just love that
>> Andrew McKinney: Also, I am going to --.
>> Shaileen Pokress: Get rid of the text.
>> Andrew McKinney: Get rid of the text here; we don’t need that.
>> Shaileen Pokress: I thought Hal had some stock image of a beautiful cat,
but it’s his cat Wilson.
>> Andrew McKinney: Yes, he is famous. We can also go to the screen and we
can change the orientation or the alignment of the cat. The sound I am going
to go to and give this now, I am going to upload.
>> Shaileen Pokress: No, under media on the left.
>> Andrew McKinney: Upload a sound.
>> Shaileen Pokress: Oh yeah, I guess you can do
on the left where it says media. As Andrew adds
available to your project is showing in a list.
know you could do that. I thought you had to do
the left.
it there, sorry. So you see
things the media that’s
And I didn’t actually even
it from the media list on
>> Andrew McKinney: So I have added a sound to this. Right now I have got my
demo, or my application. What I can do now is switch over to the Blocks
Editor and this is where I can give behavior to my application. You notice
that we have lots of blocks here available. These are all the primitive
blocks that you would expect to see perhaps in a programming language or want
available to you. What you also see at the bottom are your components.
These are blocks that are associated to the components, and various events,
and handlers and so on, that you can use to control those components.
So what I am going to do is go to the button component. I am going to grab a
button when clicked event and I am going to then go to sound. And you see
that you have, well there are lots of things we can do with sound. We can
pause, play, resume, stop, etc, vibrate, play a sound and vibrate the phone.
I am going to take the play. So I am going to play sound 1. All right. So
this is where the live development begins.
So we have created the behavior of our application using those components.
As I said we have an emulator that I am going to connect to. And this is
loading up, so this is actually launching Android, booting up the phone, it’s
doing a few other things, preparing the storage, unlocks the phone and it
then launches a companion app. So it actually has loaded on the emulator an
application that does the interpretation of the blocks being passed to the
emulator and you see your application.
So now I can click on this button image [meow] and I can hear the cat [meow].
What I can also do is go back to the designer let’s say and say I wanted to
make this sound a little different. Again I can upload another sound, let’s
see, you can see where this is going perhaps. I have made that change in the
designer. I can go back to the blocks. The emulator was hiding. You didn’t
see anything change here except that I changed the sound [growl]. So now
it’s a lion [growl]. So you can see that you are developing in sort of a
live mode.
>> What version of Android is this using?
>> Shaileen Pokress: It goes back to version 1. something.
>> Andrew McKinney: So right now this emulator is based on Android 2.3, okay.
Obviously, you know --. We will create emulators for different versions.
That’s part of something that we want to do with App Inventor 2.
>> So you can’t specifically choose to make an app [inaudible]?
specifically for the newer versions?
It’s just
>> Andrew McKinney: Not right, not right now, but we are heading in that
direction. You will be able to choose emulators for different aspect ratios,
and tablets, and horizontal or portrait landscape and different form factors.
You will also be able to choose different versions of Android that are built
into those emulators.
>> Shaileen Pokress: Yeah, but the backwards compatibility thing is pretty
nice because a lot of teachers, and we have a wide audience of people, but
teachers are one of our focus points, they will get inexpensive Android
devices they can and they will be running older versions of Android.
>> Andrew McKinney: Right.
>> Shaileen Pokress: So I think it goes back as far as 1.2.
>> Andrew McKinney: It goes back as far as 1.5; that’s sort of our lowest
common dominator.
>> Shaileen Pokress: This is pretty old at this point.
>> Andrew McKinney: And we have actually gathered a lot of usage data that
the target point is 2.3; most people are using 2.3, which is nice because
that sort of when they introduced NFC and it’s now supported under that.
>> [inaudible] being more recent and so they are kind of more with the Jelly
Bean operating system.
>> Andrew McKinney: They are, they are.
>> I mean I know that the 2.3 still carries it.
>> Andrew McKinney: Yeah, I mean 2.3 are where they started adding the NFC
functionality. And again we have to make sort of these trade offs between
the people who are using the older phones or have the older versions of
Android.
>> Right.
>> Andrew McKinney: So let’s see, the next thing I want to
this. I can go back to my projects and under more actions
project file. I can load in a preexisting file. So I can
a magic 8 ball app. Has everyone heard of magic 8 balls?
shake it. Ask a question; shake it and you get an answer.
do is, we can stop
I can upload a
choose, let’s see,
Yes, I hope so,
So you see that I can upload projects. This one is pre-built. You can see
that it’s got a button. It’s got a horizontal arrangement, it’s got a label
and it’s got the text to speech component. If I go to the Blocks Editor I
can see the code that makes this work. It’s a button label, lists and your
answers. What I am going to show you now is connecting it to your actual
phone wirelessly. So I say connect to companion on my phone and run the
companion app. I can say [beep] scan that and there you go. So you have got
the application now on your phone. Is it going to rain today? [female voice:
always]. Are the Bruins going to win tonight? [female voice:yes]. I hope
so. [laughter]. Anyway you get the idea.
So here’s again another application a little more sophisticated. Let me try
one thing. So I can pull that block out and what I want to do is go back to
the designer and I want to, let’s see, sensor.
>> Shaileen Pokress: Yeah, you do want that one.
>> Andrew McKinney: And I want to add an accelerometer. Okay. So I have
added the accelerometer component. I can go back to the blocks. I can
delete that button block. You see that I have got the accelerometer here.
What I want to do is use the event when I shake. I can plug that in and
[female voice: ask me a yes, no, most likely yes, always, no]. So you can
see how easy it was just to take advantage of some of the built in hardware.
Sorry.
>> Shaileen Pokress: So we use that, just to interject, this is often a first
app that people build in a workshop. Sorry, the app is running on my phone
too. And this is a really nice elegant solution, because it’s a fun little
toy if you are only in an hour long workshop, you can actually have something
to take with you take with you to show people what you have built.
And we have gotten them doing something interactive, you know the
accelerometer shaking, the phone is actually moving, they learn about a list
and a list picker, they have done a little random thing in there, so they are
getting some programming concepts and they got to use a text to speech
component. And it’s with what like 8 blocks. It’s a pretty elegant quick
app that’s got a lot of functionality. So this is one of our favorite first
apps to give novices to build.
>> Is that going through the app store to get to your phone or is that going
through the App Inventor [indiscernible] on your phone?
>> Andrew McKinney: Good question. So the way this part works, the way the
live development works is that we have written what’s called the AI Companion
App which is actually in the Play Store. So it’s an application that one
needs to download and put on your phone. So that --. The Companion App is
basically an interpreter. So the blocks, I can get a little deeper now, the
blocks are evaluated into a language called YAIL, Young Android Intermediate
Language or yet another intermediate language.
It then uses the KAWA complier, which is also an interpreter; it’s a Scheme
interpreter. So KAWA, sorry, so YAIL is basically Scheme with a bunch of
macros. It’s Scheme and it’s basically a set of macros built on Scheme. So
the blocks get evaluated to YAIL, Scheme and it gets passed to KAWA, which is
actually running in the companion app. So the YAIL get’s sent to the
companion app. The companion app interprets that and then complies it into
Java code that the Android STK operating system and then run. So that’s sort
of how it streams.
>> [inaudible].
>> Andrew McKinney: Good question. So it sends the YAIL; it also sends the
assets over and stores them in a directory that the companion app knows about
and can access those. So everything from your lap top from this designer,
sorry the Blocks Editor, is being sent to your phone.
>> Shaileen Pokress: But it’s direct, it’s direct from lap top to phone over
IP.
>> [inaudible].
>> Andrew McKinney: No, well I mean this is connected via WIFI, but you don’t
need --. This is connected to your computer. So you don’t need an internet
connection, an outside internet connection.
>> And yet, I mean this is [inaudible].
phone?
How does it expose the assets to the
>> Andrew McKinney: Good questions. This is the magic behind this, to
establish this communication between the Blocks Editor and your phone.
>> Shaileen Pokress: I am going to pull up that slide, keep going.
>> Andrew McKinney: Sure. We have a server up in the cloud called the
randevu server, randevu.appinventor.mit.edu. And what that does, so when you
bring up the QR code the Blocks Editor is always pinging this rendezvous
server, polling this rendezvous server for the QR code that it gave you. The
phone is also connecting to that saying, “I have this QR code, do they
match”? And again it’s polling, polling; it matches, it then gives each
other the IP addresses of the laptop, your client and the phone. After that
you are connected.
>> You use the same for the emulator?
>> Andrew McKinney: And you use the same thing for the emulator, except it’s
a little, you can do that a little. It’s by passing the randevu server, but
it’s essentially doing that handshake. It’s doing, through ADB; it’s doing
port forwarding to that socket.
>> Do you open that socket on the phone and then the browser connects to the
phone or the other way around?
>> Andrew McKinney: I am sorry, say that again.
>> Do you open that socket on the phone and then the browser connects to the
phone or the other way around? I guess you can’t really open a socket in the
browser.
>> Andrew McKinney: You open the socket on the phone.
>> Shaileen Pokress: I think we should talk about using it.
to technical.
We can get back
>> Andrew McKinney: Sure, so if there are lots of questions we can ask those
at the end perhaps.
So who’s using it? Again, as Shai said Hal came back from Google bringing
the project to MIT. At that time we had about 75,000 users. A year later we
have about, well a year and a half now, we have about 900,000. I checked
last night. We have about 1.8 million applications made by App Inventor. So
out of 800,000 or 900,000 users we have almost 2 million applications made
with App Inventor. We have about 10,000, it doesn’t show it on this slide,
we have about 10,000 applications made by App Inventor in the Play Store.
There have been 32 million downloads.
>> Question about [inaudible]. So you track the users on your server and you
know whenever a user creates an application on the server? That’s where this
1.8 million comes from? So it’s some application that the user created for
fun? It doesn’t mean they shared it with anyone, but that basically they
clicked a button to create a new one?
>> Andrew McKinney: So when you create an application --. So in App Inventor
you can test it locally, get it just right and you can then say package my
app in which case it then goes to a build server. It’s also sitting in the
cloud. It’s a separate server that builds your application into an Android
APK. Okay. That APK is ready for the Play Store. You can actually put that
into the Play Store.
>> [inaudible].
>> Andrew McKinney: At that point you don’t need the App Inventor companion
app --.
>> [inaudible].
>> Andrew McKinney: I am sorry, those are the number of downloads that people
have --. Of the App Inventor apps people have downloaded 32 million of them.
>> Shaileen Pokress: Of the ones that were uploaded to Google Play, which we
have a tag on them so we know of the number of apps in the Google Play store
which ones are by App Inventor. 32 million downloads of those apps, which we
think, you just said the number, and I think there are 10 million?
>> Andrew McKinney: There are 10,000 apps built by App Inventor in the Play
Store. Some free, some paid; we have some of that data as well. There is
actually one, there are a couple of applications made by one company that’s a
paid app that has, oh I don’t know, 100,000 downloads.
>> Can you kind of go over how it works?
>> Andrew McKinney: How what works?
>> The converting everything.
>> Andrew McKinney: The converting?
>> From the blocks to the Android.
I would like to see behind the scenes.
>> Andrew McKinney: Sure, so again what happens --.
>> I mean I think I saw a picture of a slide that looked pretty --.
>> Shaileen Pokress: You have to go for it and it’s hidden so [inaudible].
>> Andrew McKinney: This one you mean?
>> Shaileen Pokress: Is that what you meant or --?
>> Well this was interesting too.
>> Shaileen Pokress: But this doesn’t show how the blocks get connected.
>> So A is that stack on the left and B would be the second set.
what that was --?
Is that
>> Andrew McKinney: So this is really how App Inventor currently works: you
have got your device; there is a companion app --.
>> So if you are using an old device that’s what you are going to use, the AI
phone?
>> Andrew McKinney: For live development.
>> Right.
>> Andrew McKinney: It sits on your phone. In the current version, as I
said, the Blocks Editor is a Java based application that communicates to the
App Inventor application. It’s launched via Java Web Start. The App
Inventor client runs on App Engine. It’s developed with GWT, which is client
server architecture. It’s run up in the cloud. We have got a separate
server for building your application into a native Android application, APK.
>> So these apps actually look at their Android code?
>> Andrew McKinney: As?
>> Android like Java?
>> Andrew McKinney: Like Java?
>> Correct.
>> Andrew McKinney: Right now no, but that is on the horizon. We are
planning on adding features to App Inventor 2. We have something now called
the Java Bridge that is a separate application. You can take your project
and you can load it into the Java Bridge. I was going to talk about that at
the end.
>> Yes that was the slide.
>> Shaileen Pokress: Oh, you did, you saw that as it scrolled bye.
>> Andrew McKinney: We jumped a little.
>> Shaileen Pokress: This exists, you can actually play around with it, but
it’s a third party --. Well we know the third party, but it’s not one of
your tools; it’s like a third thing you have to start up and run.
>> Andrew McKinney: So the idea is that somebody can easily create an app in
App Inventor. A prototype or something that may be more sophisticated that
they want to add to. So they can take your App Inventor project and using
the Java Bridge convert it into a Java code, which you can then take and
augment. Okay. That’s a separate tool; we would like to be able to do that
all inside App Inventor. I know that a lot of teachers and users, you know
as you get more familiar with the program you want to start transitioning
over to the code.
>> Yeah, I mean if you are trying to target the younger generations. I think
they want to see the underlying like this is cool and now I want to see how
this is actually [inaudible].
>> Andrew McKinney: Right, sure. So we are sort of targeting a diverse wide
variety of people. You might use this in CS Principles where you just want
to teach those loops and etc. Where you can then use the blocks and show
them pretty easily without all of the syntax of all of the programming
language. As you get further and further down that road you become more and
more familiar with these concepts and yes you want to then start sort of
bridging that gap to the coding side. And we have plans to add that to App
Inventor so you could perhaps see your blocks in Python or Java and your
blocks. And you could sort of convert back and forth. So you can make your
blocks in Java, you can write Java and you can see the blocks.
>> Shaileen Pokress: There is another question.
>> Andrew McKinney: Yeah, sorry?
>> I was going to ask one question, but I will ask a different one. So, if
you are going to convert the blocks to Python or Java that’s one thing.
Converting them back again are you sure you can do that?
>> Andrew McKinney: We have some prototypes of just that and it’s difficult.
You can’t necessarily match Python or Java exactly, right. So I would say
its valid Python, but it looks, it’s like Python.
>> But that’s for going one direction. I am talking about coming back.
the coming back that’s more the problem.
It’s
>> Andrew McKinney: From the blocks to the --?
>> No, no, from Python back to blocks.
>> Andrew McKinney: Well again, you need to sort of, I mean you can’t copy,
you can’t replicate everything that’s in Python and match it to the blocks.
>> Shaileen Pokress: We will have it as a limited --.
>> Andrew McKinney: It’s a limited sort of subset of Python language.
>> Shaileen Pokress: The prototype that we have right now is that you can
program your own math block. So it’s limited to math expressions written in
Python and then you hit enter, you save and you get a block that does that.
>> So it’s very much a subset then.
>> Andrew McKinney: It’s a subset; it’s a subset of Python.
Python so somebody who knows Python it comes natural.
It’s valid
>> So my other question was based on the slide that we are looking at here.
Can you give the sense of the audience, the types of users that you have got
in terms of K-12, University and then just developers out there?
>> Andrew McKinney: So it’s, that’s a really good question and something that
--. I don’t know if you have any data for that? We certainly are gathering
that kind of data. I mean it covers a whole bunch of different people from
middle school, high school; it’s being used in the school curriculums and so
on. But there are also a lot of hobbyists out there who are just developing
applications.
>> But do you have a mechanism for getting the figures or not.
>> Shaileen Pokress: Right now we don’t, but I have a couple of slides here.
We are actually running out of time so I don’t know if I will go into
details, but we focus on education. And as we are building the tool, and
improving the tool and writing support materials our main goal is to support
teachers who are teaching students. And if hobbyists and other people latch
on and do things to App Inventor that’s fine, that’s great. We actually
don’t have good numbers on like 50 percent is this type of user and 50
percent is this type of user or anything like that.
What it seems like is that the PR that we are putting out there, the
marketing type like, “Hey this is a great tool come and use”, is directed at
educators in fields of education. Both formal and informal which are what
these two slides are about. So I would like to think that the majority of
our users are related to education in some way.
>> So one of the points that one could collect is whether or not there was a
formal course that [inaudible].
>> Shaileen Pokress: And there have been.
>> Of course there have been, but is that something you can collect or not?
>> Shaileen Pokress: Right now the way we are collecting that is from human
to human contact. Someone will say, “Did you know that so and so over in
Arizona or whatever is doing this, trained 40 teachers this year”. So my
role as the lead for education is to keep track on what’s going on. And most
of those have been in contact with us in some way. So right now it’s very
personal and we know most of those pockets of where it’s happening, but as it
grows we will lose track of that. It would be great to put some analytics
right into the software to collect information about people when they first
sign on, but right now we don’t have that.
>> Andrew McKinney: And we realize that, I mean we need that kind of data.
So, one of our future goals is to really start outfitting App Inventor with
some tools that will allow us to gather this data. And we are working on
that right now. There is actually a project in the works right now that we
have gotten some of this information from the Play Store data. That’s coming
from this group.
>> Shaileen Pokress: And we certainly have data from these, you know, these
would be the personal contacts that we know of these types of things that you
see here I could get numbers on these and ask the guy in Hartford, “How many
CS Principals high school teachers did you train and how many students do you
have”? We could do it that way, but I think building in analytics is
actually the way to go. So we are actually 2 minutes over. I could end by
giving you a few quick examples or if we have a hard stop of 11:30 we could -.
>> Arjmand Samuel: We don’t have a hard stop, but we have the room until
noon.
>> Shaileen Pokress: I have just four examples and these are sort of fun to
see what people are doing with App Inventor. So I will just let you just
read this slide and I won’t talk about all of these things, although if you
have questions about what any of this means bring them up at the end.
The Verizon, sorry not that, on the next slide. The thing I mentioned
earlier was the Technovation Challenge that’s a really exciting program that
actually started in San Francisco and the Mountain View area and has now
grown to 5 or 6 cities in the US and actually hit a couple of like, Brazil
and somewhere else over seas just this past spring and is engaging girls in
technology and entrepreneurship. It’s completely with App Inventor.
So this is a nice example that depending on the length of the talk this can
be the one demo that you get, because if it’s a short talk you don’t get a
demo. Today you guys got a demo. And what I love about this is you can
actually figure out what this app does just by reading the blocks. So it’s
kind of like reading a paragraph. And a college student made this so he
turns the app on and automatically his phone will respond to text messages
saying I am driving right now I will text you later.
This is from Technovation Challenge. This was not the top winner, but one of
the top 10. These girls are from I want to say East Palo Alto, an inner-city
area in California. They live in a city with graffiti and trash problems and
the challenge for Technovation this year was to the groups of girls, and they
are mostly in groups of 5 with one mentor, so sometimes it will be a high
school teacher who gathers 5 or 10 girls and it’s a 10 week after school
curriculum that they do and they are connected to other groups all around the
country.
The challenge this year was do something that will help your community. So
these girls made a tag-it app where using GPS you can type in what it is you
are seeing like there is graffiti, we should clean this up, or there is a
trash problem at this intersection. You can tag it, it goes into the
database and then the app allows a way to launch a clean up even. Then
people can sign up through the app and that was one of the top 10 winners.
This example is one of my “App Inventor in education” using your phone as a
Swiss Army Knife toolkit type of thing. These are college students, actually
at Trinity College, they are students of I think --. Well no, they are from
Trinity College the professor that’s doing the CS Principles course with App
Inventor is Ralph Morelli. This must be a colleague of his because they did
this in a science class. They set up this app to measure the height of
trees. What I really like about this example is the portability.
It’s a useful tool because you can take it on a device with you out to
actually measure the trees and it’s a great example of a subject area
exploration where these students, even though they are in college, I am sure
they had to re-learn some trigonometry to make this work, learning about
angles and that kind of thing. I sometimes give this example to math
teachers. You can get your students really engaged in the math itself and
they will have fun because they are building an app and they can put whatever
picture they want.
Healthcare is another field where we see a lot of activity. It seems that
there are a lot of specific needs in the field of healthcare, especially in
remote areas, third world countries, places where this not as much access to
healthcare, because you can package up information or in this case a testing
device. They made a urine test strip analyzer using the phones camera and it
can be shipped off as an APK to someone’s Android device. They can be out in
the field doing diagnostics or sending data back and forth. And I think
healthcare is one of those areas because that’s often one of the first things
that people who are trying to improve the conditions in a remote area are
doing, worrying about people’s health. And also people who know about these
issues are often not tech savvy enough to write their own software. So a
tool like App Inventor fills that niche perfectly. It meets those two things
perfectly.
This is my last example and this is just really fun, because it was down in
Alabama. Apparently wild hogs are feral and are an invasive species. Feral
hogs are a problem and they have been re-producing too quickly without
natural predators and they trample plants and things. So scientists were
trying to get a handle on how many there are, where they live and what their
habits are. Some high school students in Lawrence County Alabama wrote this
app that’s very simple and that’s why I love the example because it’s just a
couple of fields on the phone that says like where are you? How many hogs
are you seeing? It uses a GPS tag and they gave this app out to middle
school students. A lot of different students went out to the sate forest and
tagged hogs. It’s a simple app, the database connectivity and the fact that
you can distribute it to hundreds of students with a click that made is so
useful.
>> Did it tag the time as well?
>> Shaileen Pokress: Probably, I think so. And then this Wild Hog Blog
became their kind of public facing story about what they were doing and you
could view the data and stuff. So I guess the time was in there.
>> So one question: [inaudible] was some kind of database where [inaudible]
is collected [inaudible]?
>> Shaileen Pokress: We have a couple of solutions.
>> [inaudible].
>> Andrew McKinney: So we have a couple of components that deal with storage,
the Fusion Tables, Google Fusion Tables as well as TinyDB. So we have those
components that you can use to store data and --.
>> TinyDB is local right?
>> Shaileen Pokress: TinyDB is local for the [inaudible].
>> Andrew McKinney: TinyDB is local yes.
>> Shaileen Pokress: TinyWebDB is out on the web. And then because TinyWebDB
is pretty simple it’s like a tag in a value, tag in a value. We integrate it
with Fusion Tables. In the last six months we support Fusion Table
integration. There are still some issues with Fusion Tables where you,
unlike sharing a Google doc you can’t just make it public to the world. You
have to specify everyone who can access your fusion table.
apps where you know all of our users.
So it’s good for
>> Andrew McKinney: So there is security and some authentication.
>> Shaileen Pokress: Yeah, security issues.
>> Do you have your users register a Google app [inaudible]?
>> Andrew McKinney: Register a Google app?
>> Do they use their own app ID?
>> Andrew McKinney: They use their own app ID.
what they do with their apps afterwards, no.
We have nothing to do with
>> [inaudible].
>> Shaileen Pokress: Yeah, the Fusion Tables tutorial is actually pretty
detailed.
>> Andrew McKinney: You need a Google ID.
>> Shaileen Pokress: Yeah, yeah, let me, and there is a gallery. I will let
you just quickly take that in. There is an App Inventor community gallery.
Let me just show you that since we are pretty much out of time.
The question about Fusion Tables is a good one because it gets at how do we
teach people how to use this? How do we support them in using it? And
Fusion Tables gave me a lot of headaches. We were searching very hard to
find a database solution. We had TinyDB and TinyWebDB, which work, but they
are pretty simple. It’s tag and value, and tag and value and that’s all you
can do with it. So it’s good for saving persistent data in the instance that
you can close your app and then your data is still there when you open it
back up. But Fusion Tables was a way to allow people to have stuff out there
in the cloud that multiple instances of the app could be accessing and it
stays up in the cloud.
So this was the app that, and I say when it gave me headaches it’s because
it’s my job to make these materials, make them understandable and have
appropriate examples for things. So we came up with the idea of what if you
wanted to have a pizza party and everybody who was coming to the party had
this app and could say what their preference was? And then the person going
buy the pizza would be able to access the data. And in fact if you scroll
through this you see we tell them how to get an ID and register their table
URL and their table ID. So I think we have put this in a way that at least a
high school student could do on their own.
>> Andrew McKinney: We also have, sorry. We also have a web component that
allows you to get restful. So you can create your own database and send data
to it via web request.
>> So this service has [indiscernible] in terms of use.
problems with age restrictions [indiscernible]?
Are there any
>> Shaileen Pokress: We pretty much leave that up to individual schools and
teachers to figure out. Just like with Google I believe that the official
word is the minimum age is 13 for a Gmail account. It’s different when the
school has its own apps for education domain, which is how I think most of
the schools using App Inventor get around it.
>> Andrew McKinney: Right.
>> Shaileen Pokress: We feel like if this is an individual in their house
it’s up to their parents to be keeping track of what they are doing and if
it’s an individual in a school then the school needs to decide.
>> Andrew McKinney: Right, and you know, sharing is sort of fits into this
conversation. I mean it’s all about sharing.
>> So is there a place --?
>> Andrew McKinney: Things that we are working on and thinking about in terms
of adding to App Inventor and bringing App Inventor further is the notion of
support to classrooms. And wouldn’t it be nice if there was one account that
a teacher could use, but then it’s a group that all their students could hook
into and authenticate through that. So we have got a lot of ideas like that.
And then that group could then share projects or snip-it of code between each
other. So this whole sort of group and sharing of code, data, etc, is --.
[female voice]
[laughter]
Shake it again.
>> Shaileen Pokress: I barely even touched it.
>> Andrew McKinney: Coming soon.
>> Shaileen Pokress: I actually pulled this back up because I think some of
what Andrew is talking about can be accomplished in the gallery. Scratch
just improved their gallery quite a bit. And I guess this feature was there
for awhile and they call it studios I think. You can have a subset of
Scratch users in a studio together so they can just see each other’s work.
Our gallery will evolve to be like the Scratch gallery eventually. This is
still pretty new. The App Inventor gallery is maybe six months old, but only
in the last couple of months have we even really linked to it from the App
Inventor tool itself to say go check out the gallery, because it was still in
beta testing.
>> So can you just download them here?
>> Shaileen Pokress: Yeah, and its all zip files because we can’t put APKs on
here because of security issues. This is a disadvantage against Scratch.
Scratch you can just say, “Oh yeah, I want to re-mix this one”. And then you
are in Scratch, you have got that person’s program and you can change it.
You would have to upload and download zip files for now.
>> So I cannot get the blocks [inaudible]?
>> Shaileen Pokress: No, it’s the other way around. You can only look at the
design and the blocks and then if you want you compile yourself.
>> Andrew McKinney: Right, now there is something that we are again working
on for the gallery and that is being able to take one of these projects and
run it through an emulator. So you can sort of play with it.
>> Shaileen Pokress: Sort of like Live Preview.
>> Andrew McKinney: Live Preview, exactly.
>> Shaileen Pokress: I think Amazon has something like this.
>> Andrew McKinney: So one can get an idea of how it works and what it’s
about without having us to store and deal with the APK. So right now we
don’t allow APKs into this. They can add it to the play store. They can add
it here. People can download the zip file, or the projects files, and
compile it. They can create their own APK, but we will be evolving the
gallery.
>> Arjmand Samuel: Any more questions?
>> So [inaudible], I mean [inaudible]? What is the feedback? Is there a
common theme of what they would like to have or are they happy?
>> Shaileen Pokress: We get a lot of positive feedback.
>> Andrew McKinney: We do, and we get a lot of suggestions as you would
expect.
>> Shaileen Pokress: I would say the suggestions are split between wising the
tool could do “this” and right now we are getting the kind of complaint type
feedback that we know is going to get fixed with the new version of the
blocks. The current version, if you go onto appinventor.mit.edu right now
you are going to see a Java program download and you have to run it locally.
That can cause security, permission problems and things. So we have really
heard those loud and clear and that’s part of why App Inventor 2 is coming.
As far as the support that we offer, you know the gallery and some of the
tutorials and things you just saw, we mostly hear this is great, thank you
for doing this because I think people appreciate that it’s all done. It’s
all available for free. I feel like we have a long way to go as the person
thinking about the education side of things and how we support teachers. We
are hard at work on a more comprehensive getting started guide. We are
helping teachers with the technical issues around what it means to do live
debugging and should students be on the emulator and what if we bought five
different phones? How do we make sure they all are connected? We need to do
more tech support stuff.
>> Andrew McKinney: There is a lot of tech support kind of things and in App
Inventor 2 we are hoping to really eliminate a lot of that. Again, the whole
Java issue web start is a big one. Also moving to the fully integrated sort
of Java Script web based application is really one of our first steps towards
making it work on tablets, which is something that we really want to do and
is really a big part of our next direction, one of our directions. It does
work on tablets somewhat. We also want to have App Inventor work on smaller
devices. But, to run App Inventor on a tablet that can create an application
for that tablet perhaps or make it cross platform. We would really like to
make applications cross platform as well.
>> Shaileen Pokress: Right, and that’s part of why we got
guys in the first place was when we became aware of touch
gosh it’s cross platform, how did they do that and so you
to give your speech to us and we really were inspired and
we just have to work towards it.
connected to you
developing. Oh my
have already gotten
okay it’s possible
>> [inaudible].
>> Shaileen Pokress: Touch Develop is a product that these guys, well product
tool. It’s similar to App Inventor. I think the big difference is that we
have focused specifically on Android so we can access all the Android
features. If your device has a camera our software can turn it on and off
for you whereas when you go cross platform it’s harder to get at all those
features on every single device. So there is the trade off and that’s part
of why we are here, because these two groups have a lot of synergy. So, the
same kinds of reasons for wanting to give people a way to develop on a device
to program that device. That’s a really cool idea.
>> Andrew McKinney: Right.
>> Arjmand Samuel: Well thank you very much.
>> Andrew McKinney: You are welcome.
>> Shaileen Pokress: Thank you.
[clapping]
Download