Aug 23, 2010
..available on haxelib and head of git.
Main changes:
- API change! The ‘Stream’ class takes only one parameter now, a ‘Connection’ object … the JID of your account gets now passed into the Stream.open method.
- Server components require ‘JABBER_COMPONENT’ compiler flag
- TLS flash socketbridge for (browser) javascript
- TLS support for nodejs
- Dirty hacks for flash to be compatible with haXe 2.06 (issue172)
- Added a terminal tool to register client accounts by hand
- fixes and minor improvements
I’ve also created a repo at github to collect example usages and tests.
http://github.com/tong/hxmpp.examples
Aug 8, 2010
HXMPP updates
* Full adobe air2 support (including native, secure air2 socket connections).
* Added support for websocket connections (javascript only)
* Minor fixes
HXMPP.lop test implementation
The LOP stuff is in the HXMPP repo since months, this is just an example usage.
The application consists of a javascript villein (a anonymous XMPP client) living in the browser and a farm running on the nekoVM. The villein spawns hscript virtual machines on the farm, sends some script .. the farm computes it and sends back the result. Variables live as long until the VM gets killed by the villein.
OWL
A XMPP server running on nodejs.
The project is in a very early state but already doing basic internal instant messaging (no S2S). I am f* enjoying the development process, since i got a good overview on the XMPP protocol over the last couple of years (time goes by in ludicrous speed) while developing the client library and don’t have to read XMPP specs that much .. straight forward coding .. this will change when i get to the S2S stuff. brrr.
Of course written in haXe using the nodejs type signatures from blackdog and (currently) a redis backend.
This project accepts and encourages contributions!
Ping me: xmpp://tong@jabber.spektral.at
Tsunami
A small framework for navigating on websites without reloading using #s (hashes). This is forked from the serverside mtwin templo library.
Here is an example (src).
What sux is that webkit based browser destroy pending XHR requests on hash tag URL changes therefore it breaks BOSH connections -> fail! Firefox does it right.
Aug 5, 2010
ROAR, our public, XMPP powered media micro blog, broke the 1000th post barrier some days ago. My plan was to write a new version before that, but busy as (n)ever ..
The XMPP roboter seems to be pretty stable .. didn’t get down since months.
.. runs on nekoVM using a sqlite database.
You can add roar@jabber.spektral.at to your roster to post non-anonymously and directly from you jabber client. The bot accepts your presence subscription automagically. To post simply send a chat message .. your input gets interpreted line by line (most jabber clients can create new lines by hitting ctrl+enter).
Currently following input is supported:
- Image links (URL has to end with .png, .jpg or .gif)
- YouTube videos (simply copy URL from the browser bar)
- Vimeo videos (simply copy URL from the browser bar)
- Ogg audio files ( .ogg -> html5 audio tag)
- Ogv video files ( .ogv -> html5 video tag)
- and of course http links which get a-hrefd
http://roar.disktree.net
Jul 25, 2010
External classes for adobe air2
Fork of the adobe-air haxelib project to support runtime version 2 (javascript+flash).
Might not be 100% complete but enough for my needs right now.
Externals for the android scripting environment SL4A (formerly known as ASE)
Quick shot .. some dynamics where types are possible, but enough to vibrate )
http://code.google.com/p/android-scripting
HXTLS
Not really open source, just external haXe classes for a proprietary flash TLS library, but fully functional. Already added to HXMPP.
Wikileaks-in-realtime
HXMPP/Collecta powered website for updates on term ‘wikileaks‘.
Basically the same as haxe-in-realtime.
http://wikileaks.disktree.net/
Jun 3, 2010
Support our free open source projects by playing and spamming our latest flash game.
Enjoy! http://cnxs.disktree.net/

Feb 5, 2010

