Like the blog? Get the director's commentary on my podcast.

Contact

Email, iMessage or FaceTime:

fraser@speirs.org

Search
My Stuff
Navigation
Friday
Aug172012

Teaching Programming on iOS

I have been working for some time on a plan to move my programming classes off Macs and onto iPads. It's finally happening this year. A few people have asked me to write this up, so here goes.

As everyone knows, there are no fully-fledged software development environments for iOS. The closest is a game programming environment called Codea which, while good, doesn't easily map to the kinds of things we currently teach in exam-level Computing courses.

A few years ago, I used to teach using RealBasic on OS X. RealBasic is a fairly standard clone of VisualBasic, the language and IDE that (I guess) most Computing courses are taught with. I hated it. I hated it because the evident link between the code you wrote and the way it executes is quite obscure. I spent as much time explaining where you should type in the code as I did explaining the actual code itself.

Two years ago, I decided to change things. I switched to teaching in Ruby and I switched to using a text editor (TextWrangler) and Terminal. The simplicity is glorious! A simple link between code and result, and no magic glue in-between. I fully appreciate that libraries, frameworks and runtime support are all essential to scale software development up to real-world dimensions but that's not the game I'm playing.

Enter iPad

One of the astonishing results of our iPad 1:1 deployment has been the dramatic decline in the use of the Mac. Within less than two years, I am the only teacher still using the Mac on a regular basis. This was never part of the plan and I didn't expect that it would happen so soon. I thought it might happen eventually - perhaps in 3-4 years, certainly after one more refresh of our Mac setup.

Today, it quite seriously looks like we won't buy more than a handful of Macs again. We’re not cutting our teaching to fit what the iPad can do either - we have never done more with ICT, with better outcomes and deeper learning than we are doing now with iPads in everyone's hands.

Taking Programming Mobile (and Virtual)

So, how do we take Ruby programming mobile? Turns out, it's not so hard (assuming you understand AWS cloud computing infrastructure, IP addressing, SSH configuration and Linux sysadmin, naturally).

The basic idea is that we are going to set up an Amazon EC2 instance, SSH into it and edit and execute our code over there. There are several really nice SSH clients for iOS. My personal favourite is Prompt by Panic, but the idea is the same regardless of the client.

AWS Basics

In case you're not all that familiar with virtualised cloud computing, here's a basic run-down.

Amazon EC2 allows you to spin up a virtual Linux or Windows sever running on Amazon's computing infrastructure. You can start and stop an instance as you need it, and you only pay for the time the instance is running. Instances can run in one of several geographic areas and prices vary slightly from region to region. For my deployment, I used the EU (Ireland) region because we are going to be working interactively and want the lowest latency possible.

The per-hour prices vary by the capability of the virtual machine but, for our purposes, we don't need massive power. The per-hour costs for the smaller instances are incredibly low. An on-demand "Micro" instance costs $0.02/hour. Two cents per hour. So you fire up one of these EC2 instances in August and shut it down the next June, you're going to pay about £80. If you only run it during the school day, it's about £20 per year.

Given that we're deploying iPad anyway for all the other parts of the school, you can see how provisioning a lab just for a programming class isn't an easy conversation to have. By my calculations, my subject now costs the school £10.80 per pupil per year to run. If I had to keep buying Macs just for Computing, the per-head cost would be over £160/year.

Benefits

I'm a huge fan of strategic outsourcing. We are rapidly moving towards a situation at Cedars where we will have essentially no infrastructure in the school except for WiFi (and possibly not even that). This is deliberate: I am the only technician, systems administrator and network manager in the school. I simply don't have time to deal with deploying and looking after servers on the premises. Neither do I want to. I would much rather spend my expensive and valuable time working on things educational rather than things technical.

In order to run my class with computing resources on-site, I would have to manage a suite of laptops or desktop computers, with some kind of file server and directory infrastructure. Alternatively, I can pay Amazon a penny an hour and I don't have to care about hardware at all.

The benefits go beyond the infrastructure and finance, though. It's never been possible for me to set actual programming homework before because few families have development tools installed on their home computers. Now, though, because I know the device that's gone home and I know that the server environment is available from anywhere, I can start to set programming exercises to do at home.

Workflow

The basic programming workflow for the student looks like this: we use Prompt to connect to the server over SSH and execute the Ruby code over there. Up to now, I've been having the students edit their code using the nano text editor over a second SSH connection as it's relatively approachable for new users of command-line editors.

