EdTechDev

developing educational technology

Some Exciting New HTML5/Javascript Projects

This an update of sorts on some things happening in the HTML5/Javascript world.  First, here are some previous posts on this topic, to catch you up to speed:

Some Exciting New HTML5/Javascript and Related Projects

Here are some interesting new software projects and libraries and tools I’ve run across since my previous HTML5 post:

January 14, 2011 Posted by | development, html5, java, opensource, programming | 2 Comments

Browser-Based IDEs (programming environments)

As I wrote about earlier, HTML5 (Javascript, Canvas, WebGL, etc.) is allowing people to create rich, interactive applications that run in your browser and don’t require flash or java. Cloud computing (such as Google App Engine and others) and AJAX are also allowing us to run things in our browser that before were typically run on the desktop because they require quickly saving and retrieving a bunch of info. Google docs, gmail, etc.

So it’s not so surprising that there are now even some programming environments starting to emerge that you can run and develop from inside your browser. These are websites where you can edit code, run your application, and sometimes even instantly share your application for others to try. This is much more convenient than the typical process of downloading and installing a huge IDE such as Eclipse or Netbeans, and then compiling and packaging and distributing/hosting an application on your own.  Browser-based environments are also nice for students at schools, because they typically are not given permission to download and install software on their own, but can run these tools in the browser, as long as they aren’t blocked by IT.  I imagine it won’t be too long before we start seeing kid-friendly browser-based IDEs start to appear.

UPDATED LIST (December, 2011)

This mostly lists browser-based development tools, but also a few desktop applications that help you create HTML5 applications or animations/games:

OLD NOTES:

Here are some browser-based coding environments I know about. All are free and most are open source.

  • [Some updates in July 2011, over a year since this was originally posted:]
    • Cloud9 IDE – create server-side node.js javascript apps in this browser-based development environment
    • Erbix - another Javascript App editor
    • Akshell – and another Javascript application editor
    • Kodingen – edit php/html/css/etc. files on the server via the browser (I used this in my web development class)
    • Maqetta – visual HTML5 editor, builds on the dojo toolkit
    • SketchPad.cc – etherpad + processing.js (I used this in my html5 class)
    • Zeon.js – still early in development, not open source – analyzes javascript source code for issues
    • other javascript/html/css online editors: jsFiddle, jsdo.it, jsbin
    • browser-based game development sites: Pixie (coffeescript), Play My Code (uses a ruby-like language called quby)
    • Alternative languages that compile to javascript - a huge list, some of which let you edit and compile scripts in the browser.
  • HasCanvas – an IDE for Processing.js. Processing is a very popular java-based development environment, with a free IDE you can download. Processing.js is a port of that to javascript. With either one, you can create animations and artwork and so forth. HasCanvas has a weird interface – hover over the arrows on the left side to show the source code for any animation, and use your mouse wheel to scroll. Click Browse to see other scripts.
  • Bespin – [replaced by Ace editor, used in cloud9 IDE listed above] an editor from Mozilla that you can use either on their site, or embed into your own site.
  • CodeRun – Develop ASP.NET, php and Ajax applications in your browser. Not open source.
  • App Inventor for Android – This is unique in that it has a visual designer, along with a visual blocks-based language for creating applications (similar to that in Lego Mindstorms and Scratch). From this description it does appear to be web-based, although you use it to develop applications that run on an Android cell phone, not the browser. Here’s a course that used the tool last fall, along with the beginnings of a textbook. Unfortunately, it’s still only in private testing and not available to the public. I’ve signed up to use it with students in my multimedia development course this fall. If that works out I’ll post all the resources and videos online, just like all my courses.
  • There are also many programming command line interpreters (repls – read-eval-print loop) that work in the browser, such as Lord of the REPLs (lotrepls), which lets you try many different languages out.
  • Some other browser-based IDEs: Ares (Palm WebOS development), Zembly (discontinued when Sun was bought out by Oracle), Yahoo Application Platform and Yahoo Pipes, Glowday Google widget designer…

March 19, 2010 Posted by | android, development, html5, java, programming, software | 6 Comments

What’s the Platform of the Future for Developing Interactive Graphical Educational Software?

