>> 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]