After some more investigation and help from Twitter pals, I realised that both Textastic (which we've used before for teaching HTML editing) and Diet Coda can edit a file and save it back to an SFTP server relatively transparently. There are advantages and disadvantages to both: Textastic is a far better Ruby editor, but Diet Coda has both editor and terminal integrated in the one app. I'm probably going to go with a combination of Textastic and Prompt for now, since we've already deployed both of those apps.

I think that programming is going to be that one special case where a hardware keyboard on an iPad is really important for two reasons: firstly, several common programming symbols are only accessible through the 'mathematical' keyboard on iOS. To type a "<" symbol, for example, you have to hit the '.?123' key, then the '#+=' key and then type the symbol. Prompt allows four customisable soft keys above the keyboard but there are often more required in programming. Textastic does have a special 'symbols bar' that allows quick access to many symbols, so it will be interesting to see if clever UI design can mitigate this problem.

The second reason for using an external keyboard is to recover even more screen space on the device. Programming using the software keyboard is possible in a pinch - great for doing something quick on the go - but you want as much screen space as possible for code.

The Evolution of iOS

I'll let you know how this goes, but I think this is a fascinating step in the evolution of the use of iOS in education. We're starting to solve some of the harder parts of the curriculum. Computer programming was one thing that people said the iPad would "never" be suitable for. Certainly, a lab of 27" iMacs would be preferable but the simple truth is that Computing Studies is not a sufficiently important part of the curriculum that the requirements of that subject can dominate the whole-school approach to IT. It's iOS's world; we just live in it.

In a sense, yes, I'm cheating in that I'm not actually programming on the iPad itself but so what? The entire point of mobile devices is that a good proportion of their power comes from being always connected to the Internet. You wouldn't say that you can't search the web with an iPad just because you can't store and search Google's index database on the device.

The idea of not owning infrastructure is really interesting and important to me. I want to stay as agile as possible with our technology and buying only what I need when I need it is an important part of this.

Thursday
Aug162012

Out of School: A Podcast

I have something new for you today: I'm launching a podcast along with my friend Bradley Chambers.

The show is called "Out of School", and you can subscribe to it at outofschool.net or through iTunes.

Bradley and I are going to be talking about everything that interests and annoys us about educational technology. We'll have a focus on iOS, since that's the thing we know best, but we'll be ranging into all kinds of aspects of the jobs that we do - both as IT people and in teaching too.

We're new to this and we're going to get better at it as we go. We're planning an initial season of about 20 shows and we would really appreciate your feedback through the form on the site, which will reach both Bradley and I.

Friday
Aug102012

The Big Redeployment

We are currently two weeks away from opening. This summer, we decided to redeploy our devices from scratch. Same 115 iPad 1s but it was time to reset everything.

I made a big mistake last summer that started to cause some trouble as the year wore on: I didn't reset the devices to zero. The result was that kids were running out of storage space on their devices by February. One child, for example, had created 5GB of paintings in Brushes alone. Our kids create a LOT of things on their iPads (and they don't even have a camera yet!).

Before the summer, I had hoped to be able to move towards a deployment where the students have their own Apple IDs and we would be able to deploy apps to them directly. Unfortunately, we still don't have access to the Volume Purchase Program in the UK yet so that plan has had to be shelved for another year. There's no way you can re-work your deployment approach in the middle of a school year, so we'll move to individual IDs when we refresh our devices next summer. That is, assuming VPP access has arrived by then!

Before the end of term, we had the students email any work the teachers wanted to keep to their Basecamp portfolio. That the new Basecamp provides the ability to upload files by email is a huge win for this.

My approach to redeployment was basically this:

Firstly, I reset one device and completed the iOS setup wizard. I skipped the part where you create or supply an AppleID, since we're not really going to be using iCloud this year. I then captured a backup of this device using Apple Configurator - this "Master" backup being nothing more than an activated iOS 5.1.1 device. There's no point in adding configuration profiles at this time as they won't be restored to other devices anyway.

Next, I connected each device to Apple Configurator to update them all to iOS 5.1.1. Apple Configurator is the only tool that can parallelise iOS installations on devices, so this was a big time saver. After the erase-install, I restored the Master backup to every device and set the name to "iPad". I also installed our base configuration profile, which contained settings for:

  • App Store age restrictions
  • WiFi password
  • A web clip for Wikipedia
  • Calendar subscription to our school calendar
  • CardDAV account for our shared address book

One of the problems I ran into was that I wanted to also enrol all the devices in our MDM server at the same time. Enrolling in an MDM server requires WiFi access to complete the hand-shake between client and server. Unfortunately, I couldn't figure out how to convey to Apple Configurator that there was an ordering dependency between the 'core' profile and the MDM enrolment profile: the core profile needs to be on first to set up the WiFi so the MDM profile could install.