So, what is the platform of choice for folks who want to create interactive graphical educational software (see for example all the stuff at PHET and NLVM). Currently, there are two primary options: Flash and Java Applets. I’m not covering in this post web applications, which can still use just about anything you want: PHP, Java, Ruby, Python, .NET, etc., or business/office/administrative software which can either be web apps or desktop apps coded in C++/Java/.NET/Python, etc., or 3D desktop games, usually coded in C++/Java/.NET/Python. I’m centered on interactive, graphical educational software like you see all over the web now.

The PHET project, for example, uses both java and flash. These haven’t always been the main options, however, and I suspect it will change again in the near future. Here’s a short history of some of the development tools I’ve leaned on for educational software development over the past 15 years:

  • early 90s – hypercard / supercard, Perl/CGI for web apps
  • late 90s – java, visual basic, real basic, PHP emerges for web apps, javascript in the browser
  • early 00s – by this time, commercial options no longer cut it for me, too many bugs, ignored feature requests, too expensive, vendor lock-in – free and open source is king: python, java (later open sourced), C#/vb.net (esp. the Mono open source clone). Unfortunately there is no alternative to the commercial, proprietary flash, which becomes king of RIAs (rich internet applications) instead of java applets.
  • late 00s – by this time, desktop apps no longer cut it. RIA is king for creating interactive graphical educational apps – java and JVM languages like scala, and still no real alternative to flash (there is javafx, but it hasn’t largely caught on yet, and just about all the demos so far require you to download the app (JNLP) rather than run in the browser, despite support for JNLP applets). The move to RIA means no more Mono/.NET since it doesn’t run in the browser – support for silverlight is weak/non-existent on many browsers/platforms. And no python, although perhaps one day browsers will support it as an alternative language to javascript. I’m not holding my breath on that though. Mono/.NET is emerging again now in 3D virtual world space, however, because it is the basis for Second Life / OpenSim, and its only open source competitor, the java-based Project Wonderland is no longer supported by Oracle, who bought out Sun. The project is continuing outside of Oracle, but it’s future is unclear.
  • early and late 10s? – This is the question of this post. Mobile platforms can no longer be ignored, and that means no java. Actually android is essentially java (dalvik), but standard java applets do not work. Flash is only just now being ported to work on android, and it may become available for the iphone as well, although Apple is hostile to it (as well as java). Since google doesn’t support browser applets (even android applets), and Apple wants total control of their platform, Flash is only increasing its dominance and importance.

HTML5

Since Oracle bought out Sun, and there is no support nor any planned support for java on the android and iphone platforms, it appears the only open source alternative for the future of RIA apps may be HTML5. But that cannot be used for creating the kind of highly interactive graphical educational software that you can create in java and flash. For this to work in HTML5, it would require WebGL, a 3D (OpenGL ES) canvas for HTML5. WebGL still does not work out of the box on any mobile platform, but it has been or is being ported to work on WebKit (the browser engine for Palm’s WebOS and the iphone web browser) as well as android. Currently, to run WebGL you need to grab a nightly build of Firefox, WebKit, or Google Chrome (I’m trying out the last one). Official builds will have likely have built-in support for WebGL come November 2010 or so perhaps (Firefox 4). Here are some more resources on WebGL:

The main drawback to the HTML5 platform is that javascript is the only language supported. That’s not a problem for me, personally, I’ve been using javascript since when it was called livescript. But my interest also is in programming languages/tools that make it easier for students, teachers, and other non-CS types to develop interactive educational software, as discussed in this chapter (pdf). A workaround for now would be to create a to-javascript compiler for alternate languages, as has already been done for java with the GWT project (which has various WebGL controls in development: WGT, GWT-G3D, GWTGL, GWT-WebGL), but in the long run it would be best if a common runtime were developed for WebKit and Firefox to support other languages than javascript, but then we are just re-inventing java and the JVM. So I don’t dismiss the java platform at all just yet, but it’s definitely not having a good year so far :)

February 7, 2010 Posted by | android, development, html5, java, opensource, programming, scala, software | 14 Comments

Platforms for Developing Open Educational Software

