Posts filed under 'mn8'
After the first public release of SpaceMapper DataStore and MN8 last week I have some data to draw some conclusions. Unfortunately, on the release date, the FreshMeat announcement contained links which did not passed through the SourceForge counters
(the link was directly to prdownloads instead of the downloads section
on the status page), so I have no Idea about the downloads in the first
day. However seems that there is a lot more interest in an XML database
than in a new scripting language and even so 78% are interested in the
binaries and only 22% in the source of the database project. With the
scripting language the situation is reversed, 79% interest in the
source and only 21% in the binaries. I guess peoples are more
interested in how to write an interpreter than in using a new one
No feedback, no bugs, no mailing list interest no contributors which is reasonable to a first public release.
What is not reasonable is that the Klez virus on somebody's computer
noticed the release and it sends thousands of virused mails with my
email address in the from. In case anyone receives one I'm really
sorry, it's not my fault, it's not from me and you can verify that by
looking at the source of the message. All the mails I send goes through
our server (194.102.233.6) which I'm sure you won't find in the
received headers.
November 11th, 2002
Just wanted to let you know that after many months of hard work a first public release of SpaceMapper DataStore and MN8 is available.
What is SpaceMapper DataStore ?
DataStore is a Java based document repository server for storing,
querying and fetching XML based documents. It is built on practical
needs allowing the storage of semi-structured (well formatted, maybe
validated, XML, XHTML and HTML) documents and un-structured documents
(TXT).
The documents are stored in conventional relational database
(Postgresql, MySQL, DB2, SAP DB) assuring that way the maximum
advantages and reliability of these products. Being built on top of the
Avalon Phoenix
framework, it allows server components to be easily developed, deployed
and shared. The documents are managed through a BEEP and/or XML-RPC
interface using a subset of the SEP (Simple Exchange Profile) protocol.
What is SpaceMapper mn8 ?
mn8 is an experimental object oriented scripting language, tightly
integrated with the net, which emulates the concepts at the core of XML
in order to simplify and make as transparent as possible information
extraction and manipulation from the WWW and XML documents.
Written in Java works with most operating systems and allows easy
reuse of the huge number of libraries available trough simple wrappers.
At this point mn8 has concepts for: HTML, HTML-Forms, Cookies, RSS,
OPML, HTTP, FTP, POP3, SMTP, Jabber, BEEP, XML-RPC, SOAP, MBox.
Then what is SpaceMapper ?
The SpaceMapper
effort was born from the classic Internet desire to see if there is a
better way. The effort evolved from an early RFP on the now-defunct
SourceXchange which was awarded to the Romanian open source development
firm noLimits Technologies. The project is Open Source (Apache like license) and was sponsored by the 501(c)(3) non-profit arm of media.org (Internet Mulicasting Service ) and noLimits Technologies.
For any questions related to the SpaceMapper and/or mn8 project please write to the mailto:spacemapper-user@lists.sourceforge.net mailing lists.
MN8 and DataStore
is still very young and far away for reaching it's purpose, so any
feedback, ideas, questions and constructive criticism is more than
welcomed
November 5th, 2002
Today I took some time and wrote the mn8 script to harvest my subscription file from Radio and using a simple XSL to render it in some basic HTML. Once I had the HTML files rendered locally I only had to make a main page so that Plucker would convert them in it's internal format. Here are some screen shots.

