Killer App
- DGDanforth
- Posts: 1061
- Joined: Tue Sep 17, 2013 1:16 am
- Location: Palo Alto, California, USA
- Contact:
Killer App
I am looking for a way to increase the presence of BlackBox in the general programming community.
We need a "killer app" which grabs peoples attention.
Here is a sketch of what might work and also might satisfy our need for platform independence.
Web based BB
It may be possible to have BlackBox run in web browsers.
If so then platform independence is handle by the browser.
The app would be a simple CMS (content management system) like Tribiq/Zenerio, etc.
It would make use of 'slim binaries' for rapid upgrades and loading. By 'slim binaries' I mean
the general idea not necessarily the explicit form used by Michael Franz.
The modular structure of Component Pascal should run rings around other web systems.
I also could see a directory system that extends across servers so that one could drag and drop
modules into server space in exactly the same way we now do with windows. There would
really not be a distinction between my disk and the server disk. All of that would have to be
set up initially, of course.
Speed of execution would depend upon how WebBB was designed. Java Virtual Machine (JVM)? Java Scriipt in the browser? Some other way?
These are just some ideas I am throwing out there. Any other thoughts?
-Doug
We need a "killer app" which grabs peoples attention.
Here is a sketch of what might work and also might satisfy our need for platform independence.
Web based BB
It may be possible to have BlackBox run in web browsers.
If so then platform independence is handle by the browser.
The app would be a simple CMS (content management system) like Tribiq/Zenerio, etc.
It would make use of 'slim binaries' for rapid upgrades and loading. By 'slim binaries' I mean
the general idea not necessarily the explicit form used by Michael Franz.
The modular structure of Component Pascal should run rings around other web systems.
I also could see a directory system that extends across servers so that one could drag and drop
modules into server space in exactly the same way we now do with windows. There would
really not be a distinction between my disk and the server disk. All of that would have to be
set up initially, of course.
Speed of execution would depend upon how WebBB was designed. Java Virtual Machine (JVM)? Java Scriipt in the browser? Some other way?
These are just some ideas I am throwing out there. Any other thoughts?
-Doug
-
- Posts: 1700
- Joined: Tue Sep 17, 2013 12:21 am
- Location: Russia
Re: Killer App
There is an web-compiler for Oberon.
http://oberspace.dyndns.org/oberonjs.html
http://oberspace.dyndns.org/Oberonjs.pdf (in Russian)
It makes possible to work with your idea without deprecated technologies like Java. The modern way is HTML5 with JavaScript.
I imagine this as some code from BlackBox server translated to Oberon and loaded by client side. This OberonJS Compiler prepare client side to interact with server by some simple messages protocol.
I think, that I will be able to make some demonstration later.
http://oberspace.dyndns.org/oberonjs.html
http://oberspace.dyndns.org/Oberonjs.pdf (in Russian)
It makes possible to work with your idea without deprecated technologies like Java. The modern way is HTML5 with JavaScript.
I imagine this as some code from BlackBox server translated to Oberon and loaded by client side. This OberonJS Compiler prepare client side to interact with server by some simple messages protocol.
I think, that I will be able to make some demonstration later.
- DGDanforth
- Posts: 1061
- Joined: Tue Sep 17, 2013 1:16 am
- Location: Palo Alto, California, USA
- Contact:
Re: Killer App
I also found some work on Oberon Script and have sent an email to the author
asking whether his work is available.
asking whether his work is available.
-
- Posts: 204
- Joined: Wed Sep 18, 2013 10:06 pm
- Contact:
Re: Killer App
The code can be downloaded from the webpage at the URL you mentioned (see the section with the heading Code)
- DGDanforth
- Posts: 1061
- Joined: Tue Sep 17, 2013 1:16 am
- Location: Palo Alto, California, USA
- Contact:
Re: Killer App
Yes, butcfbsoftware wrote:The code can be downloaded from the webpage at the URL you mentioned (see the section with the heading Code)
"It consists of a compiler that translates the full Oberon language into JavaScript code, and a small runtime system that detects and compiles at load-time script sections written in Oberon Script."
I know nothing about JavaScript and hence do not know how to interpret his 'code'. I need to do my homework.
-
- Posts: 1700
- Joined: Tue Sep 17, 2013 12:21 am
- Location: Russia
Re: Killer App
There is some example here: http://sage.com.ua/OberonScript/canvas.html
However Alexey said that their OberonJS goes much further than Ralf's work. So the better to use OberonJS.
Here the example of Ajax technology:
http://oberspace.dyndns.org/index.php/t ... l#msg21065
You can put this into the online compiler and press "Compile & Run":
However Alexey said that their OberonJS goes much further than Ralf's work. So the better to use OberonJS.
Here the example of Ajax technology:
http://oberspace.dyndns.org/index.php/t ... l#msg21065
You can put this into the online compiler and press "Compile & Run":
Code: Select all
MODULE JsString;
IMPORT JS;
TYPE T* = POINTER TO RECORD END;
PROCEDURE Create*(s : ARRAY OF CHAR) : T;
VAR
res : T;
i : INTEGER;
c : CHAR;
BEGIN
JS.do("res = ''");
i := 0;
WHILE (i<LEN(s)) & (s[i]#0X) DO
c := s[i];
JS.do("res += String.fromCharCode(c);");
INC(i);
END;
RETURN res
END Create;
PROCEDURE At*(jstring : T; i : INTEGER) : CHAR;
VAR
res : CHAR;
BEGIN
JS.do("res = jstring.charCodeAt(i);");
RETURN res
END At;
PROCEDURE Length*(jstring : T) : INTEGER;
VAR
res : INTEGER;
BEGIN
JS.do("res = jstring.length;");
RETURN res
END Length;
PROCEDURE ConvertToArray*(jstring : T; VAR text : ARRAY OF CHAR);
VAR
i : INTEGER;
BEGIN
i := 0;
WHILE (i<LEN(text)) & (i<Length(jstring)) DO
text[i] := At(jstring, i);
INC(i)
END;
IF i<LEN(text) THEN text[i] := 0X; END;
END ConvertToArray;
END JsString.
MODULE XmlHttpRequest;
IMPORT JS, JsString;
TYPE T* = POINTER TO RECORD END;
PROCEDURE Create*() : T;
VAR res : T;
BEGIN
JS.do("res = new XMLHttpRequest ();");
RETURN res
END Create;
PROCEDURE Open*(r : T; method, url : ARRAY OF CHAR);
VAR
m, u : JsString.T;
BEGIN
m := JsString.Create(method);
u := JsString.Create(url);
JS.do("r.open(m, u, false);");
END Open;
PROCEDURE Send*(r : T);
BEGIN
JS.do("r.send()")
END Send;
PROCEDURE GetResponseText*(r : T; VAR text : ARRAY OF CHAR) : BOOLEAN;
VAR
t : JsString.T;
res : BOOLEAN;
BEGIN
JS.do("t = r.responseText;");
res := TRUE;
JS.do("if (t==null) res = false;");
IF res THEN
JsString.ConvertToArray(t, text);
END;
RETURN res
END GetResponseText;
END XmlHttpRequest.
MODULE Test;
IMPORT JsString, XmlHttpRequest, JS;
VAR
req : XmlHttpRequest.T;
text : ARRAY 2048 OF CHAR;
isText : BOOLEAN;
BEGIN
req := XmlHttpRequest.Create();
XmlHttpRequest.Open(req, "get", "test1.txt");
XmlHttpRequest.Send(req);
isText := XmlHttpRequest.GetResponseText(req, text);
JS.do("alert(isText);");
JS.do("alert(JsString.Create(text));")
END Test.
- DGDanforth
- Posts: 1061
- Joined: Tue Sep 17, 2013 1:16 am
- Location: Palo Alto, California, USA
- Contact:
Re: Killer App
Where do you get the module JS used in "IMPORT JS"?
Re: Killer App
Hi Doug,
I do not know where you could get it, if you can get it at all, but I guess that it is the JavaScript runtime system and it might be a pseudo module similar to SYSTEM ...
just try the online Compiler: http://oberspace.dyndns.org/oberonjs.html
and the repository: https://github.com/vladfolts/oberonjs
I had to use Google Chrome's translate to arrive there
--
Bernhard
I do not know where you could get it, if you can get it at all, but I guess that it is the JavaScript runtime system and it might be a pseudo module similar to SYSTEM ...
just try the online Compiler: http://oberspace.dyndns.org/oberonjs.html
and the repository: https://github.com/vladfolts/oberonjs
I had to use Google Chrome's translate to arrive there
--
Bernhard
- DGDanforth
- Posts: 1061
- Joined: Tue Sep 17, 2013 1:16 am
- Location: Palo Alto, California, USA
- Contact:
Re: Killer App
Bernhard,bernhard wrote:Hi Doug,
I do not know where you could get it, if you can get it at all, but I guess that it is the JavaScript runtime system and it might be a pseudo module similar to SYSTEM ...
just try the online Compiler: http://oberspace.dyndns.org/oberonjs.html
and the repository: https://github.com/vladfolts/oberonjs
I had to use Google Chrome's translate to arrive there
--
Bernhard
I hadn't realized that one could modify the text in the example of the online compiler.
I thought that was a one time example.
One can modify it for arbitrary Oberon-7 code. That's neat.
Now I need to understand github and exactly what and how to get the files to my machine
so I can generate web pages off line.
-Doug
Re: Killer App
As you may remember, some time ago I wrote that Modula-2 became the language on the Amiga, because it was an easy to use language that supported writing games. It was easier to learn than C and the only alternative back then on the Amiga, and it was fast.
I proposed back then that we would have to find a niche for BB, where it fulfilled its job better than others. We need a "selling point".
As is, BBF is not suitable for writing games that are not round based. It was designed for portability between systems (Windows and Apple back then), and this was a selling point before Java took over the field. But back then, OMi discontinued the multi-platform approach, and BBF became a nice launguage and framework among many.
I think your idea of a Killer App, Doug, is exactly what we need. But I'm not sure that web services are the niche where we can shine. Developing on a IIS with Visual Studio and JQuery has a vast amount of tools and helpers and prefabs, jump starting development. I do not see that we are yet there. The O3 is the most mature server software on the BBF, and compared to IIS or apache, it is not mature at all, and there is no documentation for it. None at all. And even if we choose that way, we will be promoting the O3 more than the BBF (which is fine, if we integrate O3 as a fixed part of the framework, not an optional addition). The BBF IDE is more than 10 years old, and it shows. It badly needs adaption. It is till 32 bit, where 64 bit is currently standard. Integration of databases is currently only possible via ODBC. And lastly, the framework does not support multithreadding, which is totally fine in a desktop application, but with a service application, this is a problem. A common approach to scaling servers is to add processors and RAM. This will not work for BBF, since RAM is limited to 4GB in 32 bit, and throwing more processors at a single task system is stupid.
Yes, I know that Josef strongly opposes multithreading, and I can see the wisdom there, but if we want to become the webserver environment or even a competitor in that market, we will have to think of a conservative way to deal with these issues.
I proposed back then that we would have to find a niche for BB, where it fulfilled its job better than others. We need a "selling point".
As is, BBF is not suitable for writing games that are not round based. It was designed for portability between systems (Windows and Apple back then), and this was a selling point before Java took over the field. But back then, OMi discontinued the multi-platform approach, and BBF became a nice launguage and framework among many.
I think your idea of a Killer App, Doug, is exactly what we need. But I'm not sure that web services are the niche where we can shine. Developing on a IIS with Visual Studio and JQuery has a vast amount of tools and helpers and prefabs, jump starting development. I do not see that we are yet there. The O3 is the most mature server software on the BBF, and compared to IIS or apache, it is not mature at all, and there is no documentation for it. None at all. And even if we choose that way, we will be promoting the O3 more than the BBF (which is fine, if we integrate O3 as a fixed part of the framework, not an optional addition). The BBF IDE is more than 10 years old, and it shows. It badly needs adaption. It is till 32 bit, where 64 bit is currently standard. Integration of databases is currently only possible via ODBC. And lastly, the framework does not support multithreadding, which is totally fine in a desktop application, but with a service application, this is a problem. A common approach to scaling servers is to add processors and RAM. This will not work for BBF, since RAM is limited to 4GB in 32 bit, and throwing more processors at a single task system is stupid.
Yes, I know that Josef strongly opposes multithreading, and I can see the wisdom there, but if we want to become the webserver environment or even a competitor in that market, we will have to think of a conservative way to deal with these issues.