Update: So I’ve now got things set-up such that there are several default/built-in collections, and for now have updated the client-side XSLT to access the APP service document @ /service/pub/, access each of the related Atom feed-based collections, and create a simple report that outputs the detailed info for each collection, and if there are any entries (which by default, there is not), will iterate over each entry and output a report of each.

A couple of screen shots to help warm each of your AtomPub-enabled hearts,

Xameleon.Amplee.ClickOnce.F.png

Xameleon.Amplee.OSX-update.png

I also spent some time and quickly added an AtomProvider class to the DynamicWebServiceHelpers project for IronPython provided by Microsoft such that you could load collection feeds served by by Amplee from the IP console app. Take a look at the rss.py sample provided with this same sample project to gain a feel for how to use it.

Oh, I’ve checked the updated code into SVN, and updated the ClickOnce app as well. For more detail (URI’s, etc.), please see the end of this post.

Tomorrow I will be adding in the ability to add/update/delete entries in each collection to then take these entries and mash them up with with any external web feed, outputting the result in a reusable ModuleT to be rendered on any system which supports ModuleT (At present time AIM Pages as well as the built in capabilities I will be adding to the Xameleon code base to render them locally.) If you take a look at the flickr.py or the amazon.py from the same DWSH project, it should become pretty obvious how the combination of IronPython, Amplee, AtomicXML, ModuleT, and LiveClipboard will enable some pretty amazing mashup capabilities that bring together REST, WS-*, APP, and/or any given Atom/RSS web feed, combining them together in any way you can imagine, and making them reusable and shareable with nothing more than a simple copy/paste of the LiveClipboard scissor icon.

Fun times ahead, but for now, however: Sleep ;-)

Bye… :D

Update: via Sylvain,

To people thinking “well doh! there is nothing exciting there on his screenshot”… I can tell you that you will soon see that it ain’t nothing. As Dave says the code that runs locally on your machine is an AtomPub instance and therefore in Python but running within IronPython and thus interfacing with the entire .NET framework.

There is a lot more behind the scene that will make this apparently dull screenshot into something very refreshing :)

[Original Post]

IP+Mono+Xameleon+Amplee+OSX.png

NOTE: The above represents three things,

1) A screenshot of the Xameleon Personal Web Communication Platform running via Mono on top of OSX.
2) That I’ve been able to *FINALLY* take the time to verify that, in fact, this same mentioned application is 100% portable/cross-platform (Sylvain and I have been testing on both Windows and Linux as we’ve been moving forward, but this is the first attempt to verify that it worked on OSX as well)
3) Proof that God doesn’t hate me as much as I was 100% convinced that He did.

So the reason I say *FINALLY* and the reason I was convinced that, in fact, God truly did hate me was that I’ve been running into one unforeseen obstacle after another in the quest to merge all the wonderfulness of IronPython, CherryPy, and Amplee together with the AtomicXML code base to form a cross-platform client-side personal web communication platform like none other. From getting things to run just peachy on Linux, but returning obscure error messages on Windows, to RAM usage running upwards of 150 megs just to get the application started (It’s now below 50 and stays below 50 under heavy load), to the server locking up and refusing to take any requests (that was the latest Baby’s Mama Drama episode we were faced with), to you name it, we’ve run into it. Thanks be to Sylvain for coming to the rescue each and every time and as a result, keeping me from ripping each and every hair out of my head over the past week+ worth of frustration. :)

So,

Today is a wonderful day, as with a full head of steam in me (I finished this off at 5am this morning, but was too tired to even blog about it (which if you know my blogging habits, is obviously saying a lot ;-)), I can now move forward with getting the first demo of merging the Atom Publishing Protocol, ModuleT, and LiveClipboard to create a browser-based web feed mashup tool that runs locally on your machine.

While the demo itself still needs to be integrated and polished, you can access the application in two formats,

- ClickOnce (must access this link on Windows inside of Internet Explorer, or from within Firefox if you have the FFClickOnce plugin installed)
- Directly from its GoogleCode home via Subversion.

I’ll get this all packaged into both an archived download (zip, tarball, dmg) as well as an MSI installation once I have the rest of the mentioned demo integrated, polished up, and ready to begin playing with.

NOTE: To get the application in its present format to work properly,

On All: If not already installed, either the .NET 2.0 platform (Windows) or Mono 1.2.3+ (Windows, Linux, Mac, etc.) is required.

On Windows: From an SVN checkout: double-click start.cphttpserver.bat; From ClickOnce: Install the ClickOnce app;
On Linux, OSX: Checkout from/with SVN; From the commandline: ./start.cphttpserver.sh

For all of the above: From the IronPython commandline,


>>> from cherrypyserver import run, shutdown
[ .. bunch of output .. ]
>>> run()

Oh, and this same demo is what has been planned for the last two weeks worth of OpenSource XML Weekly roundup posts, the second being now a day late, the first a week+1 day late. My apologies for the holdup! While I hope to have it ready in the next few hours, based on previous experience, I’d best not make such a commitment until such time as it’s actually complete. So, until that moment arrives,

Enjoy your Saturday!

Update: Just realized that, as would be expected, the server will automatically startup (though you may run into some firewall issues, and if yes, you may find a need to restart the app once you have given clearance to port 9999 for the application) if you run either cp.httpserver.bat or .sh directly. The ClickOnce app, for now anyway, requires you start it as outlined above.

To then access the locally running web server,

http://localhost:9999/

To gain access to the APP service doc,

http://localhost:9999/service/pub/

To gain access to the pre-set “My Music” collection,

http://localhost:9999/music/