I kind of gave up on posting benchmarks on the web but I just found a post on the Vert.x blog with a benchmark that blew node.js out of the water so I just did a quick run of those benchmarks and bottom line is I got ~ 60K/s using 4 vert.x instances and ~ 8K/s using 4 node.js processes.
I also ran vert.x directly using java (got the command line by looking at ps aux | grep java) in order to pass some JVM flags. Since I'm using a 64 bit OS I believe -server is on by default so I just experimented with -Xmx128m to reduce memory usage.
If you call this before defining you own getter you get "undefined" but after defining the getter it returns a function. This way you can see if they tampered with the getter.
This is mostly a reference for myself but I though it might be useful for someone...
The idea is to use JBoss Portal's authentication and authorization to control access to Pentaho. We have a legacy project and I won't be migrating to GateIn soon, although I have Pentaho working in GateIn (if you're interested get in touch with me).
I'm using Pentaho 3.7 which uses Spring Security so it is really flexible and makes it easier to integrate with custom authentication/authorization solutions.
First, thanks to this post, we'll move the portal's application policy to the server's root so it applies to all our webapps:
server/default/conf/login-config.xml :
<application-policyname='portal'><authentication><login-modulecode='org.jboss.portal.identity.auth.IdentityLoginModule'flag='required'><module-optionname='unauthenticatedIdentity'>guest</module-option><module-optionname='userModuleJNDIName'>java:/portal/UserModule</module-option><module-optionname='roleModuleJNDIName'>java:/portal/RoleModule</module-option><module-optionname='userProfileModuleJNDIName'>java:/portal/UserProfileModule</module-option><module-optionname='membershipModuleJNDIName'>java:/portal/MembershipModule</module-option><module-optionname='additionalRole'>Authenticated</module-option><module-optionname='password-stacking'>useFirstPass</module-option></login-module><login-modulecode ='org.jboss.portal.identity.auth.DBIdentityLoginModule'flag='sufficient'><module-optionname='dsJndiName'>java:/PortalDS</module-option><module-optionname='principalsQuery'>SELECT jbp_password FROM jbp_users WHERE jbp_uname=?</module-option><module-optionname='rolesQuery'>
SELECT jbp_roles.jbp_name, 'Roles'
FROM jbp_role_membership
INNER JOIN jbp_roles ON jbp_role_membership.jbp_rid = jbp_roles.jbp_rid
INNER JOIN jbp_users ON jbp_role_membership.jbp_uid = jbp_users.jbp_uid
WHERE jbp_users.jbp_uname=?
</module-option><module-optionname='hashAlgorithm'>MD5</module-option><module-optionname='hashEncoding'>HEX</module-option><module-optionname='additionalRole'>Authenticated</module-option></login-module></authentication></application-policy>
Now, add the relevant security rolet to pentaho's webapp. This will be used by our preauth filter to get the roles of the Principal. We could probably create our own roles retriever but I'm just using a WebXmlMappableAttributesRetriever
in my jboss/server/default/deploy/jboss-portal.sar/portal-server.war/WEB-INF/web.xml. So any user which is logged in gets the Authenticated role which, fortunatelly, maps nicely to the roles in Pentaho.
We can create new roles easy, just add the, to the security roles in pentaho's WEB-INF since the role mappes just goes through these and figures out if the user has that role.
JAAS
I will probably also try to get direct login to Pentaho working with JAAS so these are a couple of notes I've got on that:
When using JAAS we'll be performing the queries to java:/PortalDS and since we have different Hibernate versions we get into trouble. I haven't done much work regarding this issue but changing the libs in the JBoss server should work.
Also a couple of issues with the query AST might come up so use:
Emscripten is an LLVM-to-JavaScript compiler. It takes LLVM bitcode (which can be generated from C/C , using llvm-gcc or clang, or any other language that can be converted into LLVM) and compiles that into JavaScript, which can be run on the web (or anywhere else JavaScript can run).
Demos:
Python - CPython compiled to JavaScript. Note: Currently broken in Firefox 4 (may crash your browser)
Bullet physics - The Bullet physics engine, combined with WebGL rendering
Ray tracing - A simple C ray tracer, rendering to a canvas element
We, at inEvo, were fortunate to be selected by Notion Ink to be part of the Early Access Program Phase 2 back in late November 2010. We made a commitment to you to not disclose any information about our selection, the process involved and other related details with anyone. As such we've refrained to posting comments in both our and your blogs. Expectations were high as we'd be getting access to the Software Development Kit in the 1st Week of December, receiving a Customized Sample Device by the 3rd week of December and also getting a URL and other details for booking our EAP samples, with a little customization which you could do according to our needs. On December 9th we read in your blog (thanks for the heads up) that preorders would be available from 00:00 to 06:00 IST. So we got in touch with you in order to get the URL beforehand. All went as expected and you quickly replied us only 2 days later, on December 12th, that we could just use the pre-order link to place our orders, like everyone else. Since we got this very personalized message, despite knowing that all the PixelQ equiped units - which is what we wanted - were already sold out ,we promptly replied to you asking for 2 Notion Ink's with the Pixel Qi screen and WiFi. It's been two months and still nothing... We're now on 2011 and only a couple of weeks from the release of several Honeycomb based tablets ( well, at least one ) and would like to thank you for preventing us from jumping too soon and making a wrong call regarding our tablet of choice. Notion Ink set apart from the competition thanks to the transparency of the development process and the friendly community around it. Had we known better we wouldn't have applied for the EAP and would just have commented like there was no tomorrow in your posts. The lesson was learnt!
Sammy is a tiny javascript framework built on top of jQuery. It’s RESTful Evented JavaScript. Not only does it allow you to respond to specific URLs, but utilizing the URL hash (#) you can create single page applications that still respond to the back button in your browser (ala Gmail).
This article from the Economist is a must for all involved in academic work. With sentences like "universities have discovered that PhD students are cheap, highly motivated and disposable labour" or "Writing lab reports, giving academic presentations and conducting six-month literature reviews can be surprisingly unhelpful in a world where technical knowledge has to be assimilated quickly and presented simply to a wide audience" critics compare research doctorates to Ponzi or pyramid schemes
Lift is a fabulous stateful web framework written in Scala. These are seven of the things that make it stand out from the crowd (besides being written in Scala :p) :
Spark is a MapReduce-like cluster computing framework written in Scala and running on top of the Mesoscluster manager, it makes it easy to write parallel jobs.
Estimating Pi with Spark:
val spark = new SparkContext(<Mesos master>)
var count = spark.accumulator(0)
for (i <- spark.parallelize(1 to 10000, 10)) {
val x = Math.random * 2 - 1
val y = Math.random * 2 - 1
if (x*x + y*y < 1) count += 1
}
println("Pi is roughly " + 4 * count.value / 10000.0)
We've been playing with Scala + Akka for a while and Tiago had too much fun with actors and STM so he put together Travel Budget.
Travel Budget is a web application for discovering travel possibilities. It works with a budget and a time-frame to maximize travelling tours and options.
It goes through tens of millions of possible solutions and gives you those that are within your budget and other constraints.
We hope you like it. Feel free to send us your comments/suggestions.
I was wondering if there were any decent benchmarks of the V8 Javascript engine and I found this:
http://shootout.alioth.debian.org/u32/javascript.php Does this mean Javascript is one of the baskets we should put our eggs in, now that Apache has left the JCP and we don't know what Oracle has in store for Java ? I've been toying with the idea of having a stateful web framework written in Javascript. Imagine Lift but written in Javascript. A view first approach where the snippets use jQuery selectors to bind to the XHTML nodes and where the framework "magically" divides the function calls into server/client code (it's all javascript isn't it). Wouldn't it be nice to be able to do:
function myForm() {
$("#button").onclick = function () {
alert("You clicked on a button ... now i'll work my magic ;)"); // This is client side stuff so it goes with the final page
// Here we must create a server call
fs.readFile('/etc/passwd', function (err, data) {
if (!err)
$("#result").append(data); // And back to the client
});
}
}
If you look at Lift they're pretty close to this but they use a JavaScript DSL which I'm not really fond of. I really think this could be pulled off and what I feel is the best thing about the concept is the "magical" division of server/client code. We could make it explicit initially but it should be like a JIT for the web where the optimizations are done in runtime with clever distribution of the load between the server and its clients.
The memory usage is analyzed with : pmap $PID | tail -1 >> mem.txt; SLEEP 0.001
Req/s
Mem
Go
9428.90
~18.5M
NodeJS
5775.84
~646M
Java(Netty)
7086.34
~2 434M
(No flags)
"
6931.62
~512M
(-server -Xmx128m -XX:+UseConcMarkSweepGC)
"
9682.42
~577M
(after a couple of runs for JIT warmup )
Conclusion ?
The mem test takes into account all the libraries loaded by the process as this seemed to be the fairest comparison.
The Java version might be doing a bit more than the the others since it was an experience I had here... Without explicit JVM flags it gets very memory hungry and I bet that a -server flag without memory restrictions would be a huge mem hog. Fortunately the last tests show that with a memory usage similar to NodeJS's it does a whole lot better (I'm happy cause I can keep using Scala instead of Javascript :P)
NodeJS has a lot of hype around it and it definetly deserves it but without the web workers support it is not capable of taking full advantage of several cores and you'd have to go with a local pool and a load balancer in front of it. It's memory usage is not the best.
Finally Google's Go is surely the big winner here. With very little memory usage and good performance it is the undisputed champion. Also, I'm using the 6g compiler but have read somewhere that gccgo could bring a 50% improvement. The language's not great but it sure beats C, C++ and even Java in my book ;)
I've neglected my blog for a while so I though I'd share my latest experiments with running Scala on Android. In order to try a couple of things with Scala on Android I'm creating an Activity which basically trying to consume a WebService and display the results in a List.Please keep in mind that I'm only learning Scala now so I'll gladly get any comments and/or suggestions regarding my solutions.These are the problems I've found :
PROBLEM #1
The scala-library.jar is too big to dex so you have to use ProGuard to keep things small. Try making it work properly with maven and you'll have issues with getting all the plugins working in the right order!
SOLUTION #1
Ditch maven! "But having it manage my dependencies is so cool..." I hear you say.. well let's use Ivy:
Just use one of the numerous ANT build scripts for Android and add the targets for Ivy and ProGuard and the scala repository to your ivysettings.xml:
As you can see now doInBackground gets a single argument... which in my current implementation is a Function =)I've created an AsyncTask class in scala which extends MyAsyncTask and gets a Function as it's constructor arg :
With this I can simply have regular functions and just call doInBackground:
val getChannelList = () => {
for( c <- EPG.getChannelList \\ "Channel" ) {
Log.v("getChannelList", c \ "Name" text )
}
override def onCreate(savedInstanceState: Bundle) {
super.onCreate(savedInstanceState)
setContentView(R.layout.main)
getChannelList.doInBackground
}
I hope this helps some of you get started with Scala on Android. I'll be working on the layout stuff trying to get ListView and the Adapters to work properly.P.S: I'm using the great DataBinder Dispatch library for Scala to call the service through REST so my Service object is something like:
object EPG {
val req = :/("services.sapo.pt") / "EPG"
def getChannelList=Http(req / "GetChannelList" >> as_xml)
}
where the as_xml function is defined in my XmlParser class as:
def as_xml(res:InputStream) = XmlParser.load(res);
Well, I just started taking a look at Sprouts to manage my Flex builds by I didn't want to download the Flex SDK again!
As soon as I saw that Sprouts was trying to download the flex_sdk_3.zip file I just Ctrl-C and did the following:
This just fools Sprouts which is advised against in the google groups discussions but saves my some time :P
I did a similar process for the Flash Player 10 which I had downloaded but you could also use the one that came with the Flex SDK. Basically you need to :
I just hacked together a simple plugin for RoR apps in order to show a simple model diagram. I've been a fan of RailRoad since the beginning, it generates simple dot and neato diagrams from your rails application. Now I just found out about the cool http://yuml.me beta and decided to use RailRoad to create yUML diagrams.
I created a GitHub project so you can look at the code and make whatever changes you want. The project page has more info on the plugin. I was also thinking of adding a Shoes app to create the diagrams but for now I just use it to display the diagram. Please keep in mind that the source's all messy and is far from finished, perhaps someone else would like to make it a whole lot better ;)
For a project we're currently working on the need for accent insensitive search came up. I googled for a couple of solutions, most of which required applying a translate() to the records or using to_ascii() in order to replace accented characters with plain ones. For me this should be a considerable performance hit as the DB had to apply the function to every record before performing the query. I decided to go with a case insensitive using the operator '~*'.
Basically, for each character which has accented variations I introduce an expression (ex: a -> (a|à|á|â|ã) resulting in a query like :
select * from my_table where name ~* '(a|à|á|â|ã)ndr(e|é|è|ê)'
This will search for the name "André" in the database. Since I'm using ruby I created a new method in the String class called accent_insensitive_regexp:
class String
@@ACCENT_INSENSITIVE_REGEXES=[ "(a|á|à|â|ã)","(e|é|è|ê)","(i|í|ì)","(o|ó|ò|ô|õ)","(u|ú|ù)","(c|ç)" ]
def accent_insensitive_regexp
res=self.@@ACCENT_INSENSITIVE_REGEXES.each {|exp| res.gsub! Regexp.new(exp), exp }
res
end
end
Now i can my case and accent insensitive search working by using something like: User.find :all, :conditions=>[" name ~* '?' ",name.downcase.accent_insensitive_regexp] Those who've tried to use the downcase and upcase methods in Rails will notice that this will not work properly since these methods to not deal with the accented characters. For dealing with that issue I changed those two methods in the String class to:
alias_method :old_upcase, :upcase
alias_method :old_downcase, :downcase
@@DOWNCASE_ACCENT_CHARS="çàáèéìíòóùúâêôãõ"
@@UPCASE_ACCENT_CHARS="ÇÀÁÈÉÌÍÒÓÙÚÂÊÔÃÕ"
def upcase
self.old_upcase.tr(@@DOWNCASE_ACCENT_CHARS,@@UPCASE_ACCENT_CHARS)
end
def downcase
self.old_downcase.tr(@@UPCASE_ACCENT_CHARS,@@DOWNCASE_ACCENT_CHARS)
end
And there you have it. I quick and dirty hack to get this stuff to work properly in RoR. Please notice I haven't spent much time cleaning the code I just though this could get someone with similar problems started.
Well, I've been following JavaFx for a long time but I've only started trying out yesterday. I need to create some GUI for testing some libraries I've been working on and I felt this was the right time to try out JavaFX.
The first challenge was to get the JavaFX Preview SDK working on my Ubuntu machine. After googling around I found that the MacOSX version of the SDK works on Linux so I downloaded it from here. Then I got the Netbeans JavaFX Plugin from the JavaFX_NB_Daily project. After installing the nbms I decided to switch the SDK provided by the plugin with the one I downloaded from Sun's JavaFX page. For that I went into my netbeans directory "~/netbeans6-1" onto the "javafx" directory, renamed the sdk dir and unziped sun's sdk. This step is probably not necessary but I'd like to make sure I was working with Sun's JavaFX SDK. Well, with everything setup I started netbeans, created a project with the sample weather app and it ran just fine :) The next step was to get maven to compile a JavaFX project. I normally have several dependencies for each new project and I've really come to appreciate Maven for dealing with these for me. Again I googled for it and found this: http://m2-javafxc.sourceforge.net/. Well it did what I needed, just had to figure out how to use my javafxc compiler. This is what I came up with in the end:
Now I can store my code in src/main/javafx and just open my project with netbeans (since it reads the pom.xml file). I'm using the external maven since I've had a few problems with the internal version. I hope this helps some of you. I'm really starting to appreciate JavaFx and can't wait to get the Media SDK and the SG3D to really come up with something interesting ;)
We just uploaded our first app to Google Appengine's servers. It's called YouDIG - You Draw I Guess - and we believe it to be a fun game to play online. Being a word based game we had to have an easy way to upload new Riddles to the online app. So, I created a very simple bulkload.py which just calls the ImportCSV function from the SDK. The problem was that it doesn't work with UTF-8 files! Here's what I did (I'm still a Python newbie, so feel free to send me your comments/suggestions): 1 - Edited the google/appengine/tools/bulkload_client.py
this basically unicodes everything and encodes it as UTF-8 before sending the POST request. 2 - Created my Loaders (similar to the ones described in the docs):
This is a simple loader that extends the bulkload.Loader. The "Language.get_key_by_code" and "Category.get_key_by_sys_name" are static functions that allow me to get the entity based on a string. This way I can import Languages, Categories and Riddles and have the relations set using simple string keys (since I don't know and entity's key before it's saved!). The main difference from the standard bulkloading is in the main method. The "mybulkload" which is a class extending "BulkLoad" and allows to receive UTF-8 CSV POST data. 3 - The mybulkload package:
def utf_8_encoder(unicode_csv_data):
for line in unicode_csv_data:
yield line.encode('utf-8')
class MyBulkLoad(BulkLoad):
""" A handler for bulk load requests.
"""
def Load(self, kind, data):
Validate(kind, basestring)
Validate(data, basestring)
output = []
try:
loader = Loader.RegisteredLoaders()[kind]
except KeyError:
output.append('Error: no Loader defined for kind %s.' % kind)
return (httplib.BAD_REQUEST, ''.join(output))
buffer = StringIO.StringIO(data)
reader = csv.reader(utf_8_encoder(buffer), skipinitialspace=True)
entities = []
line_num = 1
for row in reader:
try:
output.append('\nLoading from line %d...' % line_num)
entities.extend(loader.CreateEntity([unicode(cell,'utf-8') for cell in row]))
output.append('done.')
except:
exc_info = sys.exc_info()
stacktrace = traceback.format_exception(*exc_info)
output.append('error:\n%s' % stacktrace)
return (httplib.BAD_REQUEST, ''.join(output))
line_num += 1
for entity in entities:
datastore.Put(entity)
return (httplib.OK, ''.join(output))
def main(*loaders):
"""Starts bulk upload.
Raises TypeError if not, at least one Loader instance is given.
Args:
loaders: One or more Loader instance.
"""
if not loaders:
raise TypeError('Expected at least one argument.')
for loader in loaders:
if not isinstance(loader, Loader):
raise TypeError('Expected a Loader instance; received %r' % loader)
application = webapp.WSGIApplication([('.*', MyBulkLoad)])
wsgiref.handlers.CGIHandler().run(application)
if __name__ == '__main__':
main()
i just copied this stuff from the __init.py__ in google/appengine/ext/bulkloa, added the utf8_encoder function and extended the Bulkload class overloading the Load method. Here what I used:
entities.extend(loader.CreateEntity([unicode(cell,'utf-8') for cell in row]))
to unicode everything before creating the entities. Perhaps there was an easier way but this is working for me so I hope this can help some of you. Next I'll write an entity eraser to bulk delete entities from the AppEngine's production servers...
I needed a simple Flickr gallery viewer to show user's photos but I knew I'd seen a couple of cool Papervision based viewers so I decided to search for one. I found FlickrFlow and downloaded the source code and started hacking my way through it. First I made the background white and reduced the reflection size, this just required me to fill the bitmap white and create a smaller gradient box for the reflection. Then I decided it made no sense to use the full size image to show only a smaller one, so I switched to the AS3 Flick API and used the GetSizes API call to get the URL for the "Small" sized image. This worked and now it is a lot faster than it used to be. Still, FlickrShow would first fetch all the images and only then start loading then into CoverFlow, so I changed this as well.... Finally, I chose to always select the middle image instead of having a fixed index for selection. There are still a couple of bugs to fix, mainly regarding mouse click events which sometimes don't work unless you first use your mouse wheel or keyboard... in the meantime here is a small sample which searches for images with the tag "Madeira Island".
Well, the Flash player requires a crossdomain.xml file to reside on every server you call for remote services.
We needed to display RSS feeds for user's blogs and we couldn't enforce every single blog provider to have a crossdomain file. The solution was to use a local proxy to perform requests on our behalf.
Common solutions use a server side script to fetch the contents but I didn't want to have yet another PHP, JAVA, Ruby, etc script laying around so I used Apache's mod_rewrite with a very simple rule:
RewriteEngine On
RewriteRule ^/my_rss_proxy/(.*) $1 [P]
Since we were already using Apache's proxies to forward request to my HAProxy I just added this simple rule and now we can use:
The growing bandwith has allowed developers to provide rich Web based user interfaces and thus bring together Web and Dektop applications.
You have Javascript with several new libraries sprouting almost everyday, this allows us to bring live to otherwise static HTML pages through manipulation of the DOM and using AJAX calls to get data from the server.
Nonetheless javascript depends on the browser's implementation and your source code is there for anyone to see. AJAX calls are pretty cool but XML is a major overhead with large messages and slow parsing.
Adobe has a huge browser penetration, close to 98% if i'm not mistaken. Most people dislike Flash and think it is only used by designers to create sexy and annoying banners. The truth is that Flash uses Mozilla's Tamarin VM for running ActionScript. Both Javascript and ActionScript are ECMAScript but with ActionScript you have the advantage that it get's compiled and your source code is not there for anyone to see (unless they disassemble it). Besides, to reproduce most of the functionality you get with Flash you need a lot of javascript libraries, especially if we're using Flex. Flex provides us a growing number of prebuild components and the UI is specified using MXML with offers a clear separation of controller and view. What's more upcoming versions of Flash will enable browsers to cache commonly used flash modules (like the Flex framework) so, you only download the library the first time you visit a site using Flex.
The AMF protocol, used by Flash is now Open and there is a reference implementation freely available. This binary protocol is a lot faster than using XML or JSON and it supports pushing information thus we don't need to have clients constantly pooling our server.
There are some more contenders in this RIA war, JavaFX and Silverlight.
JavaFX suffers, for now, from the same problems every JAVA applet has. It does not fit well in a page, it takes too long to load and there are still many people without JAVA. When JAVA offers an easier instalation and preloads in the OS's memory then we could have a serious alternative but for now.. well it is just not up to the challenge.
Silverlight has some cool ideas, it allows us to program in a myriad of languages since they share a common runtime, has hardware acceleration and, since it is from Microsoft will come preinstalled in Windows machines. Still, there is no real showcase (Microsoft is using it to build a part of their site now in beta), there have been a couple of releases which were incompatible with each other (you had to keep reinstalling the darn thing), and to get a development environment up and ready it took ages just to figure out the right one!
I really like the idea of having Desktop like applications on the Web but i'd also like to have them in my desktop. Most of these allows developing both for the Web and for the Desktop but Flash and Java might just have an edge on this one. Adobe AIR allows you to develop some pretty cool desktop apps and JAVA has been improving Swing with LaF.
To sum up, I like the fact that Javascript has been evolving at a fast pace but I still feel stranded by browser dependencies, I don't like to have the source code exposed and I just think that Adobe's offer is a better deal. ActionScript is a pretty decent language and the Flex framework offers us a lot of cool components. Add to that the AMF protocol with the Open Source Data Services and you have a very good solution for RIA development. What's more you have a couple of 3D libraries,Thermo's coming up ( pixel shaders ;) ) and we'll get hardware acceleration!
Nowadays tech junkies have a real problem.. there are just too many cool gadgets to carry around.
The convergence has started and I personally believe that the cell phone will become the "do it all" device of the future. We already have cell phones with decent cameras, PIM software and GPS. Add to this a good storage solution and you got everything you'll need on a daily basis.
The problem so far has been the platform. You've got Windows Mobile which has been around for a while, still it seems sluggish and is missing the "cool" factor many of us geeks miss... Nokia has the Maemo platform for the N800 which is pretty cool but there is no GSM support. Nokia also has the Symbian OS which allows us to develop in C and Python but it is not compatible with most other manufacturers. Java has been around for most mobile platforms and there are some pretty decent apps and games but you get the feeling that JAVA is not build right into the platform.. some phones even have a separate JAVA area for you to start your JAVA applications.
Apple has released the sexy iPhone and it is really appealling. Still, the SDK took long to come out and the platform remains too closed for any serious investment in it. Besides that, here in Europe we need 3,5G to have decent Internet access and the iPhone does not provide that.
Then, Google came up with Android. It's impressive... Google can generate quite a hype around a mobile platform for which there is no hardware yet! This seems to be the way to go.. this way when it arrives at the market there should be lots of cool free software around the web for it, especially with money being offered to the best apps!
Nonetheless Apple's iPhone still has the sex appeal that most phones only dream of having....
Adobe has been focusing on AIR, Thermo, etc.. they have come up with great technologies for Web and Desktop but delayed the Adobe Flash Lite. Personally I'm not very interested in a stripped down AS2 only Flash version... this could be because they're hopping the hardware will evolve to support the whole Flash runtime... The actionscript engine uses the TamarinVM so it should be ported to most of mainstreammobile platforms soon.
Well, this post is becoming too long, I just though i'd write here my 2 cents. I'll be keeping and eye on Google's Android and the iPhone.. wouldn't it be a beautiful mariage?
Lately I've been hacking some AS3 code. Just some miscelaneous experiments or AS ports from existing source code. I've tried the AS3 Box2D physics package, since i'm pretty fond of simple physics games or experiments, and I've also ported some of the CALI's code to AS. I've read about a project that aims to automatic code porting from C++ to AS3 so this could just be useless in a couple of weeks...
Nonetheless here goes what I've come up with in my free time. It's a very simple editor that recognizes lines, circles, rectangles and triangles (i still have to tune the rectangles and triangles) and also some simple commands like delete and wavy line. I've hooked up the lines and circles with the physics engine so they will fall as soon as their created. I still haven't found the time to do the same for the other shapes. You can also use the mouse to move circles and lines around the world. Try evoPhysics.
After a couple of months without posting to my previous Mephisto powered blog I decided it was time for a fresh start…
This is it! My WordPress powered blog… I’ll try to keep this one updated.