Archive for September, 2009

MJ Style is now available at most iTunes Music Stores (appeared 12 hours ago in countries located in ahead timezones, and should since be displayed at European and American stores).

I discovered that when searching for Cjed using the upper-right search field, the displayed page lists songs in the wrong order. The reason seems that is lists all songs from all albums for the artist, and so the numbers don’t correspond to tracks numbers (and have then more to do with the order of songs’s database records). By clicking on the artist’s name/link on the left side (Artists area), the album’s songs list is ordered fine again (the same when clicking on the album’s name).

This is here for access to the Zimbalam player (that also provides a direct link to the iTunes Music Store). On mac, the Flash version used by the plugin seems to produce some artifacts at some samples start (ok on PC), however they play fine at iTunes Music Store.

Dion & Ben from Ajaxian going to Palm

Posted: September 28, 2009 in IT/Dev
Tags: , , , ,

The two founders of Ajaxian, Ben Galbraith and Dion Almaer (used to work at Mozilla Labs) finally were hired by Palm. At Dion’s blog we learn that with their new role as Director’s of the Palm Developer Relations team they will have the responsibility of the developer experience with Palm, and will be trying to create a rich connective tissue between the company and the Web developer community…
Dion just linked a previous article about his feel on Apple’s AppStore validation policy. However Ben was very harsh on his blog statements, (subtely ?) targeted towards Apple :

my enthusiasm for this amazing new world is tempered by some unfortunate decisions made by some of the players in this space. It seems that some view this revolution as a chance to seize power in downright Orwellian ways by constraining what we as developers can say, dictating what kinds of apps we can create, controlling how we distribute our apps, and placing all kinds of limits on what can do to our computing devices.

We all know that Palm Pre’s director, John Rubinstein, worked as Hardware Director at Apple before he left when the transition to Intel was announced (on a technical view – that is non commercial – I agree that the G5 from 2003 is still superior to latest Intel chips architecure wise – in these 6 years only manufacturing process did improved – soon 20nm), however all this doesn’t look completely FairPlay 🙂 Moreover this is bad, as the iPhone still uses non Intel processors (Samsung ARMs), and Apple buyed later PA Semi’s PPC derived processors company, that is likely to see the light in an upcoming Apple’s tablet mac.

We could find some interesting reactions to Ben’s post (I agree that Palm will have to change its mind when it will have to manage validating of thousands of applications – it is easier for them for now) :

What a bunch of bs. Will palm have no approval process for it’s apps? And where were you when iPhone had no SDK? Why didn’t you develop for iPhone safari then.
You are perfect socialistic idelogues. Apple innovates and you don’t like it. You would be more happier if moto razr were the market leader.

Sanctimony anyone?
I should point out that Apple allows anyone to create powerful web apps with guaranteed distribution. And with HTML 5 and offline storage you can pretty much do anything.
Talk to me when you guys have a real SDK.

I also agree with this other comment :

This technology advancement empowers people, which is great but it also gives more opportunity for a company/s to control what data, what applications etc. the user can access – this is simply wrong and something as advocates of an open web, we should also be against in platforms.

However I’m far more worried for now by Google’s power (see articles about Google automatically  scanning all books without having requested the authors/editors agreement, and trying later to provide money in order to not being pursued). And if you don’t agree, nobody will ever have a chance to read you, as your article could likely be  unreferenced in their search engine. Hopefully Microsoft is coming back, better ? 🙂

Congrats to both finally, and we can hope that their new job will help also for other communities. Moreover, as Palm is also using WebKit, all that is good.

A new video of Overgrowth (the sequel to Lugaru) is available at Wolfire’s Youtube section (it is named Trees in the Breeze and only shows landscape – however the sky rendering is stunning, very realistic). We can also read an interview of Wolfire about indie game and making marketing buzz.

At WebKit.org we can find an article about Page Cache, improvements that are worked on, and Load/Unload Event Handlers.