The workaround was to put the MDM profile in iPhone Configuration Utility and install it there manually after Configurator was done. Ugly, but it works. At this point I have 105 iPads all activated and enrolled in MDM with no apps on them. Time to set that up.

Each classroom in the school has an iMac which acts as the 'sync' station for the iPads in that class. The first thing I did was to log into that iMac and trash the existing iTunes library. We still have access to the apps we bought, but I want each teacher to pick the apps that they would like for their class. This will save space on the devices and allow a more customised approach per class, even without individual Apple IDs.

I wanted to make sure install was working though so, in each classroom, I downloaded iBooks and iTunes U to the computer, then synced each iPad. The iPads were already activated but I still had to give them a name, configure the syncing, and provide a password to encrypt the backup files. I also re-labelled the devices at this time because I'm not necessarily giving each pupil back the exact device they handed in. I also took this time to create a new device allocation spreadsheet so that we know which pupil has which serial number.

Start-to-finish, this took me a day and a half to do for 105 devices. What remains is for each teacher to come in before school starts, pick the apps they want their kids to have and sync their class set once.

Next week is all about my own teaching preparation, then teachers come back the next week and we're doing some intense preparation work on iTunes U.

Thursday
Aug022012

Thoughts on the Google Nexus 7

I recently bought with my own money a Google Nexus 7 and have so far spent a week with it. I'm trying my very hardest to be objective and ignore all my previous experiences with Android (which go back to the original Nexus phone).

Before I received the Nexus 7, I had expected to like the hardware and hate the software. I thought it would be like test-driving a Citroën car: great design ideas - can't wait until the Germans or Japanese put them in their cars. The reality was a little more subtle.

I'm going to try and evaluate the device on its own merits and, yes, I'm going to occasionally compare it to the iPad, the iPhone and the iOS ecosystem. The Android OS has been around since 2008. Android tablets since 2010. I don't think it's fair that the Android world should get to 'reset the clock' every time a new flagship device launches. It's time for the Android platform to stand up and be counted.

The Hardware

My general opinion of the whole market is that tablet hardware is not interesting, except insofar as it enables the user to have wonderful experiences of software (I wrote the same thing about the iPad 2 launch). This, I believe, is why Apple has had a new flagship app or two at every iPad launch so far. iWork, GarageBand, iMovie, iPhoto. The whole point of tablet computing is that the device becomes the thing you're doing with it.

In many ways, the most interesting thing about the Nexus 7 is the price. Even the size isn't novel: we have had 7" tablets for almost as long as the iPad - the 7" Samsung Galaxy Tab was launched in September 2010. It's just that the Kindle Fire and the Nexus 7 are now in that magical $200 range. I paid £169, shipped, for my Nexus 7. It's half the price of an iPad and it's half the screen space and half the storage. Seems about right. The question is: is it half of the experience?

The device itself is fast enough for most uses. The scrolling seems OK now that they've thrown 12(!) cores at it. It's certainly not as good as current iOS devices but it's fine. Navigating around the OS, launching apps and so on is all fine.

The Nexus 7 definitely lacks a few things. It's a shame that there's no cellular networking option on the Nexus 7. Not everyone wants that, I know, but I find it essential on my iPad. From an education point of view, one of the biggest shortcomings of the hardware device is that there's no way to connect it to a TV or projector display. There's no rear camera, just a front-facing camera. I'm not a big iPad photographer but I know that having the camera integrated is very valuable in the classroom for all kinds of quick-snap applications. In many ways, cameras are today as much of a data entry device as they are about photography.

So let's talk about the size. The Nexus 7 is basically half an iPad screen. The bezels on the Nexus 7 are not even all the way around as they are on the iPad. When held in portrait orientation, the two long edge bezels are substantially narrower than the top and bottom edges. I have found the device very difficult to handle as a result because I can't grip it with my thumb without activating the screen. The only way to make this grip comfortable is to hold the device parallel to the floor, which is obviously not good for reading, or make an easel with my little finger, which gets tiring quickly.

The day I received the Nexus 7, I sat on the sofa for an hour turning the device over in my hands and tried to decide what this device is actually for. Under what circumstances and for which tasks is a widescreen 7" tablet the absolutely optimal choice? It wasn't obvious to me right away and, to be quite honest, I'm still not sure.

I feel like the 7" size is neither fish nor fowl. It is, theoretically, more portable than a 10" tablet. Still, you could never say that the Nexus 7 disappears into a pocket the way a smartphone does. In a jacket pocket, you're still pretty conscious of its weight and shape. I wear bigger trousers than most of you and its not trouser-pocketable unless you wear cargo pants. I just don't feel that a 7" tablet is ever going to be a no-brainer carry the way my iPhone is.