wife: light, me: noize, people: crazy
Feb 5, 2010
Latest experiments on disktrees opensource front …
- HXMPP.console
A themeable XMPP transfer console for HXMPPs browser targets (screenshot). Long live my eyes!
- HXMPP.test
Moved unit tests into a seperate repo and added some more tests.
- HXMPP SASL-MD5
SASL authentication using MD5 is finally working.
Uff, the bug was in the ‘removeNullDigits’ method of the base64 decoder; arrg, who would have thought it.
- HXMPP jingle
Added experimental jingle/RTMP support for flash.
Allows you to negotiate RTMP streams between jabber entities, aka: make video phone calls in the browser.
- SCM/Jabber roboter
A jabber bot for (presence based) source control repository update notifications. Just git support right now.
- WebSocket server
A simple, standalone, hx/neko websocket server, just for testing purposes.
- Google chrome extension external JS wrapper
..can be found in disktrees core library.
- Google chrome content script haXe remoting
haXe remoting for contentscript 2 website (and vice versa) communication.
- LOKI
Google chrome extension to add XMPP client functionality to the browser. Pretty useless implementation up to the point where it makes some sense ~#~#~
- hype-framework
Generated, external haXe classes for the (AS3) hype framework.
As far as i’ve stumbled cross the source code the framework feels pretty well organized, easy to use. Good for designers i think, but no plans to use it here right now.
Dec 10, 2009
A new version of ROAR, our public microblogging web app is now online.
Its a complete haXe/javascript rewrite using BOSH (no SWF bridge for the socket connection anymore).
Enjoy, http://roar.disktree.net
Dec 1, 2009
I have added a (async) haXe remoting remix to the HXMPP library using XMPP as transport, and created following example to test it:
[ HXR flash example ]
The app:
* embeds the same SWF twice in a HTML site
* the SWF logs into the jabber server with passed account information using SASL-MD5 authentication (password is hidden)
* creates an instance of the application
* create a haXe remoting host in context of the instance to listen for incoming calls.
* create a haXe remoting proxy in context of the instance for outgoing calls.
* on button click:
** creates random values for the next circle to add to the other entities canvas
** adds a circle to the remote entities canvas by calling a function on the proxy
A great benefit of HXR (haXe-remoting) over XMPP is that EVERY entitiy/target, also clients, can act as remote host. Which means i can call methods on a client from any other entity (a server or another client). Pretty cool for round based games and stuff.
Important thing missing is a access model for the remote host.
Currently every entity is allowed to call methods.
(Workaround would be be to add a IQ/HXR filter to block remaing packet collectors)
Source code of the app:
http://paste.disktree.net/82
Nov 29, 2009
Here is my haXe submission to the 99 bottles of beer song collection.
( The website holds a collection of the song ‘99 bottles of beer’ in 1311! programming languages. )
I got annoyed of a comment on the previous haXe version claiming that its twice as long as the COBOL version. So i thought it can be done better/shorter.
It builds the complete song/string before output, so i was able to do some performance measurements:
Run program 100 times:
neko: 0m0.618s
cpp: 0m1.106s
php: 0m2.292s
js (rhino): 0m41.954s
Run 1000 times in a loop (internal):
flash-standalone(10.0.32.18): 0m0.277s
flash-plugin(10.0.32.18,firefox3.5.5): 0m0.294s
php: 0m0.291s
js (rhino): 0m0.474s
neko: 0m0.529s
cpp: 0m8.793s
Oct 27, 2009
I’ve started to write a web based multiuser chat, intended to get used mainly by developers. Nothing massiv so far. Last feature i’ve just added: syntax highlight code in serveral languages, which might come in handy.

Give it a try
EDIT:
* Make sure your firewall does not block ports 843, 5222.
* User a HTML5/CSS3 enabled browser.
Oct 19, 2009
Since HXMPP supports BOSH connections (flash/js) it’s time to write a little setup instruction….
In my (local) case for apache2/openfire 3.6.4 on ubuntu 9.04.
What has to be done is to be able to connect your client to the BOSH adress of your jabber server. Default on openfire is http://localhost:7070/http-bind/
Your apache server doesn’t know about your jabber server, so you have to setup a proxy to forward requests:
http://localhost/jabber/ > http://localhost:7070/http-bind/
Here we go:
#Activate the mod_proxy apache module if required
sudo ln /etc/apache2/mods-available/proxy.load /etc/apache2/mods-enabled
#Add following line to proxy.load for loading the module
LoadModule proxy_http_module /usr/lib/apache2/modules/mod_proxy_http.so
#Add the proxy directive to the host settings in your http.conf
ProxyRequests Off
ProxyPass /jabber http://localhost:7070/http-bind/
ProxyPassReverse /jabber http://localhost:7070/http-bind/
ProxyPass /jabbers http://localhost:7443/http-bind/
ProxyPassReverse /jabbers http://localhost:7443/http-bind/
#Restart apache
sudo /etc/init.d/apache2 restart
Thats it!
Using HXMPP, you can now create a connection by passing in the path in the constructor, like:
var cnx = new BOSHConnection( “myjabberserver.net”, “127.0.0.1/jabber/” );
Oct 9, 2009
While adding support for wrapping media files into the according html5 tag (audio or video) to my realtime microblogging application at roar.disktree.net i discovered a nasty situation as follows:
How to know if a file with the ‘.ogg’ extension is video rather than audio from within javascript ?
Possible workarounds to distinguish (in case of my application):
- Read the file header serverside and save the result somewhere.
Ok, but requires extra work.
- Try to discover filetype from the ID3 tag.
Not save.
- Read the file header in flash (which is able to read data at byte level).
Ok for files served from same domain only.
Anyhow, no solution for javascript, so it would be good to agree on:
Name audio files ‘ogg’, video files ‘.ogv’ and tell everybody to do so!
Or am i overlooking something ?