Tuesday, December 27, 2016

How can we program Mobile Phones etc in a learner-friendly way? - Part 1



Big question: How can we program Mobile Phones etc in an learner-friendly way? I want high school students to be able to join in. My own programming work and teaching is website coding so I would like Mobile Phone programming to be like that. My ideal system would have these features:
  1.  Free or low-cost resources for students and teachers.
  2. Exercising widely relevant skills - I would prefer based on HTML5, CSS and JavaScript.
  3. Works across a range of device systems, with "Android" as the priority target.
  4. Works in a straightforward manner following straightforward instructions.
  5. Works smoothly and quickly using the kinds of computers students have access to.
  6. Be able to "interpret" scripting code so I can experiment with an artificial intelligence idea I have of machine learning happening by the machine rewriting and adding to its own programming code.
  7. Learners can program phones by typing code into the phone. Bring back the educational glory days of the "Sinclair ZX81" and the "Commodore Pet".

Over the last week I have been test running systems. Cause for concern! Nothing comes near filling all of the above list and some mainstream industry systems much beloved of my colleagues and expert friends test out in my opinion as delivering bad experiences to enthusiastic new learners and could send them screaming off to dance classes, literature classes, singing competitions, anything but STEM! Not the empowering experiences we want.

We can eliminate 6 and 7 from the above list. With the remote possibility I have run across of actually creating a new mini-system using Android's built in browser to run JavaScript - more about that in a later article.

How I am doing this
I am testing while away from home in a place without Internet. The machine is a 2011 laptop with an early i7 processor and 8 Gig of RAM running Windows 10. This is close to our current student BYOD spec of an i5 laptop with 8 Gig of RAM. I downloaded and installed the systems before leaving home. Since then I am simulating student life in that my internet access is via a mobile phone on prepay. That has highlighted the way many of these systems demand big downloads to plug in additional components whenever we try anything new.

Still experimenting but here are some indications:.

AVOID COMMAND LINES - the free open source systems depend a lot on typing in commands like the days of MS-DOS. I believe this would be a disaster for engaging new learners and it is bad enough for my ancient self. Online instructions and tutorials included many example commands that simply did not work and needed a lot of detective work to sort out. I got one system partly working by giving up on pasting in the example commands and typing everything out directly - and there was a lot of it.
AVOID EMULATORS - These test-run the code in a phone-sized window on the laptop screen.
Best to test run by plugging the actual phone into the computer with a USB cable.
Some simple emulators are OK but most attempts to realistically "emulate" (imitate) a phone fall into the swamp of error messages and hours of internet searches and detective work to move to the next error message. Some use "virtualisation" so they interfere with our "Virtual Machines" and/or our "Virtual Machines" interfere with them. Also a lot of our robotics experimentation does not "emulate" well because "full" computers tend to lack the interesting sensors that phones have.


The Systems

System: Adobe AIR - Flash-based version
The current surprise leader. Not the result I expected or even wanted because Adobe AIR is a controversial system. An earlier version of it was famously and publicly criticised by Steve Jobs, then CEO of Apple::
http://www.apple.com/hotnews/thoughts-on-flash/
Steve Jobs banned it from the iPhone. It is now fixed and permitted on iPhones. It also runs on Android. It has had a high profile success with the game "Angry Birds". It is an old desktop programming system around since the mid-1990s and it works in almost exactly the same way for programming mobile devices. I am finding it to be fast, light, smooth and easy in a way that is a long way ahead of the others tested.
Stacking it up against my checklist:

  1. Free or low-cost resources for students and teachers?
    NO .. BUT
    The development environment is "Adobe Animate CC" which is a recent name change from "Adobe Flash" - the name change is possibly an attempt to escape the controversial past! A lot of schools and students have this for animation purposes but it also retains its past as a general programming system including business forms and this surprise gem of phone programming talent. The price is a rental of about USD 20 per month. Students and schools usually rent it as part of an educational bundle along with other Adobe software.
     
  2. Exercising widely relevant skills? - I would prefer based on HTML5, CSS and JavaScript. PARTLY - The programming language is "ActionScript" which is an Adobe variation on "JavaScript" so I can score it well for general programming skills. Getting particular I can find zero "Adobe AIR" or "Adobe Flash" jobs advertised in New Zealand although the situation is better overseas. I have run into rumours that it is more popular than it appears but people programming with it are keeping quiet about using a controversial toolkit!
     
  3. Works across a range of device systems, with "Android" as the priority target?
    Targets "Android" and "iOS" (Apple).
     
  4. Works in a straightforward manner following straightforward instructions?
    LEADER
    Well ahead of the other systems tested. Just start the authoring software "Adobe Animate" or old "Adobe Flash" if you have that as a relic. Select "Adobe AIR for Android" as the project type and get into it. It is the only system tested to have an effective User Interface "designer" where you draw your UI as a realistic diagram on screen.
      
  5. Works smoothly and quickly using the kinds of computers students have access to?
    LEADER
    Very self-contained without the issues of dealing with other software components. Fast smooth testing. Has a useful emulator built in. 