In Snow Leopard Apple replaced classic types/creators by the new UTI (Uniform Type Identifiers)technology in order to manages types and store those managed by applications. The naming scheme reminds Java’s pacakges one, and then starts with com.companyNamefor proprietary formats (or formats groups). The public prefix is used to define standard formats : public.rtf, public.xml, etc. An identifier can be associated to many old files extensions (for example public.html manages .html, .htm, .shtml, .shtm, and text/html MIME type).
Identifiers are hierarchically linked, however contrary to Java package they do not have to share the same prefix : then com.sun.java-source extends public.source-code, that extends public.plain-text, and then public.text, public.data, up to public.item.

Google Chrome Frame : HTML5 in IE

Posted: September 23, 2009 in IT/Dev
Tags: , , ,

Google presented Chrome Frame, a plugin for IE that allows to route HTML and javascript rendering management to WebKit and V8 (embedded in the plugin). However for it to be used the pages have to be modified (a meta tag has to be added). But we can suppose there will be few pages to modify initially.
It will allow to keep IE (no other choice in most of big companies), however installing a new plugin isn’t really faster than installing the full Chrome or Safari. Moreover, as the plugin manages rendering, previous reasons for using IE won’t be relevant anymore (except the need for ActiveX support, and if we consider the original IE engine will be used for most sites). This is then a transient solution, in order to deploy some HTML5 applications, waiting for Microsoft to catch up.

The Resolution Independance technology, introduced initially in MacOSX 10.4 and then slightly enhanced in Leopard, remained disabled by default since, due to controls overlapping concerns when upscaling (the UI scale factor can still be modified for a particular application using Quartz Debug tool). The fact is that, for the technology to be efficient, all image resources have to be replaced by vector ones. Such step has been worked on for Snow Leopard (that allows system size shrink and still 512 pixels icons display in the Finder). Global enabling in the system could then be added in a future update.

Apple provides a documentation on this technology, however it wasn’t updated yet since Snow Leopard release :

Mac OS X v10.4 introduced preliminary support for resolution independence, but the implementation was very limited and many visual errors occur. Mac OS X v10.5 adds further support and the implementation has been refined.

Most Cocoa applications, and Carbon applications that use compositing mode, should be capable of being resolution-independent when running on this release. However, resolution independence is still a developer-only feature in Mac OS X v10.5 and is not yet intended for end-user adoption.

Apple provides an article about programming with Grand Central Dispatch’s Blocks :

Block objects (informally, “blocks”) are an extension to C, as well as Objective-C and C++, that make it easy for programmers to define self-contained units of work. Blocks are similar to — but far more powerful than — traditional function pointers. The key differences are:

  • Blocks can be defined inline, as “anonymous functions.”
  • Blocks capture read-only copies of local variables, similar to “closures” in other languages

This is kind of functionality is common in dynamically-typed interpreted languages, but has never before been widely available to C programmers.

Dispatch queues and dispatch semaphores are also presented.

There is now only 10 days left before release of MJ Style at the iTunes Music Store. The decision of being iTunes exclusive was made in order to provide the best audio quality (AAC 256 kbits – MP3 on other stores), the easiest user experience, the safest investment (ITMS has been here since first days) and security for customers, and to avoid sales split over many marketplaces. Moreover I didn’t want to promote subscription-based platforms, that aren’t an artistic way of buying music, nor recent marketplaces that got exclusive agreements from majors (not available to Apple, that was forced to keep DRMs for a long time, and more recently to increase the price of new single releases).

From a full album (9,99$ or euros) I will get 5,40 euros net income : then there will have to be at least 11 full albums sales for me to become profitable (30 euros are required to put a release online, and the same amount for removing it if needed).

The RC2 of Ext JS 3.0, unveiled last June, 3 (that was just one day after the 0.7 version of CP2JavaWS, that brought management for automatic asynchronous and buffered remote access for TableView) provides a CRUD mode that is close to CP2JavaWS’s Direct2CP one (presented last July, 14, and completed August, 2 – I wasn’t aware of Ext JS new features at that time).