To me, the biggest problem arising from the Nexus 7's form factor is data entry. In portrait orientation, the device looks like nothing so much as an iPhone app running at 2x on an iPad: a big, phone-like keyboard that you can two-thumb type on. In landscape, the keyboard is simply comical: you get four lines of text to type into and the keyboard (for me) will accommodate no more than two fingers on each hand. It's hard to overstate how much of a train wreck this is. It's just horrible.

The second thing I disliked about the hardware was the display. I'm aware that I may be spoilt by the retina display on my iPad but if one of the great strengths of the Nexus 7 is supposed to be as a reading device, we should critically evaluate the thing that you're going to stare at. I don't know if it's the Android font rendering or the display hardware itself but I found the Nexus 7 less than pleasant to read on. In a side-by-side comparison of the same apps (Kindle, Pocket and Flipboard) I honestly preferred reading on my iPhone 4S.

So far, the Nexus 7 has made me really appreciate how capable my iPhone is. I can get an equally fast device, with cellular networking, a rear camera and do more with it in an even more portable package. The 'do more with it' discussion leads us right into talking about software.

Software

Software is absolutely the heart of any computer system. Without software, a computer is a fancy space heater and a mobile device makes a great pocket handwarmer. As I said, I expected to like the Nexus 7 hardware and hate Android. In fact, I found the Android OS to be surprisingly OK. It's not iOS - the animations aren't as good, the font rendering isn't as good and the placement of the home, back and task switcher buttons immediately below the keyboard is highly questionable. Still, it's fast enough and it seems to work OK.

So the Nexus 7 is a fast-enough tablet at a low price with a decent operating system. The next question is: "so what?". What can we actually do with this thing?

First I asked for recommendations on Twitter for apps that uniquely showcased what an Android tablet could be. I got back two unique responses: Swype, a replacement keyboard, and DoubleTwist Alarm Clock. I should have interpreted that as an ominous sign.

When I got my Nexus 7, the first thing I installed was the Kindle app. It's basically identical to the iOS version except the text rendering is substantially worse. It's perfectly functional though.

Next I installed Flipboard, which I love. It turns out that the Android version of Flipboard is basically identical to the iPhone version of Flipboard. Because it's the iPhone version and not the iPad version you end up with large chunks of white space everywhere as the interface is stretched out to 7".

After that I installed Pocket. Guess what? It's basically identical to the iOS version! Then I installed Dropbox. Guess what? Yup.

The only app that I found to be both Android-native in its design and actually better than the iOS equivalent was Evernote. I'm a big Evernote fan and I'm a huge fan of Evernote on Android. If they ported this version back to the iPad, I would be delighted. It's that good. Additionally, Evernote on Android also sold me on the idea of home screen widgets - about which I had been pretty sceptical until now. Very useful indeed.

After a morning's fiddling around I had basically turned my Nexus 7 into a smaller read-only version of my iPad. In some ways, that is quite attractive in itself: a smaller cheaper interface to some of your cloud services and the web. If you think of the Nexus 7 as a Kindle that can run Evernote, Pocket and Chrome for £160, that's not bad.

Yet, to me, it's not very ambitious. I look at my iPad and the kind of apps that fill my home screen are tools of substantial power. Many of these apps are universal and run on the iPhone too.

  • Flipboard (the real tablet version), Pocket, iBooks and Kindle
  • iTunes U and Piazza
  • Keynote, Pages and Numbers
  • OmniPlan, OmniGraffle, OmniGraphSketcher and OmniOutliner.
  • Penultimate, Book Creator, Diet Coda, iTeleport, Bento, PCalc
  • iThoughtsHD, Explain Everything, PDF Expert
  • iPhoto, iMovie, GarageBand, Photos and Camera

Once you get beyond the apps whose business model is "be everywhere" - the Kindles, Evernotes and Pockets of this world - the Android app ecosystem is still severely lacking in high-quality, ambitious, powerful apps.

After living with the Nexus 7 for about 10 days now, I'm not even thinking about it in the same bracket as the iPad. I'm thinking about it in the same bracket as my iPhone. If you look at the Nexus 7 as a 'smaller iPad', you give up some functionality to gain some portability. Yet you give up a lot of functionality to gain a moderate amount of portability. It feels, to me, like a poor tradeoff: you don't get enough portability for the amount of functionality you give up.

If you look at it from the starting point of a smartphone-class device, you give up some portability to ostensibly get more functionality. Yet how much more functionality do you really get with the Nexus 7? You get a bigger screen but you give up cellular networking and a rear camera.