System: Adobe AIR - HTML+CSS+JavaScript based version
Looks like an excellent candidate by its description. Similar to Adobe AIR Flash-based but achieved with mainstream web programming methods. It even has a free version although that involves the dreaded command line. But I have not been able to get this working.


System: Android Studio
Home website including download: https://developer.android.com/studio/index.html
This is the full industry programming toolkit for "Android" phones etc. Involves engaging with the Java Programming language although with careful guidance we can avoid the mysteries of its generated code and concentrate on value-added coding which may be do-able for our learners.
Avoid the emulator and plug in the phone - although that means suffering the slow "build" process for test runs. I tried selecting "instant run" for my first test run and it took 23 minutes to start up a simple "Hello World" test. I have read since that "instant run" means that we suffer a long first run because that puts resources in place to make 2nd and later tests faster. I have not had the chance to test this yet. Android Studio gives me the first impression of being resource hungry and therefore too slow. That risks losing enthusiastic learners.

  1.  Free or low-cost resources for students and teachers?
    FREE - BUT what value do you put on your time? Student learning time has its own value.
      
  2. Exercising widely relevant skills? - I would prefer based on HTML5, CSS and JavaScript.
    YES - Android Studio and its JAVA programming language are mainstream industry skills.
      
  3. Works across a range of device systems, with "Android" as the priority target?
    PARTLY - Android only.
      
  4. Works in a straightforward manner following straightforward instructions?
    PARTLY .. learning Java may be a challenge. Android Studio does have a primitive UI designer.
      
  5. Works smoothly and quickly using the kinds of computers students have access to?
    PARTLY - Actually works on my laptop, The "build" process is slow.


System: XAMARIN
Obtain by starting a "Xamarin" App from inside Microsoft Visual Studio.
Xamarin is an independent project recently adopted by Microsoft. My colleagues went to a Microsoft workshop day in late Nov 2016 and they reported that it was the featured technology. The idea is to take mainstream Windows programming methods including the Visual Studio Development Environment (good), the C# ("C-Sharp") programming language (good) and the XAML UI design code (IMO not so good, see comment below) and translate the results into code for many kinds of phones. I have tested this for Windows Phone and Android. Xamarin makes use of the same "Android Software Development Kit" as Android Studio with similar slow builds. However there is a trick to make this bearable. If you plug in a Windows Phone then Xamarin runs reasonably smoothly and fast, as in 40 seconds to start a test run. The run on Windows Phone is consistent with the way it runs on Android. Windows 8.1 Phones, eg secondhand Nokia 520, seem to be available on auction websites for around $40. So we can do the grunt work with a Windows phone and switch to an Android to finish off.

XAML is a markup language like HTML. IMO the owners of this system should get with the standards and use HTML5. I am criticising all "proprietary" markup languages here including the Android one.
When used for Windows Desktop programming XAML has a nice UI Designer. But this does not work for Phone programming. I did confirm that it was not my fault or my laptop's limitation when I read this on the Xamarin website:
https://developer.xamarin.com/guides/xamarin-forms/troubleshooting/questions/forms-xaml-designer/ - retrieved 24 Dec 2016.
"There is not yet a visual designer for generating XAML in Xamarin.Forms applications, so all XAML must be hand-written."
Comment: Needs to do better!


System: Apache Cordova
Open source project about using HTML+CSS+JavaScript to program Apps in a similar way to creating websites. Excellent idea in theory and this is the system I expected to stand out as the winner. I am now disappointed with it.