Not quite satisfied yet, not sure if I should leave the regular HTML
tags in description or I should convert it to txt, since doesn't make
to much sense. The text would be a lot more readable. Also have to make
it to display only the differences since the last run. The buy line
from the shots is from the screen dumper program
Updated (8 june 2005): This was a simple experiment and by no way a final product or solution. You can check Plucker for an complete Palm based news reader.
August 14th, 2002
So after finishing the first fully functional internal release of mn8 we considered that running mn8 on a web server side is also useful so we started to make a servlet which will run mn8 based scripts and concepts.
A couple of days should have been enough, still it’s not ready. When I started I tried to make an accurate picture of the steps involved in order to try to improve the estimated time.
The reasons are: a malfunction of the custom scheme based url’s when mn8 is run inside Tomcat and a synchronization problem as now multiple mn8 scripts can be run concomitantly inside the same Java instance.
The synchronization issue could have been foresaw but the Tomcat thing not.
So, what takes to make accurate project estimates, experience ?
May 18th, 2002
Hm, it took me 3 weeks to solve a bug, that's definitely a record.
Truth is I'm not sure it was a bug or a feature. It is a bug because
doesn't worked, it did when I implemented the feature, but then "mn8"
changed and nobody tested those two methods. Now works, and it does it
nicely that's what counts. It is also covered with tests cases so next
time it gets screwed will know. Cool we have now 1114 tests for "mn8",
tests containing "mn8" script code running in a "mn8" script base test
framework. Cool.
We also have some new scrappers and a primitive "Jabber" client. For
now it is only able to send and receive normal messages. Will see
latter what more can we do with it.
RSS, RDF, OPML, scriptingNews2.xml concepts implemented. A cool thing all do is allowing you to have a new RSS, RDF ... feed containing only the new items since it was last invoked.
The only remaining things to do till we hand it over to our publisher are:
finishing the documents for the language syntax (the API for the
concepts is almost done), tackle a bit the basic error handling and do
some more examples.
April 19th, 2002
Somehow I remembered today about the old cgi days and how arguments where
passed to cgi's as environment variables. Now I already knew how to make under
bash an mn8 script to be executable, as simple as having an #!/usr/bin/env
mn8 as the first line of the script and making the script executable. BTW
another very simple trick which improves life a great deal is to make a simple
symbolic link from your mn8.sh somewhere in your path like:ln -s
/dev/spacemapper/mn8/mn8.sh /usr/local/bin/mn8 that way from anywhere you
can say mn8 xxxx and voila mn8 works as any executable.
So, back to our track, this week I was playing with Vanilla and noticed that
Vanila is in fact written in Rebol. That gave me the idea that if I can write
bash cgi's and rebol cgi's why wouldn't I be able to write mn8 cgi's. Quickly I
made a small script, throw-ed it into my cgi-bin directory and pointed my browser
to it. Worked, the first time! Isn't life wonderfull ?
Cool I could write mn8 cgi's and use any kind of GET posts. But what
about the POST posts? In the case of GET name/value pairs are sent as url
parameters, but in the case of a POST method the name/value pairs are sent
through the default input stream. But I remembered that in order to make pipes
work with mn8 I check the default input stream at start-up and if I find
something on it I give it as parameter to the script
Exactly! That meant that I can use POST and I will have the parameters in
the argument of the main method. Quickly another script and test. Yep it worked
like magic.
The morale of the story? Good design and model always pays off
There is only one small issue. Every time a script is invoked the Java
machine is started from scratch which is very slow. How could I keep an instance
of an Java VM in memory and convince Apache to use that one to run my
scripts?
BTW, Here it is the test script:
#!/usr/bin/env mn8
$pathInfo from "env:/system/properties/PATH_INFO"
$scriptName from "env:/system/properties/SCRIPT_NAME"
$queryString from "env:/system/properties/QUERY_STRING"
$remoteHost from "env:/system/properties/REMOTE_HOST"
$osName from "env:/system/properties/os.name"
$javaHome from "env:/system/properties/JAVA_HOME"
print "Content-type: text/html\n"
print "<html><title>mn8 CGI Script</title><body bgcolor="#fefefe">"
if $pathInfo != "" then [
print "<form action='" + $scriptName + "' method='post'>"
print "<textarea name='text' cols='65' rows='15'></textarea><br>"
print "<input type='submit' name='submit' value='submit'>"
print "</form>"
] else [
print "<b>Os Name</b>: " + $osName + "<br>"
print "<b>Java Home</b>: " + $javaHome + "<br>"
print "<b>Path Info</b>: " + $pathInfo + "<br>"
print "<b>Script Name</b>: " + $scriptName + "<br>"
print "<b>Query String</b>: " + $queryString + "<br>"
print "<b>numarul de argumete</b>:" + $args@length + "</br>"
if $args@length > 0 then [
each $i in $args do [
print "<p>" + $i + "</p>"
]
]
]
print "</body></html>"
February 15th, 2002
Installed
KDE
3.0 (beta 1) today. Impressive work, everything is so well integrated
and looks just great. Not quite stable yet but doesn't matter one day
it will be. I think this is the first KDE release I really like. For some strange reason I always was founded to Gnome or Enlightenment even if most applications in KDE outperformed the Gnome ones.
After all that happened during the last last year I still believe in
Linux. I run it every day whole day long, and I like it, it's not hard,
it's not difficult (it was at the beginning, but please don't tell me
that you felt Windows from the first second)
It's stable, it's powerful, alive and very rewarding with those who
have some patience. This year meant a lot to Linux lot's of excellent
applications, starting with Mozilla, Galeon, Gabber, OpenOffice. Now that Adobe has released a SVG plugging for Mozilla all my dreams came true, I am a very happy Linux user, period.
I'm not sure that all those 10 predictions Joe Barr made
will become true, but I'm sure that Linux on the desktop is stronger
day by day and one day it will get it's well deserved place.
This week after a whole year of designing, planning and coding I made
the first mn8 pre alpha release to our sponsor. Even if it does not
have yet all the features I want for an alpha release and has pieces
which are not quite finished I like it.
A funny mixture of filings overwhelmed me, pain and suffering from
the exhaustion (2 hours of sleep per day can be ruff) and planning
failures, joy and amazement on how well mn8 performs. It does what it
has to do and I does it easily with grace, better than I expected when
I designed it.
This
is almost true about HyperPad to, we managed to make it a nice
application despite the fact that is Java/Swing based one, the skins
are nice and the antialiasing is a blessing under Linux, still is slow
and huge memory consumer. Also being base on the HTML component from
Swing gave us lot's of head aches. It's a shitty component. Some HTML
code do render, some render badly and most just crash it. It was an
experiment anyway. However, this week the idea of doing the same thing
but in Mozilla, with all the lessons learned from HyperPad didn't gave
me peace. Looking around through some documentation made me realize
that it would be a lot easier to implement than HyperPad was. Just
imagine an Mozilla (browser, mail client) mn8 aware, that would rock.
December 28th, 2001
This is only a test. Actually this entry was posted by mn8,
Have fun ! BTW the script has only two lines
December 21st, 2001
If I look at the mn8 cvs commits, I end up (again) at the conclusion
that this was yet another unproductive week, half the number of
commits than last week. Hmm, this is something very hard to believe.
"mn8" is working more than ever, everything is on it's way happily
doing as planned every feature I was afraid of seems to work. This
should be the time to frenetically code for the last 100 matters and
still ... Maybe is just a matter of discipline?
Finally DataStore seems to get on frozen status, no new bugs
discovered so Crow and Atech are 100% procent on "mn8". There is only
one trick issue to be solved around the net centered part. It is very
important and decisive for "mn8" and is about integrating the net
part with the query language in an transparent way. In this way you
could do an each query from an URL and the from command would get the
query, select only the variable that can be transformed in a protocol
specific query (HTTP and HTML pages, beep and SEP queries, file and
filtering, ...) and filter out the documents before being filtered by
the where clause. If this doesn't work (but it will) we have serious
problems, you want to work on a couple of documents from an SEP
subtree and that would mean getting all the documents from the
subtree and filtering them, that is a waste of bandwidth and
processing power. This is what Atech is doing now.
Crow was busy doing some word wrapping and is working on stripping out
text from HTML pages. This could prove usefull to convert them to XML
and also to get some result formated in HTML and send them by email.
"HyperPad" is quite usable and stable now, Borzy still have a few bugs
to crash, but it looks and works quite decently, for an Java
application
Got a funny idea last week! "mn8" doesn't have too many user
interaction possibilities right now, and I don't think the usual ones
(button, text field, ...) have to be directly implemented, but,
concepts could be developed to emulate XForms. Now, having the
concepts for some basic XForms widgets, someone could easily write
a requested interface to the respective concept. Getting a simple
output from the wrapper concept (the one which produce the desired
interface to the concept, just like in MVC) to an external program
which know how to do the rendering on it and to output the resulted
XML to the initial concept and whoala you have the much wanted user
interaction.
The good parts ? First you are not forced to an Java based GUI
application to get the interaction, there are and will be some native
XForms implementations. Second but also important you could provide
a web based form starting from an XForms XML and a nice style sheet
:). Heh you could even have a CLI or a fake user interaction this
way. I can't wayt to get there, but this will be lateter after the
basic "mn8" will work, in a second phase.
November 4th, 2001
mn8: O God, I'm running so late, like never before. I barely think or
do anything else, yet still progress is so slow. The real problem is
that designing an OO interpreter is not so trivial. All the time I have
to come back to revise some design flows. I think that is called
refactoring
. At least I do it!
Spent the whole weekend working like a crazy to refactor a few
things instead of adding functionality, which means four more days of
delay. But I had to do it, it was just not looking and functioning
right. This was also the first time (I remember anyway) of hating Java.
I just don't understand why they did the static
behave the way it does during inheritance. At the end had to use the
Singleton pattern, it works but I'm still not very happy. I will leave
it as it is anyway, can't afford and don't think there is other
solution.
Being so late and still having to work on it, always makes me think
if I'm not like the cowboy programmer in the project management
examples. But mn8 is (some thing which never stops amaze me) working
as it was planned, more ready and more complete every day. But as I
look around me, I don't really see people doing as radical and as much
refactoring as me, and this worries me. Is that possible that the
design was right from the first time, I don't think so, there is no
such thing. I'm afraid that the others rather patch things instead of
doing refactoring.
This time being late had some benefits too. DataStore got a alpha but released Avalon (finally we are not going to release it with a CVS version of Avalon),
lot's of bug fixes, and a brand new SEP interpreter plus a more
stabilized XML-RPC server, and a full blown PHP/XML-RPC example. Yep it
works great. Crow is working on some small Java tools to let us
transforms mails from mbox format in XML and then to feed them to
DataStore. Will need them latter anyway, plus that is a good way of
testing DataStore.
Atech did the BEEP
handler so now you can open an URLConnection to a beep://xxx URL and it
will work, still you have to know what to talk over the connection, but
at least will allow mn8 to open url's transparently. Now he works on
the XML-RPC handler. Let's see how that works out.
A, not to forget about "HyperPad". It got a pair of skin handlers
so you can have skins in it (doesn't really work well, but don't think
is our fault). It amazes me how well the new Linux Java works. It has
better font rendering than the IBM one, and definitely is faster than
under Windows 2000. It wasn't always like that. Linux rulez!
Thank's to neurogato for pointing out that: Alan's code crew text is actually lyrics to the tune of Motorhead's "(We Are) The Road Crew",
yes indeed fits beautifully. BTW, if we are at the SmoothWall chapter it just happent last week to replace an old router based on LRP to a firewall running SmoothWall,
it took us about two hours but only because, we went for the
installation first and then to read the manuals, just like any (in)sane
person would do. Great piece of software!
October 9th, 2001