Below is just a basic list of what software tools are popular now for creating various types of applications. I only post it because it changes from year to year and not everyone keeps up with this kind of stuff. I was also interested to see how well the Java platform could serve as an all-purpose open source stack for developing all kinds of educational software. It’s not always the best or most popular solution for some types of applications, but it does have the widest presence overall. Of course Sun, which controls Java, is being bought out by Oracle, which may have an impact on some of the below options (like perhaps project wonderland or javafx). I have nothing against .NET either (and esp. its open source clone, Mono). In fact for a good while I was the 2nd most active contributor to the Boo programming language and compiler that ran on the .NET/Mono CLR platform. But the fact that it still can’t do browser applets is a big strike against it for my purposes of creating educational software. Silverlight (and open source clone Moonlight) are making progress but still not there. Flash/Flex and Java are still the two best options there (with HTML5/Canvas being another up and comer). Google’s Java-like platform (such as Android) is becoming more dominant as well. They just released O3D, a new 3D multi-user browser plugin, replacing their earlier discontinued Lively tool. However it only runs on Windows and Mac and is still in early development. If they released a browser plugin for running Android applications they’d almost have the total stack as well, but I have a feeling Sun/Oracle wouldn’t be happy about that.

I didn’t have time to hyperlink everything – you can google to see the various tools in more detail.

  • Learning Management Systems
    • Moodle (PHP)
    • Sakai (Java)
  • Web-based application frameworks
    • Rails (ruby)
    • Grails (groovy)
    • Turbogears, etc. (Python)
    • Cake, Symfony, etc. (PHP)
    • JSP, Struts, Velocity, Tomcat, etc. (java)
    • ASP.Net (.NET/Mono)
  • Cloud computing services
    • Google Appengine (Python, Java)
    • Amazon EC2
    • Sun cloud
  • Content management systems
    • Drupal (PHP)
    • Joomla (PHP)
    • Plone (Python)
    • DotNetNuke (C#, .NET/Mono)
  • Browser-based Ajax/Javascript frameworks
    • GWT
    • JQuery
    • Mootools
  • Browser applets
    • Flash/Flex
    • JavaFX, Java
    • Silverlight (.NET) Moonlight (Mono)
  • 3D multi-user virtual worlds
    • Second Life / OpenSim (.NET/Mono)
    • Project Wonderland (Java)
    • Croquet (squeak/smalltalk)
    • O3D (Javascript, new from Google)
  • 3D games
    • Java – JMonkeyEngine, JOGL, LWJGL, etc.
    • C/C++
    • .NET – XNA
  • 2D games/simulations
    • Netlogo, Starlogo, Repast (Java)
    • Pulpcore (Java)
    • Processing (Java)
    • PyGame (Python)
  • Cell phone applications
    • Android (uses java-like language and runtime by google)
    • iPhone (apple)
    • JavaFX mobile
    • Java ME
  • Desktop applications
    • .Net/Mono System.Windows.Forms
    • Java Swing
    • C/C++ – GTK, QT
    • Python – PyGTK, wxPython, etc.

May 24, 2009 Posted by | development, java, opensource | Comments Off

Don’t Use Mac OS X as a Server

I’m not a Mac, Windows, or Linux zealot. They each have their niceties and their quirks. But I would argue though that the Mac is not good to use as a web server:

  • The PHP software that comes installed with Mac OS X doesn’t include the gd module, which is very commonly required by many applications, including Drupal and Moodle. You have to recompile PHP with the gd module yourself (which is very tricky on 64 bit systems), or use a third party binary. Other standard php extensions are also disabled in the Mac OS X version.
  • Many servers and web applications also require cron jobs (crontab), tasks which run repeatedly at various intervals. Drupal and moodle require this as well, for example to send out emails, to fetch rss feeds, to create backups and run statistics. On the Mac, cron jobs can stop working after the server is rebooted. See this story and this workaround hack.
  • LDAP on an OS X server is not standard, and does not work with the php-ldap module, again required by any PHP application that supports LDAP authentication. We had to code our own workaround to call Apple’s dscl tool to handle LDAP operations.
  • I don’t consider this major, but all the standard folders and configuration files are in non-standard locations. Some of the renames are improvements over the standard I think, like Sites instead of public_html. But for example instead of /var/www, the main apache web home folder is /Library/WebServer/Documents. It takes much longer to type on the command line because you can’t tab-autocomplete “WebServer” – there is another folder there called WebObjects which interferes.
  • It becomes a bigger problem when for example you want to edit the php.ini file, which most everyone invariably needs to do, in order to change things like the maximum supported file upload size. /private/etc/php.ini ?
  • Apple is slow to update their software, not to mention you have to pay for upgrades. Their version of PHP had a security hole for many months last year. Some mac servers on our campus were blocked because of it.
  • The Macs have long been way behind with respect to Java as well. You have to use a special 3rd party ‘SoyLatte’ build now to get the latest version. It didn’t help when Steve Jobs disavowed Java a few years after marketing OS X as the premier Java development platform.
  • There is no official package management system for the Mac, like with apt-get for debian/ubuntu to make it easier to update software and install new software.
  • The Mac uses cryptic XML files to store configuration information for its non-standard services like launchd.
  • This is not server-specific, but often times there are a lot of duplicate files that start with a period when you copy stuff from a mac to another computer.

Related:

UPDATE: The new version of Mac OS X (Snow Leopard) apparently has more problems with php.

January 31, 2009 Posted by | java, opensource, technology | Comments Off

Java 6 update 11 and JavaFX 1.0

Java 6 update 11 (6u11) has been released. It fixes the bug I mentioned and reported earlier in which the old browser plugin (libjavaplugin) was installed in Linux instead of the new one (libnpjp2). So applets like these scenegraph demos will work by default, whenever the debian/ubuntu java packages are updated.

JavaFX 1.0 is due to be released tomorrow. Like I mentioned before, see also an alternative for the java platform called PulpCore.

December 3, 2008 Posted by | java, opensource | 1 Comment

New Software and Hardware Releases

Just a round-up of some major software releases happening:

  • Java 6 update 10 – a new version of java that is more lightweight and quicker to load applets.
  • The 6.5 version of the Java development environment Netbeans is due out next month, or you can grab the release candidate now.
  • Ubuntu Intrepid – the next version of Ubuntu will be released this week.
  • OpenOffice 3.0, a free open source alternative to Microsoft Office, was released. You can now open and edit pdf files using openoffice extensions.
  • A new version of the Arduino circuit board (Duemilanove) was also released.

October 26, 2008 Posted by | java, opensource, programming | Comments Off

Java and Ed Tech Courses

Now that our fall semester is halfway through, I’ve fleshed out the main schedules and resources for the two classes I mentioned earlier. Here are the resources below, in case you are by chance interested in learning a bit about java programming or about the field of educational technology. For both courses I am using drupal and organic groups as a blended learning support tool, although in very different ways for each course.

  • Multimedia Development with Java – This is really a survey course, an introduction to the java platform for non-programmers. Getting a cursory introduction to the basics of java, object-oriented programming, Swing, Java2D, and newer java platform technologies like JavaFX and GWT.
    • Course Homepage
    • Course Syllabus with links to tutorials and resources and activities. We started with Greenfoot to learn the basics of object-oriented programming and the java language, and for the rest of the semester we are using Netbeans to learn how to make real applications.
    • Java Handbook – These wiki pages are still in progress and need a good bit of polishing, but they have some notes guiding folks through the main Java tutorials on the Sun site.
  • Foundations of Educational Technology
    • Course homepage
    • Course schedule
    • Ed Tech Knowledge Base – This is the wiki-based ‘book’ students are working on, basically crib notes and short summaries of various ed tech topics and items, such as organizations, journals, people, learning theories, instructional design models, etc. It will be cleaned up a good bit at the end of the semester to make it more presentable, and if I teach this class again next year we’ll work on refining and improving it.
    • Research Paper Guidelines – I tried to provide as much guidance as possible for students’ very first research paper assignment in grad school.

October 16, 2008 Posted by | edtech, java, teaching, usu | Comments Off

   

Follow

Get every new post delivered to your Inbox.

Join 2,698 other followers