Posts filed under 'mn8'

After Release Status

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

DataStore and MN8 (ver. 0.7a) finally out!.

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

Quick Palm RSS Reader.

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.

Palm RSS Reader screen shot 0 Palm RSS Reader screen shot 1

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

Server side MN8

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

MN8

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

mn8 cgi’s and design

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

Daily Rumblings

Installed kde3 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.

hyperpad1 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.

hyperpad2This 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

mn8 Test

This is only a test. Actually this entry was posted by mn8, :)

Have fun ! BTW the script has only two lines ;)

December 21st, 2001

SpaceMapper Status

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

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


So, who is Remus?

Remus Pereni is a 32 years old free thinker, IT addict, who lives, works, and wonders about the meaning of life, relations, human nature, IT, technologies, clients, value and business from Satu Mare, Romania. More

Calendar

January 2009
M T W T F S S
« May    
 1234
567891011
12131415161718
19202122232425
262728293031  

Categories

Posts by Month

Feeds