Web Applications frontend – future or already present?
This weekend I was going to implement one really simple & fast web enabled source code editor frontend. Such task in general seemed to be more or less trivial as I use source code editors all the time. So I started to mock up the proof-of-concept.
First an technology/platform should be selected on which the frontend will be written. Possibilities so far:
- Flash
- Silverlight
- Java Applets, Java FX & family
- HTML & JavaScript
Because Flash is widely distributed across the net - I've started mocking up the prototype right there, but after 1 day of trials, performance improvements & etc I ended up with something which wasn't quite good as I expected:
http://wizartworx.com/hSourceEditorInstance.air (there is used optimized version of http://code.google.com/p/as3syntaxhighlight/ )
As you can see the end result isn't fast enough to support hundreds of source code lines. So eventually flash platform isn't suitable for implementation of robust fast performance code editor. So I questioned myself - what platform eventually will go further than its current state. Silverlight is great, Java too, but all of them actually are plugins and "workarounds" to features which web browser does not has. And with the ongoing HTML5 integration this "workarounds" actually won't be needed anymore. And a proof for that is these path links which I've gathered during the research process:
demos:
- http://3.paulhamill.com/node/39
- http://www.whatwg.org/demos/2008-sept/color/color.html
- http://xant.us/ext-ux/lib/ext-3.0.0/examples/desktop/desktop.html
- http://jeko.free.fr/megapong/
- http://demo.nextapp.com/echo3csjs/
- http://glimr.rubyforge.org/cake/redesign.html
some highlight libs & editors/components:
- http://mihai.bazon.net/projects/javascript-syntax-highlighting-engine
- http://code.google.com/p/google-code-prettify/
- http://marijn.haverbeke.nl/codemirror/
- http://shjs.sourceforge.net/
- http://guillaume.bort.fr/textile-editor/index.html
frameworks:
- http://sproutcore.com/
- http://prototypejs.org/
- http://sizzlejs.com/
- http://www.extjs.com/
- http://www.gapjumper.com/
- http://labs.adobe.com/technologies/spry/home.html
And many many more implementations on the pathway.
Conclusion
I'll leave this section without stating my own opinion, but one is for sure -> HTML5 will change the way how browsers interact with the web, not by themselfs but generally as how developers implement it.
on the way for ITM
Today I've decided to turn head up & look for better ITM (issue task management) system. And because after going into various examples and TRAC and Mantis and etc. and etc. I found myself in nowhere.
So as been curios what is going on with the head line of development turned to Github & Google Code . Sadly didn't found anything covering my expectations (the same situation as DAssistA though). And while still been curious how other people handle working together in easy enough convenient way decided to give a try to the history:
Project management is the discipline of planning, organizing, and managing resources to bring about the successful completion of specific project goals and objectives. It is sometimes conflated with program management, however technically a program is actually a higher level construct: a group of related and somehow interdependent projects.
Flex 4 + AIR 1.5 on Linux
At last after a loooong several hours digging and (re)searching how to setup my ubuntu(9.04 32bit) workstation to be able to develop in somehow _avarage_ speed I found a way doing it so with Flex Builder for Linux alpha 5 (and hopefully there will be alpha 6 supporting fully Flex4
.
I've lost around 2 hours to understand why Flexbuilder can not debug Flex4 based AIR project, when suddenly I've opened project's ".actionScriptProperties" file and found what really was happening preventing me with all of the possible errors found during such setup...
So the problem is in the target version which was used (Flex Builder for Linux is generating air template projects for flex 4.0.0 sdk using 'old' .actionScriptProperties file, a template one you can get from the attached template-workspace-0.1-bla.tar)
And here are the essential parts which needed me quite a lot of time to figure out (may be one day this all will be one click setup?)
0. Ubuntu 9.04 32 bit with java installed (there are a lot of tutorials, mine is just to select its as package via Applications-> Add/Remove UI)
1. You need 32bit Eclipse 3.3.x (extract, mine is /home/outbounder/eclipse)
2. You need Flex Builder of course (run as normal console application ala "ALT+F2 - > xterm")
3. After that you need all the sdks for development:
3.1 flex 4.0
3.1.2 (optional) I still work on flex 3 projects, so sdk 3.4 is needed)
3.3 Air SDK is needed, where strangely for one day I encountered several changes resulting in such download page at this moment (2010.03.17, 2:07 am)
4. Extract flex 4 sdk to install location of flex builder (mine destination is at /home/outoubnder/flexbuilder/sdks/4.0.0)
5. Extract AIR sdk on top of flex 4 sdk destination folder
6. Rename adl & adt (those are located at the ./bin folder of the flex 4 sdk destination folder) to adl_lin & adt_lin
7. Fire up eclipse, add flex 4 sdk (more info here)
8. You can use the above mentioned template workspace for flex3/4 +/- AIR projects
9. You'll need to follow also the instructions for installing Adobe Flash Player 10 — Debugger Version. as well and for even faster coding -> snippets
And now I can dream of abstract GUIs managing complex data relationships...
Activebot.net – live
So after many hours spent on researching what is the most simple & stable solution covering all the needs (today's & tomorrow's) http://activebot.net is finally out...
What you may expect from it in the near future is actually what ABN concept stands for: a lot of re-usable apps talking to each other...
But now - coming with modular & scalable API for apps/bots communications through several channels first to be supported:
- REST
- XMPP
... next to come - who knows
DAssitA repo 0.0.7
As DAssitA had moved to almost version been used in more than 3 private projects of mine so far + 2 projects for the East company to which I'm working for it is time to make a quick release of the current repo & its tools/modules.
I have to note that the repo includes some external tools which licenses I've didn't found/included yet, where this will be done for the next major release of DAssitA's repo 0.1.
Let's get started:
Minimum requirements:
- Windows 7 OS
- Adobe AIR runtime installed
You can download the repo_0.0.7
And here are the steps required to get it moving:
0) unzip the downloaded repo to a folder where appropriate (mine setup is that the repo is extracted at D:\pd-repo\)
1) install haxe compiler with batteries included from here
2) install last revision of ActionPdmlToolbar
3) install last revision of PdmlEditor
4) to be able to use Svn module - install slick subversion command line client
5) add to your apache new virtual host pointing to your unziped repo root folder using similar to this syntax:
<VirtualHost *:80>
ServerAdmin webmaster@pdrepo.dev DocumentRoot <<YOUR PATH TO THE REPO's ROOT FOLDER>> ServerName pdrepo.dev ServerAlias pdrepo.dev ErrorLog pdrepo.dev-error_log CustomLog pdrepo.dev-access_log common </VirtualHost>
Note that pdrepo.dev servername alias should not be changed, otherwise ActionPdmlToolbar & PdmlEditor won't boot.
6) add the following entry in C:\windows\system32\drivers\hosts file:
127.0.0.1 pdrepo.dev
7) enable mod_neko2 for your apache by placing the following in httpd.conf:
LoadModule neko_module "C:/Program Files (x86)/Motion-Twin/neko/mod_neko2.ndll" AddHandler neko-handler .n
place the ndll file from <<repo>>/haxe/org/dassista/tools/Prc.ndll to your neko directory
And that you go.
To test is DAssitA is installed properly try the following:
1) launch ActionPdmlToolbar
2) open explorer to <<repo>>\haxe\org\dassista\_pdmls\
3) drag the file compile.pdml to the ActionPdmlToolbar
4) double click on the compile.pdml entry from the action toolbar and see that there are no exceptions or anything scary outputed (usually compiling DAssitA itself requires around 5 to 6 secs and should ouput only empty lines)
DAssistA on the long run
Currently there is running development on the ActionPdmlToolbar which will support PdmlEditor for execution/parsing of pdml files. Where there current solutions defined into applications is as follows:
DAssistA shell can do only one thing: invoke & pass any command line arguments to specified multi-module.
DAssistA rest can do only one thing which is the same as the shell, but made in rest-like context via http request/responses
ActionPdmlToolbar can do only two simple things:
- list available (cached) pdmls & triggers their parsing/execution also providing feedback as pop up window.
- list available runtime modules returned by ModuleInfo impl. & trigger their execution.
PdmlEditor can do only one simple thing:
- edit pdml files. Currently it supports drag & drop operations for all available runtime modules returned by ModuleInfo impl.
So far so good.
There are still some little issues which should be fixed before new repo release can be made + engaging auto-update features for both PdmlEditor & ActionPdmlToolbar.
One of the biggest challenges so far is to build 'universal' application while keep the code needed to minimum, where this is so far hard near to impossible even for so simple things like fast & cross-platform command line invokes... But all this soon will be past
A snip into the future
Today one quote took a spinning turn in my mind:
Graph oriented data persistence is just the beginning of AI
That's all it goes...
dassista+haxe+rtti = Documentation
As there are already several kind of modules used all around it needs proper documentation from the beginning. And what better than exposing the source code docs at runtime?
Just try the new repo_0.0.4 and give it to your imagination (or try something like "parse.bat asdkjahda" and after that open up haxe.org.dassista.tools.Parser at method execute
)
More to come:
- full code documentation during the following couple of releases
- ftp upload(scp)
- wget tight implementation
- a nice GUI....

