Archive for June, 2009

Java update for Leopard

Posted: June 18, 2009 in Apple, IT/Dev
Tags: , , ,

A new update to Java 6, 5 and 1.4.2 is available for Leopard (Java 6 however only supports Intel macs). The updated versions are then 1.6.0_13, 1.5.0_19, and 1.4.2_21.

VSL presents Vienna Imperial, a Bosendorder Imperial 290-755 piano library that includes 500 Gb of samples (100 velocity levels / 1200 samples per note – includes multiple length release trails) ! The samples (24 bits/44,1 Khz) are compressed at install time (lossless) to only require 50 Gb. A new player is provided (features a convolution reverb). An Intel Core Duo mac with Leopard is required, as well as 1,5 Gb available ram. Audio demos are available. It is priced 875$.

Yamaha S90 XS / S70 XS

Posted: June 18, 2009 in Audio
Tags: , , , ,

Yamaha presented the S90 and S70 XS, evolutions of the S90, with 88 keys (S90 XS) or 76 keys (S70 XS). They use the same audio engine as the Motif XS, and include 142Mb additional new piano samples from a Yamaha S6 (456 Mb total rom).

A new version of CP2JavaWS is available at sourceforge :

Note : now uses json2lib stringify and parse methods from latest Cappuccino main branch (and future 0.71 version). Then it does not work for version 0.7 (or you should replace these methods manually by these from CPValue). These two new methods should lead to general better performance.

– Modified server-side demo HabilitationServiceImpl to return true for the 
genericDAOService methods.

– CP2JavaWSEndpoint init had a bug with testing presence of sameDomain 
argument : replaced if(aSameDomain) with if (aSameDomain!=nil).

– CP2JavaWSTableViewDelegate : in sendSynchRequest, added the test for 
sameDomain (was ok for sendAsynchRequest) to use JSONP mode if not same 

– Modified hibernate config .hbm file to use assigned generator for the id, as AppEngine does not provides the InetAddress class.
However Hibernate’s SessionFactoryImpl still owns a static field of type UUIDHexGenerator that is always initialized, and that extends AbstractUUIDGenerator, whose uses InetAddress in its static init part.
Then had to redefine AbstractUUIDGenerator (included in same original package name in the demo project’s src folder) : when deploying to AppEngine we have to comment the line that uses InetAddress and uncomment the line that uses a random generated address (based on JUG project, also licenced under LGPL).

A working demo is now available on AppEngine (same code as the included webapp example except the endpoint’s url and use of the random generated address in the redefined AbstractUUIDGenerator class) :

(tested on Safari 4 and Firefox 3.0.x. Is ways faster on Safari, however performance should be improved with upcoming Firefox 3.5 release).

A new version of CP2JavaWS is available at sourceforge :

Note : now uses json2lib stringify and parse methods from latest Cappuccino main branch (and future 0.71 version). Then it does not work for version 0.7 (or you should replace these methods manually by these from CPValue).
These two new methods should lead to general better performance.

– fixed a cache problem : now if an asynchronous request was pending before a cache fault, its return is ignored (as the state isn’t the same as originally expected after a cache fault).

– the sorting code now works properly (as soon as headers and CPSortDescriptors are added to CPTableView). It can still be tested by modifying the init value for currentSortDescriptorsStr in CP2JavaWSTableViewDelegate (see commented code). The reference is now the position in the table, and limit(first, length) requests are used.

– added a new generic service, GenericMasterDetailDAOService, that manages retrieving of elements for any CP class, using Hibernate. It then avoids having to define a DAO service (the previous mode is still available, for custom management or non-database datastores).

To use the new mode, pass the table elements CP class name when creating the CP2JavaWSTableViewDelegate, instead size and read method names (that are then generic).

To follow first thoughts about Google Wave, here are more technical details and reviews :

The key foundation technologies to Google Wave are (see also details in original article The Secret Sauce Behind Google Wave) :
– GWT Ajax library, which not only powers complex interactions on a browser, but also provides a reasonably tuned rendering for small form-factor mobile devices, such as Android and iPhone
– XMPP protocol that provides a foundation for the Wave Federation Protocol
– the real-time keystroke-by-keystroke communication pioneered several years ago in Google Suggest, and now in production in high-scalability deployment the AppEngine cloud computing platform on which are hosted the Robot extensions to Wave
– the Big Table data persistence mechanism that powers Google’s implementation of a Wave server (something which is not required by the spec, but which facilitates developer productivity and production scalability)

We can also find an explanation of “operational transformation theory (OT)”.

The 3 protocols and 2 APIs behind Google Wave (see the whole article, Wave Protocol Thoughts) are :
– Federation (XMPP)
– The robot protocol (JSONRPC)
– The gadget API (OpenSocial)
– The wave embed API (Javascript)
– The client-server protocol (As defined by GWT)

We can also read useful informations in comments :
“Actually, the Gadget spec on the Wave docs site specifically notes that it does not support the OpenSocial APIs. They have their own API that mirrors some of the OpenSocial functions.”

“Waves are containers for Wavelets. Wavelets are containers for Blips. Blips have content that are XML. So we have XML tunneled over JSON tunneled over HTTP POST”
However we also read “Waves are XML and can be served over XMPP.”

“My understanding is that XMPP is for federation of servers, not for robots.”

“XMPP is much better than HTTP for client initiated interactions, particularly for ones behind a NAT”

” I don’t really understand why they don’t base all three of their protocols on XMPP… I suppose you would need something like HTML5 WebSockets to make this work cleanly with a browser-based client.”
” I would love there to be a standard API (much like DOM) for browsers to adopt that manages XMPP communications as a parallel to XHR. Leave HTTP for what it is good at, and do persistent connections another way.”

“do you know if you have to use GWT to use parts of Wave?”
“No, it is not required at all.

Then we can use a Cappuccino client, and HTML5 WebSockets seem the future to replace all these mixed protocols.

iPhone Flashback : price drop

Posted: June 6, 2009 in Games

Price of iPhone’s Flashback dropped by 2$ at the AppStore, to 2,99$ (from 4,99$).