Cordova "base" as downloaded from its home website: depends on the dreaded "command lines", so variations eg "TACO", "PhoneGap" have appeared with more user-friendly "IDE" user interfaces.
I have tested the base command-line version as well as "taco" which packages Apache Cordova as a plugin for Microsoft Visual Studio. Using Visual Studio Community Edition delivers a free package.

On the laptop I could only get the base version working and only with the fortunately very simple "browser" emulator. All attempts at targeting my plugged in Android phone failed with hours of playing "whack a mole" with a cycle of:
error messages - search Google - fix usually involving another download - new error messages.
The bitter end came with Cordova demanding that I update my Java from 1.7 to 1.8. I already had 1.8 but I updated to a slightly newer 1.8. No way could I get Cordova to recognise my updated Java.

Just before going away with the laptop, I did get the "taco" version of Cordova working on my more powerful desktop computer with my Android phone. Cordova is at least as resource-hungry and slow-to-test-run as Android Studio and Xamarin and possibly more so. Cordova also starts app projects with get-started code which IMO is learner-unfriendly in a distracting way. Cordova needs better learner example apps, tutorials and documentation presented with a sense of progressing step by step. I am considering creating some but the other learner-unfriendly elements of this beast lessen the motivation to give a lot of time to it.

  1. Free or low-cost resources for students and teachers?
    YES - if they have good bandwidth to do 5 Gig or more of downloads.
      
  2. Exercising widely relevant skills? - I would prefer based on HTML5, CSS and JavaScript.
    YES - HTML5, CSS and JavaScript.
       
  3. Works across a range of device systems, with "Android" as the priority target?
    YES - wide range of targets.
      
  4. Works in a straightforward manner following straightforward instructions?
    NO - needs improvement.
     
  5. Works smoothly and quickly using the kinds of computers students have access to?
    NO - resource hungry, slow, and with unusual coding requirements that took me too much detective work time to figure out.


Summary
In my opinion, the frameworks, especially Cordova, suffer from being collections of software from different suppliers that need to work together and often have issues doing that. The error messages need to be better and the developers need to work harder on error handling code that can run diagnostics and take corrective action. Adobe AIR stands apart in that it is based on one piece of software "Adobe AIR" that already runs on phones and acts as our "interpreting" agent. We only need to work with Adobe AIR and then Adobe AIR deals with the phone and its issues for us. This different approach is what draws some critical fire but I am now seeing it as a major advantage in enabling learners including me to simply get into creating apps without the "component wars" drama.

The video at the top of this article shows a result in action - created with Adobe AIR.



Friday, September 30, 2016

Electric Toothbrush Aircraft - Part 2 - The Propeller

Youtube video:



Continuing development of the Electric Toothbrush Aircraft using a high power rechargeable compact motor drive from a budget supermarket electric toothbrush.
Exploring the potential for educational value in getting that running a polystyrene glider kit flying "around the pole" on a tether line. Lessons can include feeling the torque effect then choosing the direction around the circle so the torque effect to maintain the line tension. Other lessons include a micro switch held on by line tension so cutoff happens if the line breaks.
Aiming here for a low cost kit - the motor unit, switches, propeller (and optional micro video camera) can be re-used for each group of learners. The aircraft and some accessories probably need to be new for each group project at a cost of about USD 10

Well performing fixed wing aircraft typically need to have a maximum thrust (weight force) of 25 percent of the weight. The measurements here are 35gram-force for an all up estimated weight of 100g - that includes carrying a micro video camera. So the maths says that this should be a good performer - 35 percent - too good to let loose on free flight - this will need a tether!

Low cost electric toothbrush is "Expert" sold by Countdown Supermarkets here in New Zealand. Cost is NZD 25 which is approx equivalent to USD 18
http://shop.countdown.co.nz/Shop/ProductDetails?stockcode=749862

Propeller is "THO 387" from Acorn Models, Christchurch, New Zealand:
https://www.acornmodels.co.nz/products/aircraft-accessories/propellors-electric-rubber-powered/78684/

The next exciting episode will be the aircraft. So far after checking out a variety of kits, the best value I can find is this one:
http://www.dx.com/p/fx-fx-702-hand-throwing-hand-launch-glider-airplane-toy-w-sticker-white-black-420328

Note that links are working as at 01 Oct 2016 but designs and supply can change quickly.


Monday, September 26, 2016

Electric Toothbrush Aircraft - Part 1 - The Motor