Using Ext JS we create a Reader object (manages deserializing/JSON to fields mapping), Writer (for serializing/fields to JSON mapping) and Store object (url of remote programs that manage read, create, update and delete). We can see examples here and there (RESTFull store), and simpler examples wihout server backend (Dynamic Form and binding from a local xml file). On the Proxy object we can also specify an index range (autoLoad), that allows buffered access (Buffer Grid).

The Ext JS architecture ensures a good separation and provides advanced customization of rendering and behaviours for master and detail views. However CP2JavaWS provides these specific features :

  • only one line of code needed to create a fully working CRUD master/detail view (see here the required code when using Ext JS), automatic asynchronous and buffered access, sorting, form (detail view) controls that depends from their property type (as with Ext JS’s Dynamic Form). We just have to specify the CP business class name. All of the Ext Js features are accessible from a unique component, that allows same level of customization : columns displayed in the table view, custom detail view if needed, custom remote service if needed (instead of the provided generic DAO service).
  • provides a generic DAO service that doesn’t require any coding or setting on the server side, works on the object level and manages full database access cycle (through Hibernate) – Ext JS’s RESTful Store demo just simulates a database using session. Then CP2JavaWS’s Direct2CP is probably the most suited for a Java backend (instant work without any coding nor config).
  • allows to call directly an existing Java application/business services layer (based on Spring or another container) as it works at object level, and without additional configuration.
  • manages complex objects (objects graphs with nested, heterogeneous collections and references) both on client and server side : it then allows to display/edit any nested property, using paths, and the generic detail view creates an editing field for all of these nested objects attributes. Next version of CP2JavaWS will allow to specify (restrict) the editables properties in detail view (as we still can for the table view) – for now we can either edit all the object’s graph properties, or pass a custom detail view (has then to manage controls creation).
  • provides management for technical or business (and multiple) key(s), without additional configuration. Hidding of id field(s) depending on the mode and editing step is automatic, as new id affectation.
  • manages retreiving of value/label pairs for combo lists and radio buttons groups (through a remote service or local data).
  • choose automatically proper control from combo lists and radio buttons.
  • completely free (a 329$ license per developper is required for Ext JS).

Moreover CP2JavaWS provides full Digest authentication (Basic only with Ext JS), automatic switch to JSONP if required, and full jsession id tracking per endpoint.

Note : support for in-table editing (instead of using a detail view), still available in Ext JS, will be added soon into Cappuccino’s CPTableView. In fact it is an historical feature of Next/Cocoa’s NSTableView (the proper delegate method is still listed – commented – in CPTableView). In the same way columns reordering is planned.

Ext GWT 2.0 (available since July, 9, and priced the same as Ext JS 3.0) includes the new buffered Grid View, Row Editor, and still allowed (thanks to its generation step) to easily add Java CRUD management on the server side. However we still have to write a lot of code (see the source code of GXT Grid Store Data Binding example – also not faster to load than a CP application) and we are then stick with GWT limitations compared with Cappuccino :

  • requires a generations step (not elegant and less smooth development cycle), whose generator isn’t open source,
  • generated javascript very hard to deep debug,
  • based on the old Swing components model (very limited compared with Cocoa concepts),
  • does not allow integrating with Cappuccino (we then lack high level features like evolved graphics engine, undo/redo, drag&drop, advanced and automatic layout management, delegation chain and powerful runtime, etc.).

By using Ext JS 3.0 (pure javascript), integration with Cappuccino is more likely, however it is of very limited interest from the previous statements (and CP2JavaWS’s Direct2CP mode still is built on top of standard/expected Cocoa delegate methods).

The action/RPG game Dungeon Hunter is now available on the AppStore (6,99$). We can watch a video here. First reviews are very positive.

UltimateSoundBank presents Grand Piano Collection, a 20Gb samples library that includes Steinway D Concert Grand, Fazioli F278 Concert, Erard Baby Grand Piano, Seiler Upright Grand and Japanese Upright samples. We can listen to audio demos. The provided UVI Workstation player works as standalone or as a plugin.
It is priced 249$, and an iLok key is required for license activation. It is also compatible with G4/G5 (1,5 Ghz) with 1 Gb of ram, and with MacOSX 10.4 or better.