<?xml version="1.0" encoding="utf-8" ?>

<rss version="0.91" >
<channel>
<title>Jonathan Bond-Caron - Ideas &amp; Experiments</title>
<link>http://jbondc.openmv.com/</link>
<description>Jonathan Bond-Caron - Ideas &amp; Experiments</description>
<language>en</language>
<image>
        <url>http://jbondc.openmv.com/templates/mv/img/s9y_banner_small.png</url>
        <title>RSS: Jonathan Bond-Caron - Ideas &amp; Experiments - Jonathan Bond-Caron - Ideas &amp; Experiments</title>
        <link>http://jbondc.openmv.com/</link>
        <width>100</width>
        <height>21</height>
    </image>

<item>
    <title>Connect PHP5 to SQL Azure</title>
    <link>http://jbondc.openmv.com/archives/20-Connect-PHP5-to-SQL-Azure.html</link>

    <description>
        With SQL Azure right around the corner (expected to go live in November 2009), I had to evaluate if we could migrate some databases &#039;into the microsoft cloud&#039;. &lt;br /&gt;
&lt;br /&gt;
The pitch from &lt;a href=&quot;http://blogs.msdn.com/ssds/archive/2009/08/18/9874133.aspx&quot;  title=&quot;Blog Post&quot;&gt;Microsoft senior program manager David Robinson&lt;/a&gt; is &quot;With SQL Azure, developers building Web 2.0, ASP.Net and PHP applications can use familiar tools and data models to develop on a pay-as-you-grow, secure, scalable and highly available database service at minimal infrastructure cost,&quot;.&lt;br /&gt;
&lt;br /&gt;
First, there are &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/ee336245.aspx&quot;  title=&quot;SQL Azure limitations&quot;&gt;limitations&lt;/a&gt;, but essentially microsoft is offering a subset of SQL server 2008 running on their infrastructure.&lt;br /&gt;
&lt;br /&gt;
SQL Azure is the first hosted database product with good support for Transact-SQL. This means that any application using nearly standards compliant SQL queries could easily be migrated to use SQL Azure.&lt;br /&gt;
&lt;br /&gt;
For example, using the &lt;a href=&quot;http://www.openmv.com&quot;  title=&quot;OpenMV&quot;&gt;MV framework&lt;/a&gt;, it could be as simple as changing your connection &lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;PostgreSQL:&lt;/strong&gt;&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
$db = MV_Database_Connection::create(&#039;pgsql://user:pass@localhost/database&#039;);&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;strong&gt;SQL Azure:&lt;/strong&gt;&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
// Windows&lt;br /&gt;
$db = MV_Database_Connection::create(&#039;odbc_mssql://user:pass@DRIVER=Driver={SQL Server Native Client 10.0};Server=serverName.database.windows.net;Port=1433;Database=database;UID=user@serverName;PWD=pass;&#039;);&lt;br /&gt;
&lt;br /&gt;
// Unix&lt;br /&gt;
$db = MV_Database_Connection::create(&#039;odbc_mssql://user:pass@DRIVER={FreeTDS};Server=serverName.database.windows.net;Port=1433;Database=database;UID=user@serverName;PWD=pass;TDS_Version=8.0;&#039;);&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Since Microsoft has made it relatively easy to connect to SQL Azure from Windows (SQL Server Native Client), this post looks at connecting php5 on unix to SQL Azure. &lt;br /&gt;
&lt;br /&gt;
There are two methods to connect to SQL Azure from UNIX.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;a) Using mssql_connect()&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
// Install php5-mssql&lt;br /&gt;
// Check freetds version, v0.64 compiled with openssl or gnutls works with Azure&lt;br /&gt;
&lt;br /&gt;
[root@dev] $ tsql -C&lt;br /&gt;
Compile-time settings (established with the &quot;configure&quot; script):&lt;br /&gt;
                           Version: freetds v0.64&lt;br /&gt;
    MS db-lib source compatibility: no&lt;br /&gt;
       Sybase binary compatibility: unknown&lt;br /&gt;
                     Thread safety: yes&lt;br /&gt;
                     iconv library: yes&lt;br /&gt;
                       TDS version: 5.0&lt;br /&gt;
                             iODBC: no&lt;br /&gt;
                          unixodbc: yes&lt;br /&gt;
&lt;br /&gt;
// Add .conf entry so you can mssql_connect(&#039;AZURE&#039;, &#039;username&#039;, &#039;password&#039;);&lt;br /&gt;
// http://www.freetds.org/userguide/freetdsconf.htm#FREETDSCONFFORMAT&lt;br /&gt;
&lt;br /&gt;
[root@dev] cat /usr/local/etc/freetds.conf &lt;br /&gt;
dump file = /tmp/freetds.log&lt;br /&gt;
debug level = 10&lt;br /&gt;
[AZURE]&lt;br /&gt;
        host = serverName.database.windows.net&lt;br /&gt;
        port = 1433&lt;br /&gt;
        tds version = 8.0&lt;br /&gt;
        client charset = UTF-8&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;strong&gt;b) Using odbc_connect()&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
// Install php5-obdc&lt;br /&gt;
// Check unixODBC version, 2.2.12 works well with PHP&lt;br /&gt;
[root@dev] $ isql --version                             &lt;br /&gt;
unixODBC 2.2.12&lt;br /&gt;
&lt;br /&gt;
// Add the &#039;FreeTDS driver&#039; so that unix obdc can use it&lt;br /&gt;
[root@dev] $ cat /usr/local/etc/odbcinst.ini&lt;br /&gt;
[FreeTDS]&lt;br /&gt;
Description     = v0.64 with protocol v8.0&lt;br /&gt;
Driver          = /usr/local/lib/libtdsodbc.so&lt;br /&gt;
&lt;br /&gt;
// Add dsn entry that obdc can use, point to FreeTDS name...&lt;br /&gt;
// http://www.freetds.org/userguide/odbcconnattr.htm&lt;br /&gt;
[root@dev] $ cat /usr/local/etc/odbc.ini&lt;br /&gt;
[TestServer]&lt;br /&gt;
Driver          = FreeTDS&lt;br /&gt;
Description     = Azure test with FreeTDS&lt;br /&gt;
ServerName      = AZURE&lt;br /&gt;
Database        = gol&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Once your unix server is properly configured, you can go ahead and test php connections.&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
// SQL Azure supports tabular data stream (TDS) protocol client version 7.3 or later&lt;br /&gt;
// @see http://msdn.microsoft.com/en-us/library/ee336245.aspx&lt;br /&gt;
&lt;br /&gt;
// On unix, we can connect using open-source FreeTDS (http://www.freetds.org/).&lt;br /&gt;
// Replace XXX with your database information.&lt;br /&gt;
$serverName = &#039;XXXXXXXXXX&#039;;&lt;br /&gt;
$user = &#039;XXX@&#039; . $serverName;&lt;br /&gt;
$pass = &#039;XXXXXX&#039;;&lt;br /&gt;
&lt;br /&gt;
if(function_exists(&#039;mssql_connect&#039;)) {&lt;br /&gt;
	// Using DSN name &#039;AZURE&#039; (specified in /usr/local/etc/freetds.conf)&lt;br /&gt;
	$c = mssql_connect(&#039;AZURE&#039;, $user, $pass);&lt;br /&gt;
	echo &quot;mssql_connect(&#039;AZURE&#039;, $user, $pass): &quot;. ($c ? &#039;Success&#039; : &#039;Error&#039;) . &quot;&lt;br /&gt;&quot;;&lt;br /&gt;
	mssql_close($c);&lt;br /&gt;
	sleep(1);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
if(function_exists(&#039;odbc_connect&#039;)) {&lt;br /&gt;
&lt;br /&gt;
	// All examples require entry in /usr/local/etc/odbcinst.ini:&lt;br /&gt;
	// [FreeTDS]  &lt;br /&gt;
	// Driver          = /usr/local/lib/libtdsodbc.so&lt;br /&gt;
&lt;br /&gt;
	// Using DSN name &#039;TestServer&#039; (specified in /usr/local/etc/odbc.ini)&lt;br /&gt;
	$c = odbc_connect(&#039;TestServer&#039;, $user, $pass);&lt;br /&gt;
	echo &quot;odbc_connect(&#039;TestServer&#039;, $user, $pass): &quot;. ($c ? &#039;Success&#039; : &#039;Error&#039;) . &quot;&lt;br /&gt;&quot;;&lt;br /&gt;
	odbc_close($c);&lt;br /&gt;
	sleep(1);&lt;br /&gt;
&lt;br /&gt;
	// Using DSN name &#039;$serverName&#039; (specified in /usr/local/etc/freetds.conf)&lt;br /&gt;
	$dsn = &quot;DRIVER={FreeTDS};ServerName=$serverName;UID=$user;PWD=$pass;Database=test;&quot;;&lt;br /&gt;
	$c = odbc_connect($dsn, $user, $pass);&lt;br /&gt;
	echo &quot;odbc_connect($dsn, $user, $pass): &quot;. ($c ? &#039;Success&#039; : &#039;Error&#039; ) . &quot;&lt;br /&gt;&quot;;&lt;br /&gt;
	odbc_close($c);&lt;br /&gt;
	sleep(1);&lt;br /&gt;
	&lt;br /&gt;
	// DSN-less connection (more portable / recommended)&lt;br /&gt;
	$dsn = &quot;DRIVER={FreeTDS};Server=$serverName.database.windows.net;Port=1433;Database=test;UID=$user;PWD=$pass;TDS_Version=8.0&quot;;&lt;br /&gt;
	$c = odbc_connect($dsn, $user, $pass);&lt;br /&gt;
	echo &quot;odbc_connect($dsn, $user, $pass): &quot;. ($c ? &#039;Success&#039; : &#039;Error&#039;) . &quot;&lt;br /&gt;&quot;;&lt;br /&gt;
	odbc_close($c);&lt;br /&gt;
	sleep(1);&lt;br /&gt;
	&lt;br /&gt;
	// **Note: Driver= must be uppercase!? Find out where the bug comes from!&lt;br /&gt;
	// $dsn=&quot;Driver={FreeTDS};ServerName=AZURE;Database=gol;UID=$user;PWD=$pass;&quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
If all went well, you should see &#039;Success&#039; everywhere. &lt;br /&gt;
&lt;br /&gt;
Be sure to check the version of FreeTDS and unixODBC you are using! If you run into bugs with these tools, well report them or write a patch!&lt;br /&gt;
&lt;br /&gt;
My conclusion, although FreeTDS works, it is not enterprise ready and needs some corporate backing. Naturally, this brings the question, &lt;a href=&quot;http://www.phpclasses.org/blog/post/85-What-is-Microsoft-up-to-with-PHP.html&quot; &gt;what Microsoft is up to&lt;/a&gt;?&lt;br /&gt;
&lt;br /&gt;
 
    </description>
</item>
<item>
    <title>GAE &amp; PHP</title>
    <link>http://jbondc.openmv.com/archives/19-GAE-PHP.html</link>

    <description>
        There&#039;s a really easy way to get PHP running on Google&#039;s app engine, see this great link:&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.webdigi.co.uk/blog/2009/run-php-on-the-google-app-engine/&quot;  title=&quot;PHP setup on GAE&quot;&gt;http://www.webdigi.co.uk/blog/2009/run-php-on-the-google-app-engine/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
In short, it works by using &#039;Quercus&#039; which likely takes the php scripts, transforms and compiles into java bytecode that gets run in the JVM. Don&#039;t understand all that? No problem, the important note it is seems to work well. &lt;br /&gt;
&lt;br /&gt;
So far I&#039;ve tested two pieces of code:&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Memcache&lt;/strong&gt;&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
&lt;?php&lt;br /&gt;
import com.google.appengine.api.memcache.MemcacheService;&lt;br /&gt;
import com.google.appengine.api.memcache.MemcacheServiceFactory;&lt;br /&gt;
import com.google.appengine.api.memcache.Expiration;&lt;br /&gt;
&lt;br /&gt;
$service = MemcacheServiceFactory::getMemcacheService();&lt;br /&gt;
&lt;br /&gt;
$expiration = Expiration::byDeltaSeconds(60);&lt;br /&gt;
&lt;br /&gt;
echo &#039;MEMCACHE::get(): &#039; . $service-&gt;get(&quot;key1&quot;) . &quot;&lt;br /&gt;&quot;;&lt;br /&gt;
&lt;br /&gt;
$service-&gt;put(&quot;key1&quot;, &quot;hello&quot;, $expiration);&lt;br /&gt;
&lt;br /&gt;
echo &#039;MEMCACHE::get(): &#039; . $service-&gt;get(&quot;key1&quot;) . &quot;&lt;br /&gt;&quot;;&lt;br /&gt;
?&gt;&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
Works great.&lt;br /&gt;
&lt;br /&gt;
Now, probably the most important reason to use App Engine? Access to your very own google database! Running scalable web services just got a whole lot easier.  &lt;br /&gt;
&lt;br /&gt;
The bad news is there&#039;s no good interface or classes yet with php, so you have to go through using google&#039;s &#039;raw&#039; datastore API.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Datastore&lt;/strong&gt;&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
&lt;?php&lt;br /&gt;
import com.google.appengine.api.datastore;&lt;br /&gt;
import com.google.appengine.api.datastore.Entity;&lt;br /&gt;
import com.google.appengine.api.datastore.DatastoreServiceFactory;&lt;br /&gt;
&lt;br /&gt;
$data = array(&#039;test&#039; =&gt; 1, &lt;br /&gt;
			 &#039;test2&#039; =&gt; 2);&lt;br /&gt;
	&lt;br /&gt;
$entity = new Entity(&quot;MV_Storage_Php&quot;); &lt;br /&gt;
$entity-&gt;setProperty(&quot;value&quot;, serialize($data));&lt;br /&gt;
&lt;br /&gt;
echo &quot;KEY: &quot;. (string)$entity-&gt;getKey(); // ok - unknown&lt;br /&gt;
echo &quot;VALUE: &quot;. (string)$entity-&gt;getProperty(&quot;value&quot;); // ok&lt;br /&gt;
&lt;br /&gt;
$dataService = DatastoreServiceFactory::getDatastoreService();&lt;br /&gt;
&lt;br /&gt;
foreach($dataService-&gt;getActiveTransactions() as $t) {&lt;br /&gt;
	echo &quot;TRANS: &quot;. $t-&gt;getId(); // none&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$dataService-&gt;put($entity); // throws NULL exception!?&lt;br /&gt;
&lt;br /&gt;
echo $entity-&gt;getKey();&lt;br /&gt;
?&gt;&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
Unfortunately, it throws a NULL exception. So aside from the quirks, it looks promising.  &lt;br /&gt;
&lt;br /&gt;
The Datastore API is documented &lt;a href=&quot;http://code.google.com/appengine/docs/java/javadoc/com/google/appengine/api/datastore/package-summary.html&quot;  title=&quot;Datastore API&quot;&gt;here&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
 
    </description>
</item>
<item>
    <title>Restoring Outlook 2007 accounts in XP</title>
    <link>http://jbondc.openmv.com/archives/18-Restoring-Outlook-2007-accounts-in-XP.html</link>

    <description>
        I recently had to reinstall Windows XP on a new drive and migrate all my configuration settings.&lt;br /&gt;
&lt;br /&gt;
For the most the part all you need is to copy is most of your data from something like:&lt;br /&gt;
&lt;strong&gt;C:\Documents and Settings\jbondc.COMPUTERNAME&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
Unfortunately, not all programs store their data here, for Outlook 2007 you&#039;ll need to copy ~:&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
# All your .PST / data files which contain e-mails, rss feeds, ...&lt;br /&gt;
C:\Documents and Settings\jbondc.COMPUTERNAME\Local Settings\Application Data\Microsoft\Outlook&lt;br /&gt;
&lt;br /&gt;
# All your signatures &lt;br /&gt;
C:\Documents and Settings\jbondc.COMPUTERNAME\Application Data\Microsoft\Signatures&lt;br /&gt;
&lt;br /&gt;
# And a secret&lt;br /&gt;
HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows Messaging Subsystem\Profiles\Outlook&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
The third is a registry key under which outlook stores all your e-mail account settings. To export this information, Start -&gt; Run -&gt; regedit&lt;br /&gt;
&lt;br /&gt;
Right click on the key and &quot;export&quot;, this will create an outlook.reg that you can now copy and execute on the new Windows XP computer. Detailed explanation here:&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.backuphowto.info/how-to-backup-restore-data-e-mail-account-settings-outlook-2007&quot; &gt;http://www.backuphowto.info/how-to-backup-restore-data-e-mail-account-settings-outlook-2007&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
I actually find out about this by using a &lt;strong&gt;free&lt;/strong&gt; program from Microsoft to trace system activity, very useful to figure out what programs are doing!&lt;br /&gt;
 &lt;br /&gt;
&lt;a href=&quot;http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx&quot; &gt;http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
There is no &#039;Save my Settings Wizard&#039; for Office 2007 on Windows XP so this has to be done manually. Hope that helps someone. &lt;br /&gt;
&lt;br /&gt;
Small note: you will need to re-enter passwords. Although passwords are copied over, Microsoft very likely use some information about the machine to encrypt and decrypt passwords. This makes sense, you would not want to be able to simply copy someone&#039;s encrypted passwords and be able to access all their e-mail accounts.&lt;br /&gt;
&lt;br /&gt;
 
    </description>
</item>
<item>
    <title>AJAX in the enterprise - Beware</title>
    <link>http://jbondc.openmv.com/archives/17-AJAX-in-the-enterprise-Beware.html</link>

    <description>
        It&#039;s great to see the progression to AJAX in the enterprise but I am getting utterly frustrated at how large corporate websites are failing to use and deploy AJAX properly.&lt;br /&gt;
&lt;br /&gt;
I recently tried to create an account for a new American Express card at:&lt;br /&gt;
&lt;a href=&quot;https://www99.americanexpress.com/myca/usermgt/us/action?request_type=un_Register&amp;Face=en_US&amp;DestPage=https%3A%2F%2Fwww99.americanexpress.com%2Fmyca%2Fusermgt%2Fus%2Faction%3Frequest_type%3Dauthreg_addcard%26Face%3Den_US&quot;  title=&quot;Register American Express Card&quot;&gt;https://www99.americanexpress.com/myca/usermgt/us/action?request_type=un_Register&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
I was initially happy to see a nice clean interface. I enter the 4-digit ID, then go on to enter the credit card number. When I finish entering the credit card number, the mouse cursor jumps back to the 4-digit ID (that I already entered!!). Nice try here but not very helpful. &lt;br /&gt;
&lt;br /&gt;
The real problems start with the &lt;strong&gt;broken&lt;/strong&gt; registration. The registration page has some interesting focus() tricks which makes a description popup above the focused form field. This is &quot;ok&quot; although the popup/overlay blocks the next form field so you have to hit &#039;tab&#039; every time. This gets quite annoying.&lt;br /&gt;
&lt;br /&gt;
The critical problem obviously is when I click &#039;submit&#039; to submit my information. The form &lt;strong&gt;does nothing&lt;/strong&gt; and I *see no error*. Wonderful right? Well I hit the &#039;back&#039; button and I am now &quot;logged in&quot; at:&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://home.americanexpress.com/home/mt_personal_cm.shtml&quot; &gt;https://home.americanexpress.com/home/mt_personal_cm.shtml &lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
I find myself in the &quot;My account&quot; page but if I click any links it brings me back to the login screen. &lt;br /&gt;
&lt;br /&gt;
I convinced myself this was an issue with FireFox and tried IE7. I get the same problems. After more registration failures, I finally get a wonderful page:&lt;br /&gt;
&quot;For your security, your account has been temporarily locked out of the system.&quot;&lt;br /&gt;
&lt;br /&gt;
What a load of &lt;b&gt;%$&amp;$%?&lt;/b&gt; !! AJAX is a very rough technology that requires experts and proper testing, I don&#039;t know who American Express subcontracted or the project manager(s) involved but &lt;strong&gt;fire&lt;/strong&gt; who you have to. &lt;br /&gt;
&lt;br /&gt;
For a large corporation, and especially a credit card institution (where rigorous security and testing policies should be met), this just looks very very bad. This is not the first time I go though this, the same mess a month ago at &lt;br /&gt;
&lt;a href=&quot;http://www.dhl.ca/ca/&quot;  title=&quot;DHL&quot;&gt;http://www.dhl.ca/ca/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  
    </description>
</item>
<item>
    <title>FreeBSD 7.0 current - stable</title>
    <link>http://jbondc.openmv.com/archives/16-FreeBSD-7.0-current-stable.html</link>

    <description>
        Was trying to make a custom kernel for a test machine that was previously running FreeBSD 7.0 CURRENT. &lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;cd /usr/src&lt;br /&gt;
make buildkernel KERNCONF=GDE_LB&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
The end result was something like this:&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;&gt;&gt;&gt; stage 3.1: making dependencies&lt;br /&gt;
--------------------------------------------------------------&lt;br /&gt;
cd /usr/obj/usr/src/sys/GDE_LB; MAKEOBJDIRPREFIX=/usr/obj  MACHINE_ARCH=i386  MACHINE=i386  CPUTYPE= GROFF_BIN_PATH=/usr/obj/usr/src/tmp/legacy/usr/bin  GROFF_FONT_PATH=/usr/obj/usr/src/tmp/legacy/usr/share/groff_font  GROFF_TMAC_PATH=/usr/obj/usr/src/tmp/legacy/usr/share/tmac  _SHLIBDIRPREFIX=/usr/obj/usr/src/tmp  INSTALL=&quot;sh /usr/src/tools/install.sh&quot;  PATH=/usr/obj/usr/src/tmp/legacy/usr/sbin:/usr/obj/usr/src/tmp/legacy/usr/bin:...: make KERNEL=kernel depend -DNO_MODULES_OBJ&lt;br /&gt;
machine -&gt; /usr/src/sys/i386/include&lt;br /&gt;
cc -c -O2 -pipe -fno-strict-aliasing -std=c99 -Wall -Wredundant-decls -Wnested-externs -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith -Winline -Wcast-qual -Wundef -Wno-pointer-sign -fformat-extensions -nostdinc -I. -I/usr/src/sys -I/usr/src/sys/contrib/altq -I/usr/src/sys/contrib/ipfilter -I/usr/src/sys/contrib/pf -I/usr/src/sys/dev/ath -I/usr/src/sys/contrib/ngatm -I/usr/src/sys/dev/twa -I/usr/src/sys/gnu/fs/xfs/FreeBSD -I/usr/src/sys/gnu/fs/xfs/FreeBSD/support -I/usr/src/sys/gnu/fs/xfs -D_KERNEL -DHAVE_KERNEL_OPTION_HEADERS -include opt_global.h -finline-limit=8000 --param inline-unit-growth=100 --param large-function-growth=1000 -mno-align-long-strings -mpreferred-stack-boundary=2 -mno-mmx -mno-3dnow -mno-sse -mno-sse2 -mno-sse3 -ffreestanding /usr/src/sys/i386/i386/genassym.c&lt;br /&gt;
&lt;strong&gt;cc1: error: unrecognized command line option &quot;-Wno-pointer-sign&quot;&lt;/strong&gt;&lt;br /&gt;
*** Error code 1&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
After some hair pulling, it turns out that &lt;strong&gt;make clean&lt;/strong&gt; is not always enough:&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
rm -rf /usr/obj&lt;br /&gt;
&lt;br /&gt;
cd /usr/src&lt;br /&gt;
make buildworld&lt;br /&gt;
make buildkernel KERNCONF=GDE_LB&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
And voila! Hope it helps someone. 
    </description>
</item>
<item>
    <title>Mac &quot;for geeks who want to look cool&quot;?</title>
    <link>http://jbondc.openmv.com/archives/14-Mac-for-geeks-who-want-to-look-cool.html</link>

    <description>
        After recently viewing a Mac TV add:&lt;br /&gt;
&lt;a href=&quot;http://www.youtube.com/watch?v=OR2ONmS56DE&amp;feature=related&quot;  title=&quot;Mac Tea Add&quot;&gt;&lt;br /&gt;
http://www.youtube.com/watch?v=OR2ONmS56DE&amp;feature=related&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
My fiancee turned to me and said &quot;ca m&#039;énerve un peu&quot; (french for &quot;it&#039;s starting to be annoying&quot;). Although I&#039;m a fan of Mac ads, the message this time seemed to be over the top and downright annoying. &lt;br /&gt;
&lt;br /&gt;
Mac suddenly became for me &quot;try to look cool and annoying&quot; rather then &quot;be cool&quot;. I&#039;m not a Mac owner but have been thinking of buying one for a new laptop, at this time I need a little more then the &quot;Mac fashion&quot; message which is really wearing out on me. &lt;br /&gt;
&lt;br /&gt;
So here&#039;s the options:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Microsoft: Builds very simple products but not so &quot;stable&quot; (agreed Mac). Experienced this just yesterday by &quot;upgrading to XP Sp3&quot; and then powerpoint 2007 was amazingly slow among other issues. Downgrading to SP2 fixed the problem(s).&lt;br /&gt;
&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;Mac: Builds products with a &quot;fashion&quot; twist, very stable (based on freebsd). The problem with a Mac for me is their &#039;message&#039;, can their products be used for productivity / business / everyday use in my case?&lt;br /&gt;
&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;Google: Well no OS but builds very simple products that just work. Their message, &quot;google&quot;. What their brand represents is simplicity, open, easy to use, no fuss, no marketing, it just works, rock solid!&lt;br /&gt;
&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;
If someone is listening, can you please just build an OS that easy to use for everyday use and *that works*, and please shove your marketing down the !?%$È?&amp;$*.&lt;br /&gt;
&lt;br /&gt;
Hopefully Microsoft can fix their mess, or innovation with browsers (Google Chrome?) can pave the way for to a new era of computing. &lt;br /&gt;
 
    </description>
</item>
<item>
    <title>Working from home?</title>
    <link>http://jbondc.openmv.com/archives/13-Working-from-home.html</link>

    <description>
        Since I work from home 80% of my time and the rest is reserved for meetings with clients (1 day). I found this article &lt;strong&gt;very&lt;/strong&gt; interesting:&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.computerworld.com/action/article.do?command=printArticleBasic&amp;articleId=9112621&quot;  title=&quot;Get tough on telecommuting&quot;&gt;http://www.computerworld.com/action/article.do?command=printArticleBasic&amp;articleId=9112621&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
It warns CEO&#039;s or managers to consider 6 questions to answer when considering telework:&lt;br /&gt;
&lt;ul&gt;&lt;br /&gt;
1. Is full-time telecommuting a smart decision?&lt;br /&gt;
2. How will you define and measure performance?&lt;br /&gt;
3. Will creativity suffer?&lt;br /&gt;
4. How will telework affect collaboration?&lt;br /&gt;
5. What about employees &quot;left behind&quot; in the office?&lt;br /&gt;
6. Do you have an exit strategy?&lt;br /&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;br /&gt;
Overall it&#039;s an excellent summary! If you&#039;re thinking about offering telecommuting plans or asking your boss to work from home, you&#039;ll enjoy the read.&lt;br /&gt;
&lt;br /&gt;
In my field (software development), I see more and more businesses offering telecommuting plans to their tech employees here in Montreal. Why? Their technicians call me from home! Most of the time, they offer 1 day (which turns out to be friday).&lt;br /&gt;
That seems to fit with:&lt;br /&gt;
&lt;br /&gt;
&quot;Still, he won&#039;t allow anyone to telework 100% of the time, except in rare circumstances, because he wants to keep informal communications flowing. &quot;That&#039;s the kind of relationship I think we&#039;ll see more and more of,&quot; says Cromwell. &quot;Not somebody telecommuting 100% of the time, but rather creating situations where someone will work from home one or two days a week.&quot;&lt;br /&gt;
&lt;br /&gt;
And I couldn&#039;t agree more, when building a corporate culture, you want your employees to &quot;need&quot; to come to the office. Offering them a day or 2 to work from home should be seen as a bonus where they can reserve time for tasks they &#039;know&#039; they can get done from home. &lt;br /&gt;
&lt;br /&gt;
More then 2 days per week, hire a subcontractor, not an employee.&lt;br /&gt;
&lt;br /&gt;
If you&#039;re a small team of professionals (2-5) like my company (&lt;a href=&quot;http://www.gdesolutions.com&quot;  title=&quot;My Company&quot;&gt;Goldeneye Solutions&lt;/a&gt;) - it&#039;s a different issue in the early stage where telecommuting 80% saves time &amp;amp; resources.  &lt;br /&gt;
&lt;br /&gt;
It&#039;s also &lt;strong&gt;very&lt;/strong&gt; important to use proper tools to collaborate, &lt;br /&gt;
&lt;br /&gt;
All that said, I&#039;ll definitely keep the points in article in mind as I hire more employees. &lt;br /&gt;
It would be interesting to see how medium or large companies in Montreal are coping with telework?&lt;br /&gt;
&lt;br /&gt;
 
    </description>
</item>
<item>
    <title>PHP LINQ?</title>
    <link>http://jbondc.openmv.com/archives/12-PHP-LINQ.html</link>

    <description>
        When it comes to writing Web applications, a developer often needs to access data from a multitude of data sources. The result is often a lot of spaghetti code that iterates and filters  the results (XML, csv, soap, REST services, and so on).  &lt;br /&gt;
&lt;br /&gt;
But the most common data that&#039;s accessed is in a relational database. Luckily, at some point database vendors agreed on SQL (standard query language) which is a common way to access /query data from a database. &lt;br /&gt;
&lt;br /&gt;
With the reality of the Web, wouldn&#039;t it be nice to have some form of standard query language to access many forms of data?? That&#039;s what Microsoft&#039;s &lt;a href=&quot;http://en.wikipedia.org/wiki/Language_Integrated_Query&quot; title=&quot;LINQ&quot;&gt;LINQ &lt;/a&gt; attempts to offer. &lt;br /&gt;
&lt;br /&gt;
It&#039;s a great innovation and I was curious about what a PHP API could look like and it turns out there&#039;s a good discussion here:&lt;br /&gt;
&lt;a href=&quot;http://www.mikeborozdin.com/post/Is-PHPLinq-As-Cool-As-Real-LINQ.aspx&quot; &gt;http://www.mikeborozdin.com/post/Is-PHPLinq-As-Cool-As-Real-LINQ.aspx&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
The advantage of LINQ in .NET is how the LINQ expressions can be evaluated and compiled. In short, it takes the expressions (&quot;pretty&quot; code) and builds the &quot;spaghetti code that iterates and filters  the results&quot; automatically. If the compiler is smart and can make proper machine level optimizations, I would guess it means very fast execution and a standard way of accessing data. Amazing!&lt;br /&gt;
&lt;br /&gt;
As for PHP, &lt;a href=&quot;http://blog.maartenballiauw.be/&quot; &gt;Maarten Balliauw&lt;/a&gt; still went ahead and created a PHP implementation of LINQ:&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.codeplex.com/PHPLinq/Release/ProjectReleases.aspx?ReleaseId=10084&quot;  title=&quot;PHPLinq Release&quot;&gt;http://www.codeplex.com/PHPLinq/Release/ProjectReleases.aspx?ReleaseId=10084&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
It&#039;s definetly &quot;interesting&quot; at this point and if PHP could support natively some form of LINQ, it would be a major achievement and very cool stuff.&lt;br /&gt;
&lt;br /&gt;
There&#039;s also a java version of &quot;LINQ&quot; (Quaere):&lt;br /&gt;
&lt;a href=&quot;http://www.theserverside.com/news/thread.tss?thread_id=46887&quot;  title=&quot;Quaere&quot;&gt;http://www.theserverside.com/news/thread.tss?thread_id=46887 &lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
 
    </description>
</item>
<item>
    <title>Distributed Cache - Velocity</title>
    <link>http://jbondc.openmv.com/archives/11-Distributed-Cache-Velocity.html</link>

    <description>
        I always enjoy reading Microsoft tech announcements simply because they just seem to &quot;nail&quot; business requirements and building the proper solutions / technology. &lt;br /&gt;
 &lt;br /&gt;
The quote the announcement: &quot;Distributed cache is becoming the key application platform component for providing scalability and high availability. In-memory caching has been traditionally used primarily for meeting the high performance requirements of applications. By fusing caches on multiple nodes into a single unified cache however, the distributed caches offer not only high performance, but also scale.&quot;&lt;br /&gt;
&lt;br /&gt;
Microsoft released a first CTP (technology preview) of their distributed caching technology called Velocity:&lt;br /&gt;
&lt;br /&gt;
From the readme: &quot;Velocity&quot; distributed cache is provided in the form of a cache cluster, simplifying your application code by managing the complexities of load balancing behind the scenes. When you use &quot;Velocity,&quot; you can retrieve data by using keys or other identifiers, called tags. &quot;Velocity&quot; supports optimistic and pessimistic concurrency models and a variety of cache configurations.&lt;br /&gt;
&lt;br /&gt;
For those familiar with &lt;a href=&quot;http://en.wikipedia.org/wiki/Memcached&quot;  title=&quot;Memcache&quot;&gt;memcache&lt;/a&gt; (open-source), it&#039;s the same type of solution. Velocity however seems to be a much more enterprise ready package with advanced caching features. &lt;br /&gt;
&lt;br /&gt;
It&#039;s further interesting that Velocity uses ports: 22233 (data) and 22234 (monitor cluster nodes), looks like we&#039;re going to need a distributed caching &#039;RFC&#039; and protocol some time soon. &lt;br /&gt;
&lt;br /&gt;
The full announcement is here: &lt;br /&gt;
&lt;a href=&quot;http://blogs.msdn.com/velocity/archive/2008/06/02/introducing-project-codename-velocity.aspx&quot; title=&quot;Velocity&quot;&gt;http://blogs.msdn.com/velocity/archive/2008/06/02/introducing-project-codename-velocity.aspx&lt;/a&gt; 
    </description>
</item>
<item>
    <title>Short PHP array synthax</title>
    <link>http://jbondc.openmv.com/archives/10-Short-PHP-array-synthax.html</link>

    <description>
        There&#039;s an RFC that has been recently declined through the PHP internals list. It is a minor change/patch to introduces a short synthax to declare arrays in PHP.&lt;br /&gt;
&lt;br /&gt;
To declare an array in PHP, you currently use the following synthax: &lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
$a = array(&#039;foo&#039; =&gt; &#039;bar&#039;, &#039;nestarray&#039; =&gt; array(0, 1, 5));&lt;br /&gt;
&lt;/code&gt;  &lt;br /&gt;
&lt;br /&gt;
The proposed patch (a few lines) would allow to declare arrays in a shorter form:&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
$a = array(&#039;foo&#039; =&gt; &#039;bar&#039;, &#039;nestarray&#039; =&gt; array(0, 1, 5));&lt;br /&gt;
&lt;br /&gt;
// New synthax&lt;br /&gt;
$a = [&#039;foo&#039;=&gt; &#039;bar&#039;, &#039;nestarray&#039;=&gt; [0, 1, 5]];&lt;br /&gt;
// Or&lt;br /&gt;
$a = [&#039;foo&#039;: &#039;bar&#039;, &#039;nestarray&#039;: [0, 1, 5]];&lt;br /&gt;
&lt;/code&gt;  &lt;br /&gt;
&lt;br /&gt;
This notation is used by many programming languages, most notably javascript. Since PHP is essentially a programming language used &lt;strong&gt;for&lt;/strong&gt; the Web, my opinion is it makes perfect sense to support a javascript-like notation for arrays.&lt;br /&gt;
&lt;br /&gt;
There&#039;s some resistance from the core developers and overall there were too many veto (negative) votes. I definitely understand their concern but feel it&#039;s a natural evolution of the language, this to me seems like something most &lt;strong&gt;users&lt;/strong&gt; would want to see in PHP. &lt;br /&gt;
&lt;br /&gt;
Hopefully, the PHP community can speak out enough to get better idea of what the users / php community wants. &lt;br /&gt;
&lt;br /&gt;
The actual proposal and more info at:&lt;br /&gt; &lt;a href=&quot;http://wiki.php.net/rfc/shortsyntaxforarrays&quot;  title=&quot;RFC - Short Array Synthax&quot;&gt;http://wiki.php.net/rfc/shortsyntaxforarrays&lt;/a&gt;. 
    </description>
</item>
<item>
    <title>Advantages of BSD</title>
    <link>http://jbondc.openmv.com/archives/9-Advantages-of-BSD.html</link>

    <description>
        This one made me smile so I had to share it, there&#039;s a 25 year old bug that has just been fixed with seekdir() on &lt;strong&gt;all&lt;/strong&gt; BSD systems. For details, see&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.osnews.com/story/19731&quot;  title=&quot;25 year old BSD bug&quot;&gt;http://www.osnews.com/story/19731&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
And the actual patch for FreeBSD is now available:&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.nabble.com/i386-121656:--libc---PATCH--telldir-issues-td16019215.html&quot;  title=&quot;FreeBSD patch&quot;&gt;http://www.nabble.com/i386-121656:--libc---PATCH--telldir-issues-td16019215.html&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
There&#039;s something wonderful about the open-source community and how problems get fixed... well eventually &lt;img src=&quot;http://jbondc.openmv.com/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt; Generally, BSD licensed projects freebsd (os), postgresql (database), dojo (javascript) have strong communities and in my opinion are great projects to be involved in.&lt;br /&gt;
&lt;br /&gt;
BSD is a great license to study, modify and learn from software but also to collaborate with people from many different backgrounds, academic (research &amp;amp; students), corporate, hackers and so on... Happy BSDing  
    </description>
</item>
<item>
    <title>Bad Trade Day!</title>
    <link>http://jbondc.openmv.com/archives/8-Bad-Trade-Day!.html</link>

    <description>
        The HABS today have failed to grab Hosa from the Atlanta Trashers. It&#039;s a major disappointment for myself and all fans who were hoping to see the sharp shooter at Montreal! &lt;br /&gt;
&lt;br /&gt;
It&#039;s not so shocking that we failed to get Hosa but that the HABS have given away Huet to the Washington Capitals for a mere second round draft pick. The valuation of our ex-#1 keeper seems both humiliating for HUET and the HABS.&lt;br /&gt;
&lt;br /&gt;
After listening to Bob Gainey&#039;s press release, I&#039;m still stunned by the news. Though I&#039;m happy to see Carey Price as the future of the habs in net, my immediate reaction is we gave away Huet for very little in return. &lt;br /&gt;
&lt;br /&gt;
 
    </description>
</item>
<item>
    <title>Running dojo or javascript tookit on the SERVER side?</title>
    <link>http://jbondc.openmv.com/archives/7-Running-dojo-or-javascript-tookit-on-the-SERVER-side.html</link>

    <description>
        If you are not familiar with .NET and the precious runat=&quot;server&quot; or runat=&quot;client&quot;, have a look a at: http://www.aptana.com/jaxer&lt;br /&gt;
&lt;br /&gt;
The idea is simple and very very practical. In some situations, you may want to run code on the server OR on the client. The problem with a lot of javascript frameworks is they do a LOT of work on the client side. What if we could make the server work a little harder?&lt;br /&gt;
&lt;br /&gt;
Based on John Resig&#039;s work, &lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://ejohn.org/blog/bringing-the-browser-to-the-server/&quot; &gt;http://ejohn.org/blog/bringing-the-browser-to-the-server/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
I convinced myself I could create a &quot;template parser&quot; for dijit widgets that would read the following tags:&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
&amp;lt;dijit:form:CheckBox id=&quot;cb&quot; runat=&quot;server&quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;dijit:form:CheckBox id=&quot;cb2&quot; runat=&quot;client&quot;/&amp;gt;&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
The first part was making sure that a dijit widget could be created on the server side.&lt;br /&gt;
Amazingly after some tweaks, this works:&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
C:\Utils&gt;java -jar js.jar&lt;br /&gt;
Rhino 1.6 release 7 2007 08 19&lt;br /&gt;
js&gt; load(&#039;env.js&#039;);&lt;br /&gt;
js&gt; window.location = &#039;test.html&#039;;&lt;br /&gt;
test.html&lt;br /&gt;
js&gt; var djConfig = {baseUrl: &quot;Z:/GDECORE/js/OpenAjax/dojo/&quot;};&lt;br /&gt;
js&gt; load(&#039;Z:/GDECORE/js/OpenAjax/dojo/dojo.js&#039;);&lt;br /&gt;
js&gt; dojo.require(&#039;dojo._base.html&#039;);&lt;br /&gt;
[object Object]&lt;br /&gt;
js&gt; dojo.require(&#039;dijit.form.CheckBox&#039;);&lt;br /&gt;
[object Object]&lt;br /&gt;
js&gt; var widget = new dijit.form.CheckBox({id: &quot;cb&quot;, name: &quot;cb&quot;}, dojo.byId(&quot;test&quot;));&lt;br /&gt;
js&gt; print(dojo.body().innerHTML);&lt;br /&gt;
&amp;lt;div role=&#039;presentation&#039; waiRole=&#039;presentation&#039; class=&#039;dijitReset dijitInline dijitCheckBox&#039; widgetId=&#039;cb&#039;&amp;gt;&amp;lt;input dojoAttachEvent=&#039;onmouseover:_onMous&lt;br /&gt;
e,onmouseout:_onMouse,onclick:_onClick&#039; id=&#039;cb&#039; class=&#039;dijitReset dijitCheckBoxInput&#039; value=&#039;on&#039; tabindex=&#039;0&#039; type=&#039;checkbox&#039; dojoAttachPoint=&#039;focusNo&lt;br /&gt;
de&#039; name=&#039;cb&#039;/&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
The template parser has now been written and several more tests are needed before a first release!&lt;br /&gt;
 
    </description>
</item>
<item>
    <title>Sun-mySQL or Sun-PostgreSQL?</title>
    <link>http://jbondc.openmv.com/archives/5-Sun-mySQL-or-Sun-PostgreSQL.html</link>

    <description>
        It&#039;s old news by now but I was recently reading &quot;Sun buys mySQL&quot; articles such as this one:&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://devzone.zend.com/article/2979-Did-you-hear-Sun-was-buying-MySQL&quot; &gt;http://devzone.zend.com/article/2979-Did-you-hear-Sun-was-buying-MySQL&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I think like lots of PostgreSQL fans, I was first shocked by Sun&#039;s move. Sun has been sponsoring PostgreSQL for quite some time now which in my opinion currently stands the best open-source database for the enterprise. So why did they buy mySQL?&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Popularity &amp;amp; Marketing&lt;/strong&gt;&lt;br /&gt;
mySQL seems to be the poster boy for web 2.0 and building a database driven website. Historically, the mySQL DB driver has been bundled with PHP natively, so it quickly became the &#039;M&#039; in the LAMP stack and &lt;strong&gt;the&lt;/strong&gt; open-source database. It has a catchy name and does most of what you would expect from a database. For me, there&#039;s no doubt that it makes sense for Sun to buy mySQL and offer better support for the database. &lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;The Itch&lt;/strong&gt;&lt;br /&gt;
The hopes for every postgreSQL fan is that Sun will not favor mySQL over PostgreSQL. In fact, the hope is that Sun can help steer mySQL to a direction closer to postgreSQL, i.e. support more properly the SQL standard and everything a relational database should offer.&lt;br /&gt;
&lt;br /&gt;
For postgreSQL to gain wider adoption, it definetly needs a name change! But then again, maybe the wonders of postgreSQL are best kept as a &quot;secret&quot;?   
    </description>
</item>
<item>
    <title>Debate over Proposed ECMAScript 4th Edition</title>
    <link>http://jbondc.openmv.com/archives/4-Debate-over-Proposed-ECMAScript-4th-Edition.html</link>

    <description>
        There&#039;s a new exciting debate over the ES4 proposal which is available online at:&lt;br /&gt;
&lt;a href=&quot;http://www.ecmascript.org/es4/spec/overview.pdf&quot; &gt;http://www.ecmascript.org/es4/spec/overview.pdf&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;The reason?&lt;/h2&gt;Besides some people arguing over the complexity and possibly over-engineering of the new language, there are major corporate implications. Microsoft may not want to implement ES4 and it&#039;s quite unclear what their plans are with IE8. Does it make sense for Mozilla, Opera and Safari to implement a new javascript engine if Microsoft (IE) doesn&#039;t follow? Probably not.&lt;br /&gt;
&lt;br /&gt;
But some might say, implement the standard and let Microsoft (possibly) follow up later. The problem is that for developers (scenario: IE doesn&#039;t implement the standard), we are stuck in the same interoperability mess when building web applications. Hack and hack after hack to support either buggy or non-existing implementations! It&#039;s further unclear if Microsoft has any interest for javascript to succeed in the long run and become a driving force in the success of web applications. The corporate strategy of Microsoft is not transparent with regards to their web technology such as &lt;a href=&quot;http://silverlight.net/&quot; &gt;Silverlight&lt;/a&gt; (brings .NET to the browser). In short, business is getting in the way of collaboration and benefiting the end users. On the other end, it&#039;s unclear how Adobe and Mozilla are related and if the donation of actionscript to Mozilla puts Firefox at an advantage to implement this proposed standard compared other browsers (IE, opera etc...).&lt;br /&gt;
 &lt;br /&gt;
&lt;h2&gt;Open Standards&lt;/h2&gt;No doubt, the solution is for browser vendors to &lt;strong&gt;actively&lt;/strong&gt; implement and support a javascript engine according to the same standards. It will be interesting to see how this unfolds, important communication and decisions are ahead with regards to new web standards. &lt;br /&gt;
&lt;br /&gt;
On a personal note, I like some parts of the &lt;strong&gt;proposed&lt;/strong&gt; standard though I believe there&#039;s some over engineering with the type hinting. I am a strong fan of interfaces and classes. 
    </description>
</item>

</channel>
</rss>