I think the truth is that this isn't about portability at all: it's about price. You give up features from smartphones (cameras, cellular) and full-size tablets (screen space, storage) to get to a $200 price point.

The software plays into this too. From the apps I have tried, it seems to me that 7" - particularly in the widescreen aspect ratio - isn't quite enough extra screen to take a step up in functionality from a phone to a tablet. Evernote probably does the best job of this but it's still crippled by the lack of height in landscape orientation.

The School Angle

My experience with two years of iPad in school is that the iPad can cover 99% of everything we want to do with a computer in school. I don't feel I could say the same about the Nexus 7. I think the 7" size is simply too small to use on a regular basis for creating work. My sense is that small devices like the Nexus 7 and iPod touch make great adjuncts to a computer suite but the iPad can replace the computer suite (I know because we've done it).

Secondly, the software just isn't there. The apps that I've mentioned that I'm enjoying on the Nexus 7 are not the apps we use in school. I don't mean that in the sense that iPhoto-the-exact-app isn't on Android; I mean it in the sense that there is nothing even close to iPhoto on Android.

I've written before about what I call the "GarageBand Test" that I apply to any new device or platform. It's simple: show me something as impressive as GarageBand on iOS. It doesn't have to be a music app, it just has to be an app that makes me say "wow, I had no idea you could do that on a device like this". I could specify dozens of such apps on iOS and, so far, I haven't been able to find one on Android. That's a problem.

Too often schools have bought the cheapest thing without much thought to what that thing is going to be used for and whether it's any good for that. I'm slightly nervous that this is going to happen again. Who am I kidding? I know it's going to happen again and that's a shame.

In Conclusion

I feel like I can't help damning the Nexus 7 with faint praise. It's a nicely built tablet, that's fast enough and has a workable OS. It has a good browser and some good built-in first-party apps. As a general-purpose device it's hobbled by a small keyboard. It lacks a cellular networking option and a rear camera. As a reading device - possibly its strongest suit - it's let down by poor font rendering and a sub-retina display.

People need different things from computing devices and I can't say that my needs and wants are the same as everyone's. If you only need the things that the Nexus 7 can do then I'm happy that you can get something to satisfy your needs. Even for me, the device almost justifies itself as a "Kindle that can run Evernote and Chrome".

I just find the Nexus 7 a weird mix. A device oriented towards portability that doesn't have cellular networking. A device that works well for watching video that has a small amount of internal storage. A device that seems good for reading, yet doesn't render text well. Not as portable as a smartphone yet nowhere near as powerful as an iPad.

Many reviewers have said that the Nexus 7 made them want Apple to build a 7" iPad. I disagree. The Nexus 7 has made me want a slightly bigger iPhone. I can get all of the software functionality I get from the Nexus 7 - and more - on my iPhone. If we are going to trade off functionality for portability, let's go all the way and make the thing really portable.

I say: bring on the 4.5" iPhone 5.

Monday
Jul302012

iTunes U Enrolment and Apple IDs

As I mentioned in my last post, there are some new arrangements for iTunes U courses, specifically the ability to distribute an "enrolment code" and have students sign up to the course in the iTunes U app using their Apple ID.

This seems like the obvious way to do things but in many school deployments, students are not in control of the Apple ID that their device uses. Sometimes that's because the devices are shared (in which case, using iTunes U is going to be difficult anyway) but more often it's because the school is in a country that doesn't have a Volume Purchase Program yet. That most countries still don't is another grumpy discussion for another time.

Anyway, at first glance it seems that you absolutely need individual Apple IDs to enrol students in a course now. I've always been keen on handing over as much IT autonomy to the student as possible, and that's where I think we should all be aiming, but changing your AppleID structures is a once-a-year thing to do and no small matter. Is there a workaround in the meantime?

It turns out that there is: to create a course that students can subscribe to without entering AppleID credentials, you have to:

  • Create the course in Course Manager - this creates a private course with an enrolment roster.

  • Submit the course to the person who controls your institution's iTunes U Public Site Manager

  • Have them 'hide' the course in PSM.

This creates a course which has a direct URL for subscription (it's referred to as the 'Audit URL' in iTunes U) but which does not require Apple ID credentials to subscribe to.

This isn't an ideal solution as it requires coordination between all the course authors at an institution and the person running the Public Site Manager. Still, it works for now and the future is ever more clearly heading towards individual Apple IDs for individual students. That's where I'm recommending all new 1:1s start their thinking but, still, always the two stumbling blocks of no Volume Purchase and COPPA's lower limit of 13-years-old for an iTunes account. I hope we can get these things ironed out soon.

Page 1 ... 2 3 4 5 6 ... 68 Next 5 Entries »