I lost my electric toothbrush so my wife bought me a low cost one from the local supermarket. This was remarkable for how powerful it was. Big noise and big brushing action. Then I found the previous more gentle one. And I thought - what to do with a spare high powered electric motor? Try powering a model aircraft with it! Maybe there is good STEM education value in here somewhere.

I cut around the case to remove the top and bottom. I needed to cut vertical slots in the middle section of the case to get it off. See photo below. After removing the interesting and possibly educational gearbox arrangement there is a compact motor drive unit with a rechargeble 2-cell NiMH battery. The cells are of miniature size so it delivers 2.4 V from half the usual NiMH battery weight.
I kept the bottom 5cm as a handy vertical stand. It also holds the unit nicely in the battery charger.

The toothbrush is "Express". Here in NZ it sells for NZD 20 in "Countdown" supermarkets. My checking suggests that this remarkably high power motor plus rechargeable battery plus charger for that price in one handy unit competes very well with the equivalent from gadget and hobby shops. Now .. can this thing fly?

Youtube Video:



Photos: I added the red insulation tape around the motor to tame its wild array of wires.


Friday, May 27, 2016

Rocket Post 13 - We are not alone! This exists and its name is "Resistojet".

What a difference a keyword makes!  I was wondering if it was a new idea to model a nuclear thermal rocket in miniature with an electric heater coil? What I named "SteamFlash Rocket" has a history as "Water Resistojet" going back to 1906. It is normal for it to provide a very low thrust. NASA experimented with it for many years as a possible small control thruster for satellites and spacecraft. Resistojets have been successful but with working fluids other than water. The one flying "Water Resistojet" I can find was on the experimental no-budget "STRaND-1" satellite where the working fluid was water with alcohol antifreeze added.
http://www.sstl.co.uk/Missions/STRaND-1--Launched-2013/STRaND-1/STRaND-1-FAQs

"STRaND-1" has a lot of "hitechfromlotech" in it. Including another idea we are interested in which is to use a cell phone to provide computing power for robotics.

Why did we miss this at first?
Excuses excuses! The word "Resistojet" does not appear in the Zuppero et al article[1]. The article does have the related term "Thermal Rocket" but that did not stand out for me because I thought all rockets were "Thermal" except the odd ion or laser experiment. Turns out "Thermal Rocket" means heat not coming from combustion - IMO not clear to newbies. The word "Resistojet" does not appear in the Wikipedia article "Steam Rocket". I am a Wikipedia member so adding it is on my TODO list. I did ask around model rocket enthusiasts about what I was doing and none of them had ever heard of it. One of my helpers said "they are just into whizz-bangs so they will not get this". The audience for this blog and related posts is about 300 and none of you said anything. It was only after getting a very low thrust result that I headed into Google for a long search session and eventually teased out "resistojet".

So is it a good thing to build and test one?
YES! Satisfying to discover that working from isolated innocence, our "resistojet" is remarkably close to the NASA experiments. Similar physical size, coil resistance, voltage and current used. I kept it simple so it has been quicker and more interesting to build and run this than to spend hours passively reading papers on the subject. We appear to have done something new in building a transparent plastic resistojet and videoing what is happening inside. We may have some useful findings coming out of that. Sigh of relief that I did not buy the expensive lithium battery and its expensive charger, safety and support gear. Going through static tests run by utility batteries was a good move. The biggest effort was the thrust measuring mount which is going to be useful for tests of other flight propulsion options like ducted fans.

Where are we at with STEM inspiration for High School students?
(or should I say "inspire STEM with Steam"?!)
Very unlikely that this can lift off a rocket from the ground. The only NASA proposal that is even close is Zuppero et al proposing lift off from The Moon with the advantages of low gravity and operating in a vacuum. Powering a model aircraft may be possible, otherwise this is a static test activity. Makers can go for an efficiency challenge - how many watts to produce 1N of thrust. Smaller is better, About 10000 so far for our Resistojet. About 2000 for equivalent NASA experiments [2]. To fly a model rocket needs about 200 so that design would need to be 10 times better than NASA's research results or taking a very different approach.

The fact that "resistojet" has a story and some interesting practical applications could be a plus for the target audience.

Where to from here?
Look again at the Robert Truax Steam Rocket concept, This works on a different principle of storing energy in superheated water under pressure. This beast gets us concerned about safety for the young target audience but a very small capacity unit may be safe using the same safety rules as educators use with solid fuel rockets. Refs:
Robert Truax – Patent US 3029704 A – Steam powered rocket and launcher therefor. 1959.
http://www.google.com/patents/US3029704
Good ideas and information here some of which could apply to a Resistojet.

