WebSocket Support

Starting with Version 1.0.6, NS Basic/App Studio supports web sockets. WebSockets define a full-duplex single socket connection over which messages can be sent between client and server. The WebSocket standard simplifies much of the complexity around bi-directional web communication and connection management.

It’s also easy to use from NS Basic. The new release has a sample client app that runs on the device, as well as a desktop server sample. It’s all explained in the new Tech Note, WebSockets.
WebSockets

Virtualbox WIN/XP and Ubuntu Wine

Lanny Rosiky from the Czech Republic reports that NS Basic/App Studio runs on Virtualbox WIN/XP and on Ubuntu Wine with the Linux version of Chrome.

Are you using App Studio on an interesting configuration? Let us know!

NS Basic/App Studio 1.0.5 released

NS Basic/App Studio 1.0.5 is ready to download. You can download it from the same URL as before.

This update has both fixes and some new stuff. Here they are:

  1. Docs: New Tutorial 07: Communicating with a server
  2. Docs: Handbook and Language Reference updated.
  3. Samples: ComboBox sample now shows how to clear.
  4. Translator: a=”IF NOT a;” fixed.
  5. Translator: cstr(0) and cstr(1) fixed.
  6. Translator: Date and Time fixed for all time zones
  7. Translator: Functions in form of object_onsomething fixed.
  8. Translator: Instr(“12345″,”3”) fixed.
  9. Translator: Some syntax errors handled more gracefully.

Sorry for the quick update from 1.0.4. The guy working on the Translator had a great day yesterday, knocking off quite a few items. We felt it would be good to get them into people’s hands right away.

Cache Events

One of the cool features of NS Basic/App Studio is that apps can be installed to the Home screen and run even if the device is offline. It does this by caching the files the app uses.

There have been some questions about how offline apps get cached: how do you tell if you app is being updated with a fresh copy?

It turns out there are some nice events you can watch. You could use these to put up a progress dialog, or a warning to wait until the update is complete. The events only appear if you are downloading a deployed version – they do not fire if you are running locally.

Here’s the important code – a good place to put it is in the global code section.

window.applicationCache.addEventListener("checking", logEvent, false)
window.applicationCache.addEventListener("downloading", logEvent, false)
window.applicationCache.addEventListener("noupdate", logEvent, false)
window.applicationCache.addEventListener("progress", logEvent, false)
window.applicationCache.addEventListener("updateready", logEvent, false)

Function logEvent(e)
  print e.type
End Function

Targeting BlackBerry WebWorks

From Lennie De Villiers:

WebWorks is an open source project by RIM, supporting all new devices like the new Blackberry Torch 9800 (OS 6.0) and Blackberry Playbook tablet PC (from next year). There are two ways to target WebWorks: use WebWorks directly or via PhoneGap. The PhoneGap version adds additional JavaScript APIs. Instructions below are for WebWorks only. If there is demand, I’ll add instructions for PhoneGap as well.

WebWorks is the same as “WebKit” so you can see a lot of videos + tutorials etc on the Blackberry Developer Zone website. The WebWorks home page:
http://us.blackberry.com/developers/browserdev/opensource.jsp

These instructions are for Windows.

  1. Download and install latest JDK 1.6
  2. Download WebWorks SDK from https://github.com/blackberry/WebWorks. You can download the Setup.exe file (size: 301.5MB)
  3. Install the Web Works SDK and note the location.
  4. Create a config.xml file (sample file below). This config.xml file indicates the name of the application, permission settings etc.
  5. Place your NSBasic files into the same folder that contains the config.xml file
  6. Rename “index.htm” to “index.html”
  7. Delete the off line file.
  8. ZIP the directory into a ZIP file. This ZIP file mustn’t contain any special characters (no underscores etc)
  9. Run “bbwp” from the command line giving it your ZIP file as input. For example: bbwp test.zip
  10. Under WebWork’s bin folder you will see “OTAInstall” and “StandardInstall”… The “StandardInstall” folder contains the COD file that you can test on the emulator.
  11. The WebWorks SDK comes with a 6.0 and 5.0 emulator.

Create iOS App Store apps using PhoneGap

From Lennie De Villiers:

This requires a Mac OX running 10.6.0 Snow Leopard or greater.

  1. Download and install XCode with iPhone SDK.
  2. Note: You will need an Apple Developer license (USD $99.00 per year) to deploy to your device or the App Store.
  3. Get the latest PhoneGap for iPhone from GIT. See setup instructions at https://github.com/phonegap/phonegap-iphone
  4. Create a new PhoneGap project using the XCode template.
  5. Delete index.html file under the www folder
  6. Download the NSBasic App Studio project to the www folder
  7. Rename “index.htm” to “index.html”
  8. You might need to change the “index.html” file to use the PhoneGap API if you want to use features like camera etc.
  9. Remove the off line file
  10. Reload the XCode project to pickup your files
  11. Build + Run
  12. You will see an PhoneGap splash screen first before it shows your application.

Once this is done, you can start the process for submitting to the App Store. Be prepared – it’s a lot of work.

Create Android .apk files using PhoneGap

From Lennie De Villiers:

Instructions to compile an NSBasic app to PhoneGap on Android on MS (Windows only)

  1. Download Java JDK 1.6
  2. Set the Java class path and add the Java bin folder to the PATH variable so that you can run Java (“javac”) from the command line
  3. Download latest Apache Ant
  4. Download Apache Ant to a folder and set the PATH variable to the bin folder so that you can run ant from the command line
  5. set the ANT_HOME variable to the Ant home folder
  6. Download the latest version of Ruby
  7. Set the PATH variable to the bin folder of Ruby so that you can run it from the command line
  8. Get the latest source code of Phone Gap for Android from the GIT repo: https://github.com/phonegap/phonegap-android
  9. Set the PATH variable to the bin folder so that you can run droidgap.bat from the command line (droidgap.bat is just a wrapper that calls the Ruby script)
  10. Open an command prompt and CD to a folder that contains your NSBasic script files (Index.htm etc)
  11. Rename “index.htm” to “index.html”
  12. Run “droidgap create”. This will create an Android solution using your NSBasic script files.
  13. Compile the application using Ant and deploy to device for testing.

Getting data from a remote server

This turns out to be pretty easy.

First, you’ll need to reformat the data on the server a bit and rename
the file:

Contents of the file:

processData("1,1000,500,500,500,500,500,500,1001,2000,1000,1000,1000");

Call it whatever you like – in my sample, it’s data.js.

Here’s the code in an NS Basic/App Studio program:

'GetData - gets some data from a remote site and processes it

Function Button1_onclick()
  head = document.getElementsByTagName("head")[0]
  newScript = document.createElement("script")
  newScript.type = "text/javascript"
  newScript.src = "http://www.nsbasic.com/data.js"
  head.appendChild(newScript)  
End Function

Function processData(s)
  data=Split(s,",")
  Textarea1.value=""
  For i=0 To UBound(data)-1
    Textarea1.value=Textarea1.value & data(i) & vbcrlf
  End If
End Function

The data in data.js is actually a mini program: it calls a function called processData with the data you want to download.

In the above code, Button1_onclick() takes that file, inserts it into your program and executes it. The code in the file calls processData, which interprets the incoming data and, in this case, simply displays it.

You’ll have to take care that no one can modify data.js, or they could
have all kinds of fun!

This sample will be included in the next build.