AQUARIUS Hot Water Rockets. German Student Project. Similar to Truax 1959 with use of electric pre-heater.
https://www.youtube.com/watch?v=457DSAxuwBY
http://www.aquarius-aerospace.de/index-e.html

Gets me thinking - Hybrid? Truax concept superheated water tank provides feed pressure into a Resistojet chamber where the resistance heater adds some extra energy to the wet steam just before it exits the nozzle.

Robert Truax and the NASA papers emphasise that nozzle design can make a big difference. The expansion bell, even as a simple cone, receives a lot of reaction force from the exiting wet steam. Our Resistojet currently has a 1mm exit hole. NASA's equivalents range from 0.15mm to 0.3mm which is going to build more pressure and give faster exit velocities. Greater temperature and pressure will demand a stronger and more temperature-resistant flash boiler.

An interesting option is the "Super Capacitor" for electrical energy storage. This stores less energy than the same weight lithium battery but it can release that energy in a much more rapid burst which means more power for a short time which is what a rocket or aircraft needs. The "Super Capacitor" also looks like a safer and lower cost option than lithium. A set of capacitors would have a similar cost to a lithium battery but would not need the special charger and safety electronic controllers. The capacitors do have a disadvantage in that the voltage drops as the current flows which may need something like a coil in sections that run in series to start with then switch to parallel during the run.

Where to from here also means looking away from a rocket as an attractive robotics application and finding other robotic activities to try with cell phone as robot brain.

---------------------------
Footnotes: Rocket Post 13 - We are not alone! This exists and its name is "Resistojet"

[1] Zuppero, A. Schnitzler, G. Larson, T. (1998). Nuclear-Heated Steam Rocket Using Lunar Ice.
http://www.neofuel.com/moonicerocket/


[2] Result of 0.17 N from 330 W input:
Manzella D., Carney L. (1989) Investigation of a Liquid-Fed Water Resistojet Plume [NASA Technical Memorandum 102310 AIAA-89-2840] Retrieved from: http://ntrs.nasa.gov/archive/nasa/casi.ntrs.nasa.gov/19890018335.pdf




Saturday, March 19, 2016

SteamFlash Rocket Motor 12 - Test 2 challenge - measuring minimal thrust

13 Mar 2016 - and a mystery. Test run gives a stubborn zero on our "force measurer"which is a luggage weighing scale. To get good performance we need 100W of electrical power to deliver a thrust force of 1N which would show on these scales as 0.1 kg force. Scale sits at zero all the way. Big under-performance challenge here!



Test 1 looked good - so there is something there.

I plan to follow-up by trying:
  1. A smaller nozzle for more of a pressure build up, 
  2. Balancing the balance beam instead of measuring reduction of the weight force of a large counterweight
  3. Measure other kinds of model thruster on this rig for comparison

Wednesday, March 2, 2016

SteamFlash Rocket Motor 11 - New static test rig under construction


Beam balance about 45cm long made of "Make-a-Bracket Carinya" steel shelving pieces.
Idea is to assemble the motor on the vertical piece at the end nearer to camera.
Rocket motor applies an up force - pivots in beam centre - giving a down force at the other end to be measured with an electronic hanging scale intended for weighing luggage.


Monday, February 29, 2016

SteamFlash Rocket Motor 10 - Preventing Burnout - the answer is in the hair dryer

A challenge, see video below, is a risk of "burnout". Normally the energy needed to change water to steam keeps the coil at 100 deg C or a little above. If we run out of water or lose water then the coil glows and can melt nearby plastic, or worse.  I searched for fuse wire with the idea of making the coil out of a low melting point wire so it would act as its own fuse. This search found something better, the "thermal fuse". This sends current through a little bead of low-melting point metal. On temperature rise the bead melts switching the current off. This is used for a similar safety purpose in hair dryers and hair straighteners. Looks great - I am thinking of embedding this in the wall of a boiler made of epoxy resin - or in a cutout in a polypropylene tube reinforced with epoxy resin and carbon fibre.  Example ref:
http://www.jaycar.co.nz/Passive-Components/Circuit-Protection/Thermal-Switches-%26-Fuses/c/202E