<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-7367481</id><updated>2012-01-16T16:17:59.782-08:00</updated><category term='collaborative bi'/><category term='obama'/><category term='collaborative analytics'/><category term='personal branding'/><category term='credit card bill'/><category term='ajax'/><category term='demand generation'/><category term='saas'/><category term='predatory lending'/><category term='jep'/><category term='credit cards'/><category term='leadsloth'/><category term='on-demand'/><category term='backbase'/><category term='business intelligence'/><category term='marketing automation'/><category term='abusive credit card industry practices'/><title type='text'>Jep's blog</title><subtitle type='html'>Jep's Weblog About Online Marketing for Software Companies and Other Things</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://richui.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7367481/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://richui.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Jep Castelein</name><uri>http://www.blogger.com/profile/02749121748856550538</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>40</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7367481.post-7656421554133261292</id><published>2010-07-19T20:29:00.001-07:00</published><updated>2010-07-19T21:09:36.144-07:00</updated><title type='text'>Business Intelligence Software as-a-Platform</title><content type='html'>The latest trend in software is "Platform as a Service". This is a software package delivered as-a-Service (SaaS), on which third parties can also develop &lt;i&gt;their&lt;/i&gt; solutions. Salesforce.com is the best example of PaaS, because hundreds of companies have posted their solutions on the AppExchange. The base software package is very useful by itself, but you can easily add functionality through 3rd party extensions. &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;To make PaaS successful it should be easy for partners to extend your software. You need to have a good API and an active developer community (and often also a support desk). &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The last company that announced a PaaS strategy is GoodData, a company that provides &lt;a href="http://www.gooddata.com/"&gt;business intelligence software&lt;/a&gt;. They have a cloud-based analytics solution based on Amazon Web Services. The last release of their software has made it really easy for developers to tie their software into the GoodData platform.  Because the pricing is affordable, many more companies can now use advanced analytics (it's not a 6-figure project anymore!). &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Considering that many companies have reporting challenges, and considering that many SaaS vendors have a very basic reporting system built in, I'd say there is room in the market for GoodData's solution. The trick is to get enough developers excited to build on top of GoodData rather than building it on their own. &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7367481-7656421554133261292?l=richui.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://richui.blogspot.com/feeds/7656421554133261292/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7367481&amp;postID=7656421554133261292' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7367481/posts/default/7656421554133261292'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7367481/posts/default/7656421554133261292'/><link rel='alternate' type='text/html' href='http://richui.blogspot.com/2010/07/business-intelligence-software-as.html' title='Business Intelligence Software as-a-Platform'/><author><name>Jep Castelein</name><uri>http://www.blogger.com/profile/02749121748856550538</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7367481.post-95447659589205738</id><published>2010-02-11T21:03:00.000-08:00</published><updated>2010-02-11T21:30:37.105-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='personal branding'/><category scheme='http://www.blogger.com/atom/ns#' term='jep'/><title type='text'>Getting "Jep" on Page 1</title><content type='html'>I have a fairly unique first name: "Jep". I think I know 2 people in the entire world with the same first name, one in Denmark and one in the US. So it would be cool if my site popped up if you search for "Jep": a little bit of personal branding :-)&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I was interested in the Internet pretty early on, so I tried to register domain names with my name in it, which is a good start for personal branding. Unfortunately I was too late to register &lt;i&gt;jep.com&lt;/i&gt;, but I could claim &lt;i&gt;castelein.net&lt;/i&gt; and &lt;i&gt;jepcastelein.com&lt;/i&gt;. &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In the past years I learned a fair bit about Search Engine Optimization. If you Google "Jep Castelein", you find pretty-much all my sites, and even if you Google "Castelein" I show up in 4 out of 10 spots. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;However, if you Google "Jep", my sites on are page 2. I find it a personal challenge to get on the first page of the Google search results. I recently registered the domain &lt;i&gt;jep.name&lt;/i&gt;, which uses one of the new top-level domains. It may not be as good as &lt;i&gt;jep.com&lt;/i&gt;, but it should definitely help. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;On &lt;i&gt;jep.name&lt;/i&gt; I've created a personal profile page using a service called &lt;a href="http://www.retaggr.com/"&gt;Retaggr&lt;/a&gt;. I've added all my social networking sites, and several options to get in touch with me. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;On all my other websites I have created links to this new profile page, using "&lt;a href="http://www.jep.name/"&gt;Jep&lt;/a&gt;" as the link text. This tells Google that the site is about Jep (see also the &lt;a href="http://searchengineland.com/google-kills-bushs-miserable-failure-search-other-google-bombs-10363"&gt;miserable failure&lt;/a&gt; story).  Hopefully we'll see some results in a couple of weeks!&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7367481-95447659589205738?l=richui.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://richui.blogspot.com/feeds/95447659589205738/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7367481&amp;postID=95447659589205738' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7367481/posts/default/95447659589205738'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7367481/posts/default/95447659589205738'/><link rel='alternate' type='text/html' href='http://richui.blogspot.com/2010/02/getting-jep-on-page-1.html' title='Getting &quot;Jep&quot; on Page 1'/><author><name>Jep Castelein</name><uri>http://www.blogger.com/profile/02749121748856550538</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7367481.post-497943976673544537</id><published>2009-12-22T19:19:00.000-08:00</published><updated>2009-12-22T20:55:25.316-08:00</updated><title type='text'>Phone.com VoIP Call Quality Problem - Solved</title><content type='html'>&lt;p&gt;For my company I was looking for a small business phone system with a virtual PBX, an efax and a VoIP handset, all for a reasonable price. I've looked at &lt;a href="http://www.grasshopper.com/"&gt;Grasshopper&lt;/a&gt;, &lt;a href="http://www.ringcentral.com/"&gt;Ringcentral&lt;/a&gt; and &lt;a href="http://www.8x8.com/"&gt;8x8&lt;/a&gt;, but &lt;a href="http://www.phone.com/"&gt;Phone.com&lt;/a&gt; was the only provider that could offer the full functionality for a pretty low price. But unfortunately I ran into some call quality issues, which were actually not so hard to solve.&lt;/p&gt;&lt;h4&gt;The complete small business phone system&lt;/h4&gt;&lt;p&gt;I've set the phone system up as follows:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;toll-free number as the central phone line&lt;/li&gt;&lt;li&gt;local alternative number&lt;/li&gt;&lt;li&gt;local fax number (efax, send and receive)&lt;/li&gt;&lt;li&gt;a Polycom VoIP handset&lt;/li&gt;&lt;li&gt;Forward to my cell phone if I'm not at my desk&lt;/li&gt;&lt;li&gt;600 minutes per month, shared among all above&lt;/li&gt;&lt;li&gt;Monthly cost of $35 plus taxes and fees&lt;/li&gt;&lt;/ul&gt;&lt;h4&gt;VoIP Quality Problems&lt;/h4&gt;&lt;p&gt;I was pretty excited when the handset arrived, but I was only a minute into my first call when the person at the other end said: "do you have a VoIP phone, you're cutting out all the time". I called Phone.com support, but they couldn't really help me. &lt;/p&gt;&lt;p&gt;I have cable Internet, and a wireless router hooked up to the cable modem. The router is a &lt;a href="http://www.amazon.com/Linksys-WRT54G2-Wireless-G-Broadband-Router/dp/B0014J07R2/"&gt;Linksys WRT54G2&lt;/a&gt;, which has reasonably good reviews at Amazon.com. However, with the &lt;a href="http://www.phone.com/customer-support/test-your-network-voip-performance/"&gt;Phone.com VoIP test tool&lt;/a&gt; I could see that the line quality wasn't good enough: too much jitter and packet loss. &lt;/p&gt;&lt;h4&gt;Router with Quality of Service (QoS) support&lt;/h4&gt;&lt;p&gt;Through research on the Internet I found out that some of the more professional routers have Quality of Service support, which allows you to give higher priority to VoIP calls compared to other internet traffic (like watching a movie on your computer). I ordered the &lt;a href="http://www.amazon.com/gp/product/B0006TIA0C/"&gt;D-Link GamerLounge router&lt;/a&gt; (DGL-4100) for an amazingly low price of $74 (after mail-in rebate). It was pretty easy to set up and - while I haven't made a ton of calls yet - it seems that the quality problems have been solved!&lt;/p&gt;&lt;h4&gt;My Setup&lt;/h4&gt;&lt;p&gt;I have Time Warner cable Internet, with 10+Mbps download speed and 500kbs upload speed. In the old setup I had only a cable modem and my Linksys wireless router: my computers were connected via wifi, and the VoIP phone was plugged into one of the router's Ethernet ports. &lt;/p&gt;&lt;div&gt;&lt;img src="http://4.bp.blogspot.com/_2C4UnOpsUiM/SzGfhhMWa9I/AAAAAAAABQk/kaGtIXRyjZ8/s400/old-router-setup.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5418287224898087890" style="cursor: pointer; width: 359px; height: 232px; " /&gt;&lt;/div&gt;&lt;p&gt;&lt;i&gt;The old situation&lt;/i&gt;&lt;/p&gt;&lt;p&gt;In the new setup, the D-Link router is put in between the cable modem and the wireless router: the phone is now plugged into the D-Link, just like the wireless router, but the phone gets higher priority.&lt;/p&gt;&lt;div&gt;&lt;img src="http://1.bp.blogspot.com/_2C4UnOpsUiM/SzGfu3aafoI/AAAAAAAABQs/Zuflybv05i0/s400/new-router-setup.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5418287454200954498" style="cursor: pointer; width: 400px; height: 211px; " /&gt;&lt;/div&gt;&lt;p&gt;&lt;i&gt;The new situation&lt;/i&gt;&lt;/p&gt;&lt;h4&gt;Technical Details&lt;/h4&gt;&lt;p&gt;The D-Link router worked out of the box: there were some minor setup tasks, but the only main configuration work was to add the QoS rule for VoIP (see screenshot). &lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div&gt;&lt;img src="http://4.bp.blogspot.com/_2C4UnOpsUiM/SzGWVT3TptI/AAAAAAAABQc/sMoPOXwERLk/s400/gamefuel-rule-for-voip.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5418277119557084882" style="margin-top: 0px; margin-right: 10px; margin-bottom: 10px; margin-left: 0px; cursor: pointer; width: 400px; height: 250px; " /&gt;&lt;/div&gt;&lt;p&gt;The D-Link was now taking care of Network Address Translation (NAT) and DHCP, which was previously done by the Linksys wireless router. Therefore I had to reconfigure the Linksys router to function as 'Router' rather than 'Gateway' (in Setup &gt; Advanced Routing, set Operating Mode to "Router"). &lt;/p&gt;&lt;p&gt;In the D-Link configuration I had to assign a static IP address to the router, otherwise it would be really hard to access the Linksys configuration page (the IP address would change when the DHCP lease expires). This is done in Basic &gt; Network Settings. In the Linksys Basic Setup I had to enter this IP address.&lt;/p&gt;&lt;h4&gt;Conclusion&lt;/h4&gt;&lt;p&gt;Even though I'm cheap and want to get a great phone system for a low price, it's good to invest in call quality. A $74 investment paid off really well. Phone.com should almost offer this router as part of the package. &lt;/p&gt;&lt;p&gt;&lt;i&gt;Let me know if you have any questions or suggestions. &lt;/i&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7367481-497943976673544537?l=richui.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://richui.blogspot.com/feeds/497943976673544537/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7367481&amp;postID=497943976673544537' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7367481/posts/default/497943976673544537'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7367481/posts/default/497943976673544537'/><link rel='alternate' type='text/html' href='http://richui.blogspot.com/2009/12/phonecom-voip-call-quality-problem.html' title='Phone.com VoIP Call Quality Problem - Solved'/><author><name>Jep Castelein</name><uri>http://www.blogger.com/profile/02749121748856550538</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_2C4UnOpsUiM/SzGfhhMWa9I/AAAAAAAABQk/kaGtIXRyjZ8/s72-c/old-router-setup.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7367481.post-2784888498064304471</id><published>2009-07-08T11:23:00.000-07:00</published><updated>2009-07-08T11:28:57.541-07:00</updated><title type='text'>Disruptive Change in Business Intelligence</title><content type='html'>&lt;p&gt;In the past weeks I've worked with Good Data as a marketing consultant. I've spent a lot of time studying their value proposition, and their technology. The market they are in – &lt;a href="http://www.gooddata.com/collaborative-business-intelligence/"&gt;Collaborative Business Intelligence&lt;/a&gt; – is very interesting. &lt;/p&gt;   &lt;p&gt;&lt;br /&gt;The BI market has several strong established players, and most of them have been acquired by the industry giants: Business Objects by SAP, Cognos by IBM and Hyperion by Oracle. For now, they will still rule the Fortune 500, but there are new competitors coming up from the bottom. That is one of the characteristics of disruptive change, according to Clayton Christensen's book '&lt;a href="http://www.amazon.com/Innovators-Dilemma-Revolutionary-Business-Essentials/dp/0060521996/"&gt;The Innovators Dilemma&lt;/a&gt;'. &lt;/p&gt;   &lt;p&gt;&lt;br /&gt;What is new about vendors like Good Data? I'd say there are a couple of aspects: &lt;/p&gt; &lt;ul&gt;   &lt;li&gt; &lt;a href="http://www.gooddata.com/saas-business-intelligence-bi/"&gt;SaaS Business Intelligence&lt;/a&gt; model (rather than on-site software)  &lt;/li&gt;   &lt;li&gt;     Focus on user experience and collaboration&lt;/li&gt;   &lt;li&gt;   Pre-built vertical applications &lt;/li&gt; &lt;/ul&gt;   &lt;p&gt;&lt;br /&gt;These aspects improve the ROI of &lt;a href="http://www.gooddata.com/cloud-business-intelligence"&gt;cloud business intelligence&lt;/a&gt; projects: it is less costly to roll out because of the on-demand model and the pre-built applications, and user adoption is higher because of the user friendliness and collaborative features. &lt;/p&gt; &lt;p&gt;&lt;br /&gt;Actually the best case for online business intelligence is &lt;a href="http://www.sandhill.com/opinion/daily_blog.php?id=7&amp;amp;post=527"&gt;made by Evangelos Simoudis&lt;/a&gt; on the Sandhill.com blog. He indicates that online systems are better at aggregating data from various locations, from inside and outside the company. Only this will create true new insights. &lt;/p&gt;   &lt;p&gt;&lt;br /&gt;Also, a cloud-based analytics system is a natural for social features. Collaboration is taking place all over the web. Whether it's a generic social network like Facebook or MySpace, a white-label social network on Ning, or a micro-blogging service like Twitter. This has the potential to transform BI from a solitary activity to a collaborative process. &lt;/p&gt;   &lt;p&gt;&lt;br /&gt;An additional benefit is more operational in nature. True cloud-based systems are multi-tenant: in other words, only one instance of the application is used by multiple customers. This is done in such a way that the data for each customer is totally isolated, but application maintenance is much easier. Even better, the actual end-customer never has to to application maintenance: the new features simply appear in the product. &lt;/p&gt;   &lt;p&gt;&lt;br /&gt;Evangelos mentions a total of 12 points in favor of on-demand business intelligence. So if this is of interest to you, please be sure to read his full article. &lt;/p&gt;   &lt;p&gt;&lt;br /&gt;Another recent article about the pros and cons of hosted BI &lt;a href="http://searchcio-midmarket.techtarget.com/news/article/0,289142,sid183_gci1358884,00.html"&gt;was published on TechTarget.com&lt;/a&gt;. They are quoting a Forrester report by Boris Evelson. As the benefits he mentions: “less reliance on internal IT, anywhere access to the application, pay-as-you go pricing with no up-front cost and vendor management of the application and infrastructure.” But as a drawback he mentions “lack of built-in integration with the rest of an organization's data and processes”. The original report can be &lt;a href="http://www.forrester.com/Research/Document/Excerpt/0,7211,47465,00.html"&gt;accessed on the Forrester website&lt;/a&gt; (subscribers only). &lt;/p&gt; &lt;h3&gt;Conclusion&lt;/h3&gt;   &lt;p&gt;In this post I've tried to summarize some benefits of cloud-based business intelligence software, with links to other relevant articles. Please let me know if you have additional suggestions. &lt;/p&gt;   &lt;p&gt;&lt;br /&gt;&lt;/p&gt; &lt;p&gt;Other links: &lt;/p&gt; &lt;p&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.gooddata.com/analytics-service/"&gt;analytics service&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.gooddata.com/analytics-dashboard/"&gt;analytics dashboard&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.gooddata.com/analytics-service/"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p style="margin-left: 0pt; margin-right: 0pt;"&gt;&lt;span style="font-family:'Times New Roman';"&gt;&lt;span style="font-size:100%;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7367481-2784888498064304471?l=richui.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://richui.blogspot.com/feeds/2784888498064304471/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7367481&amp;postID=2784888498064304471' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7367481/posts/default/2784888498064304471'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7367481/posts/default/2784888498064304471'/><link rel='alternate' type='text/html' href='http://richui.blogspot.com/2009/07/disruptive-change-in-business.html' title='Disruptive Change in Business Intelligence'/><author><name>Jep Castelein</name><uri>http://www.blogger.com/profile/02749121748856550538</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7367481.post-4323907872884985569</id><published>2009-05-11T18:50:00.000-07:00</published><updated>2009-05-11T19:32:55.273-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='obama'/><category scheme='http://www.blogger.com/atom/ns#' term='predatory lending'/><category scheme='http://www.blogger.com/atom/ns#' term='credit cards'/><category scheme='http://www.blogger.com/atom/ns#' term='abusive credit card industry practices'/><category scheme='http://www.blogger.com/atom/ns#' term='credit card bill'/><title type='text'>How Bank of America Steals from the Poor</title><content type='html'>Normally I don't write about politics, I prefer writing about topics related to my job. I vaguely heard about a Credit Card bill that Obama has proposed to end abusive lending practices. I'm not familiar with that bill, but I do have an experience that I would like to share. &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;When I moved to the US almost 4 years ago, I did not have a credit history. Therefore I applied for a secured credit card at Bank of America. They provided excellent service, and I was happy that I could start building a credit history, even though I had to deposit $1000 to get a $1000 spending limit. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Being privileged with a stable middle-class job and healthy spending habits, I was able to get better credit card offers fairly quickly. However, every 2 weeks I still get a letter from Bank of America that tries to lure me into an unsavory deal. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The envelope says "Account Information Enclosed" and it contains 3 checks that you can use with a 1.99% promotional APR that is good until January 2010 (8 months). That sounds like a great deal: you could pay the rent or the mortgage, for &lt;span class="Apple-style-span" style="font-style: italic;"&gt;only&lt;/span&gt; 2% interest. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;What is does &lt;span class="Apple-style-span" style="font-style: italic;"&gt;not &lt;/span&gt;say that a transaction fee of 4% applies (recently raised from 3%), and that after January 2010 the APR goes up to 20.99% (5% higher than the APR for credit purchases). Before BofA corrects me: it is listed in the small print, but it took me 5 minutes to find it. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So is this abusive or not? I tend to say 'Yes'. This offer is clearly designed for people who need cash most, and those are not financially priviliged, to say the least. The BofA letter only emphasizes the benefits, while hiding the downsides: people in urgent need for cash will be lured into this deal for sure. Therefore my strong statement: "BofA is stealing from the poor". &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;What do you think? Is this indeed unsavory, or is this just the American way of doing business: buyer beware?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;PS. I called in to stop receiving these checks, but that didn't help, they just increased the frequency.&lt;/div&gt;&lt;div&gt; &lt;br /&gt;&lt;/div&gt;&lt;div&gt;PPS. Also, I still pay a $39 annual fee just to have this BofA credit card (it's my oldest card, so I keep it for my credit history). BofA claims this fee is needed to ensure global acceptance, customer satisfaction, to provide online account access, to maintain security, and to give you balance transfers and cash access. Then why does my other credit card pay me approximately $1000 per year in cash back? &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7367481-4323907872884985569?l=richui.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://richui.blogspot.com/feeds/4323907872884985569/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7367481&amp;postID=4323907872884985569' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7367481/posts/default/4323907872884985569'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7367481/posts/default/4323907872884985569'/><link rel='alternate' type='text/html' href='http://richui.blogspot.com/2009/05/how-bank-of-america-steals-from-poor.html' title='How Bank of America Steals from the Poor'/><author><name>Jep Castelein</name><uri>http://www.blogger.com/profile/02749121748856550538</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7367481.post-9072974833739513130</id><published>2009-03-31T22:47:00.000-07:00</published><updated>2009-03-31T22:56:47.797-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='collaborative analytics'/><category scheme='http://www.blogger.com/atom/ns#' term='collaborative bi'/><category scheme='http://www.blogger.com/atom/ns#' term='saas'/><category scheme='http://www.blogger.com/atom/ns#' term='on-demand'/><category scheme='http://www.blogger.com/atom/ns#' term='business intelligence'/><title type='text'>Collaborative Analytics</title><content type='html'>Tomorrow I'm meeting with the marketing team at Good Data, an innovative provider of &lt;a href="http://www.gooddata.com/about/collaborative-analytics.html"&gt;Collaborative Analytics software&lt;/a&gt;.&lt;br /&gt;&lt;h3&gt;What is Collaborative Analytics?&lt;/h3&gt;As far as I currently understand, Collaborative Analytics allows a group of people to create reports on a dataset together, to discuss results, and to refine reports.&lt;br /&gt;&lt;br /&gt;It seems to me that there is still an important role for IT, or at least for a reasonably technical person, to upload the dataset and configure the data model. But after that initial step is taken, the reports are fairly easy to use by non-technical people.&lt;br /&gt;&lt;br /&gt;The 'collaborative' part of it is that they can leave comments in the reports, not unlike sticky notes. They also support tagging (like you do with blog posts) and revisions, so you can see who made which changes at which time (like with wikis).&lt;br /&gt;&lt;br /&gt;Good Data's collaborative analytics solutions runs on Amazon Web Services, so it is almost infinitely scalable.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7367481-9072974833739513130?l=richui.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://richui.blogspot.com/feeds/9072974833739513130/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7367481&amp;postID=9072974833739513130' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7367481/posts/default/9072974833739513130'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7367481/posts/default/9072974833739513130'/><link rel='alternate' type='text/html' href='http://richui.blogspot.com/2009/03/collaborative-analytics.html' title='Collaborative Analytics'/><author><name>Jep Castelein</name><uri>http://www.blogger.com/profile/02749121748856550538</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7367481.post-4311396439024859295</id><published>2009-03-30T20:09:00.000-07:00</published><updated>2009-03-30T20:18:13.950-07:00</updated><title type='text'>Stay Positive by Mark Victor Hansen</title><content type='html'>&lt;span class="ArticleSubTitle"&gt;&lt;span style="font-weight: bold;"&gt;How Mark Victor Hansen stays up through down times&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;It’s easy to stay motivated when times are flush. But staying up in down times? That requires a whole other set of skills.&lt;br /&gt;&lt;br /&gt;This post is to illustrate how choosing the right keywords in your Title, Heading and content of the article have a dramatic impact on search engine rankings.&lt;br /&gt;&lt;br /&gt;This article is about Mark Victor Hansen, and it talks about how he stays positive in a bad economy. So it is key to include his name, and the "Stay Positive" phrase in the title of the article.&lt;br /&gt;&lt;br /&gt;Also, any bold or italic text is assigned more weight. On the bright side: it is fairly easy to improve the search engine rankings when you focus just on a couple of things.&lt;br /&gt;&lt;br /&gt;This post refers to the article by Selling Power Magazine: &lt;a href="http://www.sellingpower.com/article/display.asp?coverStory=TRUE&amp;amp;aid=SP4774329&amp;amp;pageTitle="&gt;Stay Positive&lt;/a&gt;. By linking from here, the original article get more credibility.&lt;br /&gt;&lt;br /&gt;However, Google says it has not indexed this specific page. You can find out about this by typing the following in the Google search box:&lt;br /&gt;&lt;br /&gt;cache:http://www.sellingpower.com/article/display.asp?coverStory=TRUE&amp;amp;aid=SP4774329&amp;amp;pageTitle=&lt;br /&gt;&lt;br /&gt;However, the following URL is found:&lt;br /&gt;&lt;br /&gt;cache:http://www.sellingpower.com/article/display.asp?aid=SP4774329&lt;br /&gt;&lt;br /&gt;Therefore be careful with URL parameters: they may mess up your ranking.&lt;br /&gt;&lt;br /&gt;If you search for "Stay Positive Mark Victor Hansen" the Selling Power website is only on position 29, and the URL that is indexed is not a permanent URL, but the temporary 'cover page' URL.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7367481-4311396439024859295?l=richui.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://richui.blogspot.com/feeds/4311396439024859295/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7367481&amp;postID=4311396439024859295' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7367481/posts/default/4311396439024859295'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7367481/posts/default/4311396439024859295'/><link rel='alternate' type='text/html' href='http://richui.blogspot.com/2009/03/stay-positive-by-mark-victor-hansen.html' title='Stay Positive by Mark Victor Hansen'/><author><name>Jep Castelein</name><uri>http://www.blogger.com/profile/02749121748856550538</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7367481.post-7623446748578840563</id><published>2009-03-17T22:24:00.001-07:00</published><updated>2009-03-17T22:40:44.173-07:00</updated><title type='text'>Wedding Website</title><content type='html'>My fiancee and I recently created a website for our wedding. However, people google "Tina Jep Wedding" and they don't find our website.&lt;br /&gt;&lt;br /&gt;I found out that the site (www.tina-jep.com) is &lt;a href="http://209.85.173.132/search?hl=en&amp;amp;q=cache%3Ahttp%3A%2F%2Fwww.tina-jep.com"&gt;not indexed by Google&lt;/a&gt;, probably because no other sites are linking to it.&lt;br /&gt;&lt;br /&gt;You can &lt;a href="http://www.google.com/addurl/?continue=/addurl"&gt;add a site to Google&lt;/a&gt;, to make Google index it. But this can take a while.&lt;br /&gt;&lt;br /&gt;Just to be sure, I'm also adding the link on this website. Google is adding more weight to websites if other websites link to them, ideally using the keywords that are relevant, such as: &lt;a href="http://www.tina-jep.com"&gt;Tina and Jep's Wedding Website&lt;/a&gt;. I hope this helps!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7367481-7623446748578840563?l=richui.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://richui.blogspot.com/feeds/7623446748578840563/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7367481&amp;postID=7623446748578840563' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7367481/posts/default/7623446748578840563'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7367481/posts/default/7623446748578840563'/><link rel='alternate' type='text/html' href='http://richui.blogspot.com/2009/03/wedding-website.html' title='Wedding Website'/><author><name>Jep Castelein</name><uri>http://www.blogger.com/profile/02749121748856550538</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7367481.post-1459907975198214185</id><published>2009-02-22T08:00:00.001-08:00</published><updated>2009-02-22T17:07:17.573-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='marketing automation'/><category scheme='http://www.blogger.com/atom/ns#' term='leadsloth'/><category scheme='http://www.blogger.com/atom/ns#' term='demand generation'/><title type='text'>Jep's main blog has moved</title><content type='html'>Over the past couple of months I've started blogging at &lt;a href="http://www.leadsloth.com"&gt;LeadSloth on Demand Generation&lt;/a&gt;. This is a blog about Demand Generation, and specifically about Marketing Automation tools that facilitate Demand Generation.&lt;br /&gt;&lt;br /&gt;I cover &lt;a href="http://www.leadsloth.com/demand-generation-software/"&gt;Demand Generation Software&lt;/a&gt;, &lt;a href="http://www.leadsloth.com/webinar-software/"&gt;Webinar software and tools&lt;/a&gt;, Web Analytics, Email marketing, website management and landing pages, social media monitoring and search marketing.&lt;br /&gt;&lt;br /&gt;I may occasionally still post on this blog, but please visit the LeadSloth blog for frequent posts.&lt;br /&gt;&lt;br /&gt;Also, I sometimes update status on my LinkedIn page, so for visit LinkedIn if you're interested in that: &lt;a href="http://www.linkedin.com/in/jepcastelein"&gt;Jep Castelein&lt;/a&gt; on LinkedIn.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7367481-1459907975198214185?l=richui.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://richui.blogspot.com/feeds/1459907975198214185/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7367481&amp;postID=1459907975198214185' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7367481/posts/default/1459907975198214185'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7367481/posts/default/1459907975198214185'/><link rel='alternate' type='text/html' href='http://richui.blogspot.com/2009/02/jeps-main-blog-has-moved.html' title='Jep&apos;s main blog has moved'/><author><name>Jep Castelein</name><uri>http://www.blogger.com/profile/02749121748856550538</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7367481.post-775921230799691336</id><published>2007-12-16T15:26:00.001-08:00</published><updated>2008-08-25T16:27:04.242-07:00</updated><title type='text'>Ajax Survey Results: What is happening in the Ajax market?</title><content type='html'>Ajaxian and Richard Monson-Haefel did a market share survey of Ajax Tools, and &lt;a href="http://rmh.blogs.com/weblog/2007/12/2007-ajax-tools.html"&gt;the results were published&lt;/a&gt; this Friday. The results show that the Ajax market is more diversified in 2007 than it was in 2005. How is that possible?&lt;br /&gt;&lt;br /&gt;First of all, this survey shows that ‘raw Ajax’ is disappearing rapidly, going from 40% to 25% to 13% in 2 years time. That is clear sign of a market getting more mature. However, that still leaves more toolkits out there, and no clear winners in terms of market share.&lt;br /&gt;&lt;br /&gt;I don’t have access to the full list of results, so I have to guess a little. My first gut feeling is that more and more server-side projects include some type of Ajax – just as one of the many features – and they all get added to the list (e.g. Django). My second gut feeling is that many toolkits have less than 1% market share, making them less relevant. Maybe Richard can publish the full list so we can do some further analysis.&lt;br /&gt;&lt;br /&gt;Also, I think developers start to find out what type of development paradigm they prefer. For example, GWT has a development model that appeals to a certain type of Java developer: those who have worked with Swing applications before. However, that’s only a small percentage of developers, so GWT is not in the top-10 Ajax frameworks. However, Swing developers love GWT.&lt;br /&gt;&lt;br /&gt;Then we still see some new entrants into the top-10 such as jQuery and Ext JS. I don’t have hands-on experience with these frameworks, but based on what I read about them, they have introduced clear innovations in the Ajax market: jQuery with its programming model, which includes using CSS selectors; Ext JS with Widgets that look much better than the widgets of any other open source Ajax framework. That might also explain why Prototype looses market share.&lt;br /&gt;&lt;br /&gt;What I find surprising is that Dojo is also loosing market share, and there is no obvious open source alternative for Dojo. I mean: an alternative that aims to be just as comprehensive. Does this mean that lightweight frameworks are gaining ground, or that people look at commercial frameworks if need comprehensive functionality? Or is it that people still find Dojo difficult to use: I’ve certainly heard several people who gave up on it.&lt;br /&gt;&lt;br /&gt;Richard also mentions that Backbase is the only commercial Ajax framework with significant market share. That’s a trend that I’ve also seen: other than Backbase, many commercial vendors wither and then make their product open source in the hope they will get more adoption. It’s a really tough market for commercial products, because there are a lot of decent free products out there. The only option is to make a superior product, with excellent training, support and services. And – working for Backbase – I know we have focused on that: we aim to deliver the total package and I believe that is what made Backbase successful.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7367481-775921230799691336?l=richui.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7367481/posts/default/775921230799691336'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7367481/posts/default/775921230799691336'/><link rel='alternate' type='text/html' href='http://richui.blogspot.com/2007/12/ajax-survey-results-what-is-happening.html' title='Ajax Survey Results: What is happening in the Ajax market?'/><author><name>Jep Castelein</name><uri>http://www.blogger.com/profile/02749121748856550538</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-7367481.post-3792975304010999824</id><published>2007-12-10T22:23:00.000-08:00</published><updated>2007-12-10T22:27:00.984-08:00</updated><title type='text'>LinkedIn Profile</title><content type='html'>I've updated my LinkedIn profile: &lt;a href="http://www.linkedin.com/in/jepcastelein"&gt;Jep Castelein&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Plaxo and Facebook are also getting more popular as B2B social networks, but for now I'll stick to LinkedIn because it seems to be the most popular. I hope to avoids having to update my profile in 3 different locations :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7367481-3792975304010999824?l=richui.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://richui.blogspot.com/feeds/3792975304010999824/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7367481&amp;postID=3792975304010999824' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7367481/posts/default/3792975304010999824'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7367481/posts/default/3792975304010999824'/><link rel='alternate' type='text/html' href='http://richui.blogspot.com/2007/12/linkedin-profile.html' title='LinkedIn Profile'/><author><name>Jep Castelein</name><uri>http://www.blogger.com/profile/02749121748856550538</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7367481.post-3868497156528996876</id><published>2007-10-03T19:27:00.000-07:00</published><updated>2007-10-03T19:35:52.384-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='backbase'/><category scheme='http://www.blogger.com/atom/ns#' term='ajax'/><title type='text'>Ajax Training, Online Instructor-Led</title><content type='html'>Backbase has an &lt;a href="http://www.backbase.com/services/training/ajax-training/"&gt;online Ajax training&lt;/a&gt;, which is specially developed for web developers within mid-size to large companies, who have worked with HTML and CSS before, but not yet with Ajax. Ajax is a combination of existing technologies, such as JavaScript, HTML, XML and CSS. The course provides a refresher on those technologies plus an explanation of how they work together to create Ajax applications. It only takes 10 hours, spread out over 3 days, to cover these materials: so a great way to get started with Ajax quickly. There are more &lt;a href="http://www.backbase.com/services/training/overview/"&gt;advanced Ajax training courses&lt;/a&gt; available if you'd like to go beyond the basics. The next &lt;a href="http://www.backbase.com/services/training/ajax-training/"&gt;Ajax training course&lt;/a&gt; starts on October 22nd 2007. You can find more information here: &lt;a href="http://www.backbase.com/services/training/ajax-training/"&gt;http://www.backbase.com/services/training/ajax-training/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7367481-3868497156528996876?l=richui.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://richui.blogspot.com/feeds/3868497156528996876/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7367481&amp;postID=3868497156528996876' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7367481/posts/default/3868497156528996876'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7367481/posts/default/3868497156528996876'/><link rel='alternate' type='text/html' href='http://richui.blogspot.com/2007/10/ajax-training-online-instructor-led.html' title='Ajax Training, Online Instructor-Led'/><author><name>Jep Castelein</name><uri>http://www.blogger.com/profile/02749121748856550538</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7367481.post-115281117231652952</id><published>2006-07-13T08:56:00.000-07:00</published><updated>2006-08-03T09:05:07.923-07:00</updated><title type='text'>Accessibility for Enhanced AJAX Frameworks</title><content type='html'>&lt;p&gt;As AJAX is becoming more widely used, important issues like &lt;a href="http://ajaxian.com/by/topic/security/"&gt;security&lt;/a&gt;, interoperability and &lt;a href="http://ajaxian.com/by/topic/accessibility/"&gt;accessibility&lt;/a&gt; are getting more attention. At the same time, &lt;a href="http://ajax.sys-con.com/read/166503.htm"&gt;different types of AJAX applicatications&lt;/a&gt; are being identified, which is also being picked up by the analysts, such as &lt;a href="http://adtmag.com/article.aspx?id=17953"&gt;Ray Valdez of Gartner&lt;/a&gt;:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Snippet level&lt;/li&gt;&lt;li&gt;Widget level&lt;/li&gt;&lt;li&gt;Framework level&lt;/li&gt;&lt;li&gt;Enhanced Framework level&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;I feel the important AJAX issues can best be evaluated in the light of the different types of AJAX to result in the most useful recommendations. &lt;/p&gt;&lt;h4&gt;AJAX Accessibility for AJAX Frameworks&lt;/h4&gt;&lt;p&gt;I had to think about this classification because we just published a &lt;a href="http://ajaxian.com/archives/backbase-ajax-accessibility-for-single-page-apps"&gt;whitepaper on AJAX and Accessibility&lt;/a&gt;. A lot has &lt;a href="http://www.maxkiesler.com/index.php/weblog/comments/how_to_make_your_ajax_applications_accessible/"&gt;already been written&lt;/a&gt; on this topic, so I was thinking how this whitepaper differentiates itself. Then I realized it's specifically about Frameworks and Enhanced Frameworks, where the user interface is fairly complex and uses a single-page interface. This is exactly the type of AJAX project that we're are typically working on. &lt;/p&gt;&lt;p&gt;So if you also work on more complex AJAX projects that are based on a framework (such as Backbase), you might want to take a look at this document. &lt;/p&gt;&lt;p&gt;&lt;a href="http://www.backbase.com/download/AJAX_Accessibility_Guidelines.pdf"&gt;Download the Accessibility Guidelines for AJAX&lt;/a&gt; (PDF, 140Kb)&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7367481-115281117231652952?l=richui.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://richui.blogspot.com/feeds/115281117231652952/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7367481&amp;postID=115281117231652952' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7367481/posts/default/115281117231652952'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7367481/posts/default/115281117231652952'/><link rel='alternate' type='text/html' href='http://richui.blogspot.com/2006/07/accessibility-for-enhanced-ajax.html' title='Accessibility for Enhanced AJAX Frameworks'/><author><name>Jep Castelein</name><uri>http://www.blogger.com/profile/02749121748856550538</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7367481.post-113452456548900282</id><published>2005-12-13T17:01:00.000-08:00</published><updated>2005-12-13T17:42:45.526-08:00</updated><title type='text'>Moved to San Francisco</title><content type='html'>Since a couple of weeks I'm living in San Francisco, and working for the &lt;a href="http://maps.google.com/maps?q=1670+South+Amphlett+Blvd.,+San+Mateo,+California&amp;iwloc=A&amp;hl=en"&gt;San Mateo office&lt;/a&gt; of &lt;a href="http://www.backbase.com"&gt;Backbase&lt;/a&gt;. So I was pretty busy finalizing work in Amsterdam, moving my stuff out of my apartment, and so on. And on the other end of the ocean I had to find an apartment, buy a car, get a cell phone, bank account, credit card, etcetera. And obviously we had to get the office started, together with a team of local Backbase employees. In short: a busy time. &lt;br /&gt;&lt;br /&gt;There is a lot of demand for AJAX software in the US market, and there are not that many vendors. Especially the new pricing of Backbase ($1995 per CPU, one-time fee) appeals to many prospects. So we made a good start with our office. &lt;br /&gt;&lt;br /&gt;From now on I will try to write more frequently on this blog, and on the &lt;a href="http://www.backbase.com/weblog"&gt;Backbase weblog&lt;/a&gt;. There are still several interesting AJAX topics to cover, and I will focus mainly on performance and networking issues, in combination with AJAX. &lt;br /&gt;&lt;br /&gt;By the way, I just read an &lt;a href="http://www.bitcurrent.com/?p=105"&gt;interesting post&lt;/a&gt; by Alistair Croll which explains why AJAX applications issue more HTTP requests, and often download more data, while still being more responsive than traditional applications.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7367481-113452456548900282?l=richui.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://richui.blogspot.com/feeds/113452456548900282/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7367481&amp;postID=113452456548900282' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7367481/posts/default/113452456548900282'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7367481/posts/default/113452456548900282'/><link rel='alternate' type='text/html' href='http://richui.blogspot.com/2005/12/moved-to-san-francisco.html' title='Moved to San Francisco'/><author><name>Jep Castelein</name><uri>http://www.blogger.com/profile/02749121748856550538</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7367481.post-112922674206384045</id><published>2005-10-13T11:04:00.000-07:00</published><updated>2005-10-13T11:05:42.066-07:00</updated><title type='text'>Backbase compared with Microsoft Atlas</title><content type='html'>On the Backbase weblog I've made a comparison between Backbase and Microsoft Atlas: &lt;br /&gt;&lt;a href="http://www.backbase.com/weblog/?p=11"&gt;http://www.backbase.com/weblog/?p=11&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7367481-112922674206384045?l=richui.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://richui.blogspot.com/feeds/112922674206384045/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7367481&amp;postID=112922674206384045' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7367481/posts/default/112922674206384045'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7367481/posts/default/112922674206384045'/><link rel='alternate' type='text/html' href='http://richui.blogspot.com/2005/10/backbase-compared-with-microsoft-atlas.html' title='Backbase compared with Microsoft Atlas'/><author><name>Jep Castelein</name><uri>http://www.blogger.com/profile/02749121748856550538</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7367481.post-112920768894065707</id><published>2005-10-13T05:36:00.000-07:00</published><updated>2005-10-13T05:48:08.946-07:00</updated><title type='text'>The Backbase Weblog based on WordPress</title><content type='html'>In this blog I've mentioned my employer &lt;a href="http://www.backbase.com"&gt;Backbase&lt;/a&gt; quite frequently. At Backbase we've now created a company weblog at &lt;a href="http://www.backbase.com/weblog"&gt;http://www.backbase.com/weblog&lt;/a&gt;: from now on I will post most new articles on the Backbase blog, so please update your &lt;a href="feed:http://www.backbase.com/weblog/?feed=rss2"&gt;RSS feeds&lt;/a&gt;. The Backbase blog will cover general AJAX topics, with so now and then a Backbase-specific article. &lt;br /&gt;&lt;br /&gt;On this weblog I will keep posting about AJAX &amp; Performance and personal topics. For example, I will write some more about AJAX &amp; Latency, which turned out to be a fairly popular topic. &lt;br /&gt;&lt;br /&gt;The new Backbase weblog is built using WordPress. We've added some small Backbase features, such as animations, and input validation for commenting. Today it works only IE &amp; Firefox/Mozilla, but we'll make it degrade gracefully for other browsers soon. I'm also looking forward to improve the commenting functionality, because I feel AJAX can have real usability benefits there.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7367481-112920768894065707?l=richui.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://richui.blogspot.com/feeds/112920768894065707/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7367481&amp;postID=112920768894065707' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7367481/posts/default/112920768894065707'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7367481/posts/default/112920768894065707'/><link rel='alternate' type='text/html' href='http://richui.blogspot.com/2005/10/backbase-weblog-based-on-wordpress.html' title='The Backbase Weblog based on WordPress'/><author><name>Jep Castelein</name><uri>http://www.blogger.com/profile/02749121748856550538</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7367481.post-112742049667016559</id><published>2005-09-22T13:11:00.000-07:00</published><updated>2005-09-22T13:21:36.676-07:00</updated><title type='text'>JSON vs XML</title><content type='html'>&lt;a href="http://blogs.ebusiness-apps.com/dave/"&gt;Dave Johnson&lt;/a&gt; has an &lt;a href="http://blogs.ebusiness-apps.com/dave/?p=43"&gt;interesting post&lt;/a&gt; about the preferred data transport format for AJAX: is it XML or &lt;a href="http://www.crockford.com/JSON/index.html"&gt;JSON&lt;/a&gt;? He prefers XML. So do I. Dave emphasizes the importance of XML on the client: he uses a datagrid to illustrate this. Personally I like the clean architecture when you just load XML to the client and transform it to whatever you like using XSLT. The XML family of standards seems to be a very good fit with the browser world, and - according to Dave's article - the performance is also pretty good.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7367481-112742049667016559?l=richui.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://richui.blogspot.com/feeds/112742049667016559/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7367481&amp;postID=112742049667016559' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7367481/posts/default/112742049667016559'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7367481/posts/default/112742049667016559'/><link rel='alternate' type='text/html' href='http://richui.blogspot.com/2005/09/json-vs-xml.html' title='JSON vs XML'/><author><name>Jep Castelein</name><uri>http://www.blogger.com/profile/02749121748856550538</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7367481.post-112656031572661492</id><published>2005-09-12T14:15:00.000-07:00</published><updated>2005-09-12T14:34:45.103-07:00</updated><title type='text'>AJAX: reducing latency with a CDN</title><content type='html'>&lt;p&gt;In my &lt;a href="http://richui.blogspot.com/2005/09/ajax-latency-problems-myth-or-reality.html"&gt;previous article&lt;/a&gt; about AJAX and Latency I talked about the effect of high network latency on AJAX applications. My suggestion was that well-designed AJAX apps can still be more responsive than traditional web applications, even with high latency. Nevertheless, a low-latency connection is always better than a high-latency connection: so on &lt;a href="http://www.backbase.com"&gt;backbase.com&lt;/a&gt; we're  improving the infrastructure. First we've measured performance, and now we're optimizing the site itself, and we're considering a Content Distribution Network. A lot of this can also be applied to regular websites, but I'll highlight some AJAX peculiarities along the way.&lt;/p&gt;&lt;h4&gt;Measuring latency&lt;/h4&gt;&lt;p&gt;So now and then we get complaints about the speed of the Backbase website, so we've looked at several well-known performance management tools, such as &lt;a href="http://www.gomez.com/"&gt;Gomez&lt;/a&gt; and &lt;a href="http://www.keynote.com/"&gt;Keynote&lt;/a&gt;: they usually measure entire pages, including images, CSS and JavaScript. Although the Gomez service can handle JavaScript, it has problems with some AJAX sites, including our own: so we couldn't reap the benefits of this advanced service. Therefore we've settled for &lt;a href="http://www.watchmouse.com"&gt;Watchmouse&lt;/a&gt;, which offers affordable availability and performance monitoring for single files from 14 world-wide locations. Watchmouse gives us the following data:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;em&gt;Connect time&lt;/em&gt;: the connection is made&lt;/li&gt;&lt;li&gt;&lt;em&gt;First-byte time&lt;/em&gt;: the first byte of the response arrives&lt;/li&gt;&lt;li&gt;&lt;em&gt;Download time&lt;/em&gt;: the entire file is downloaded&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;We measured the following averages (milliseconds):&lt;/p&gt;&lt;table&gt; &lt;th&gt;&lt;td&gt;Connect&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/td&gt; &lt;td&gt;First byte&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/td&gt;  &lt;td&gt;Download&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/td&gt;&lt;td&gt;Kb/sec&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/td&gt;&lt;/th&gt;&lt;br /&gt; &lt;tr&gt;&lt;td&gt;Netherlands&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/td&gt;&lt;td&gt;5.47&lt;/td&gt; &lt;td&gt;111.41&lt;/td&gt;&lt;td&gt;298.28&lt;/td&gt; &lt;td&gt;237.92&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;&lt;td&gt;Sweden&lt;/td&gt;&lt;td&gt;28.50&lt;/td&gt;&lt;td&gt;154.00&lt;/td&gt;&lt;td&gt;413.83&lt;/td&gt; &lt;td&gt;149.81&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;&lt;td&gt;Italy&lt;/td&gt;&lt;td&gt;49.00&lt;/td&gt;&lt;td&gt;225.00&lt;/td&gt; &lt;td&gt;448.57&lt;/td&gt;&lt;td&gt;185.58&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td&gt;New York&lt;/td&gt;&lt;td&gt;134.56&lt;/td&gt;&lt;td&gt;368.11&lt;/td&gt;&lt;td&gt;892.11&lt;/td&gt;&lt;td&gt;92.89&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td&gt;Florida&lt;/td&gt;&lt;td&gt;118.33&lt;/td&gt;&lt;td&gt;318.83&lt;/td&gt;&lt;td&gt;895.00&lt;/td&gt;&lt;td&gt;73.43&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td&gt;California&lt;/td&gt; &lt;td&gt;169.00&lt;/td&gt; &lt;td&gt;419.83&lt;/td&gt;&lt;td&gt;977.00&lt;/td&gt;&lt;td&gt;70.63&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td&gt;Texas&lt;/td&gt;&lt;td&gt;130.00&lt;/td&gt;&lt;td&gt;343.57&lt;/td&gt; &lt;td&gt;1724.86&lt;/td&gt;&lt;td&gt;29.72&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td&gt;Singapore&lt;/td&gt;&lt;td&gt;361.67&lt;/td&gt;&lt;td&gt;869.00&lt;/td&gt; &lt;td&gt;2102.00&lt;/td&gt;  &lt;td&gt;32.62&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Australia&lt;/td&gt;&lt;td&gt;369.37&lt;/td&gt;&lt;td&gt;763.17&lt;/td&gt; &lt;td&gt;2040.83&lt;/td&gt;&lt;td&gt;33.07&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;p&gt;So the farther you get from our server in Amsterdam, the greater the latency. With latency I mean &lt;em&gt;first-byte time&lt;/em&gt; (although you can define latency in different ways). This is a measurement for 1 file. I've made a rough calculation for the total download time of our home page:&lt;/p&gt;&lt;p&gt;&lt;code&gt;download time = &lt;br/&gt;(# of files / 2 concurrent HTTP connections) * first-byte time &lt;br/&gt;+ (download size / download speed)&lt;/code&gt;&lt;/p&gt;&lt;p&gt;I'm not sure if this is entirely correct, but it seems to give a good approximation, for example for California:&lt;/p&gt;&lt;p&gt;&lt;code&gt;(70 / 2) * 0.41983 + 200 / 70.63 &lt;br/&gt;= 14.7 (latency) + 2.8 (download time) &lt;br/&gt;= 17.5 seconds&lt;/code&gt;&lt;/p&gt;&lt;p&gt;So the latency is about 4 times more important than download size. It also highlights that most web hosting providers offer adequate downloads speeds: our provider is small, but the connection is fast. We also tested the speed of some large providers, and this didn't make much of a difference in speed. Our action points are:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Reduce the number of file requests for the home page&lt;/li&gt;&lt;li&gt;Implement world-wide caching (CDN)&lt;/li&gt;&lt;/ul&gt;&lt;h4&gt;Reduce the number of files&lt;/h4&gt;&lt;p&gt;When we first measured, the number of files was about 87. We've already reduced this number to 68 files by merging many CSS files into 2 files, merging many HTML files, and combining some images. As you can see in the table below, 2/3 of the files are images: because we don't want to change the design, we can't improve much further. We can still merge the JavaScript files, but then we're more or less done. So if we reduce from 87 files to 60 files we already have a 30% improvement. Then it's up to caching for further improvements.&lt;/p&gt;&lt;table&gt;&lt;th&gt;&lt;td style="padding: 5px;"&gt;Size (Kb)&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/td&gt; &lt;td&gt;Size (%)&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/td&gt;&lt;td&gt;# of files&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/td&gt; &lt;td&gt;% of files&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/td&gt;&lt;/th&gt; &lt;tr&gt;&lt;td&gt;Images:&lt;/td&gt;&lt;td&gt;117197&lt;/td&gt;&lt;td&gt;62.9%&lt;/td&gt;&lt;td&gt;45&lt;/td&gt;&lt;td&gt;66.2%&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;&lt;td&gt;HTML:&lt;/td&gt;&lt;td&gt;16695&lt;/td&gt;&lt;td&gt;9.0%&lt;/td&gt;&lt;td&gt;11&lt;/td&gt;&lt;td&gt;16.2%&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;&lt;td&gt;CSS:&lt;/td&gt;&lt;td&gt;8615&lt;/td&gt;&lt;td&gt;4.6%&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;2.9%&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td&gt;JavaScript:&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/td&gt;&lt;td&gt;43753&lt;/td&gt;&lt;td&gt;23.5%&lt;/td&gt; &lt;td&gt;10&lt;/td&gt;&lt;td&gt;14.7&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td&gt;TOTAL:&lt;/td&gt;&lt;td&gt;186,260&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;68&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt; &lt;/table&gt;&lt;h4&gt;World-wide caching (CDN)&lt;/h4&gt;&lt;p&gt;Even if we have a home page with 60 files, the impact of latency is still considerable. Looking at the characteristics of latency, we have to get the files as close as possible to our web site visitors. Enter 'CDN', or Content Distribution Network. A CDN caches the most-requested files from your site on servers scattered across the globe, and they send visitors to the nearest cached copy of your web site. If files are not in cache or if files are dynamic, they are retrieved from the origin server, usually over an optimized connection.&lt;/p&gt;&lt;p&gt;There are a couple of things to consider when using a CDN with an AJAX website:&lt;/p&gt;&lt;ul&gt; &lt;li&gt;JavaScript cannot load files from other (sub-)domains&lt;/li&gt;&lt;li&gt;Some CDNs are more suitable for AJAX sites&lt;/li&gt;&lt;li&gt;AJAX actually works very well with CDNs!&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;The first item is the security-across-domains issue: if your page is on &lt;code&gt;www.domain.com&lt;/code&gt;, AJAX cannot load files from &lt;code&gt;www.whatever.com&lt;/code&gt; or &lt;code&gt;whatever.domain.com&lt;/code&gt; (only with a trick in IE). Why is this important? Because several CDNs use an &lt;code&gt;image.domain.com&lt;/code&gt; subdomain that you use to load all static files. This subdomain refers to the dynamic DNS server of the CDN network. An alternative is to have &lt;code&gt;www.domain.com&lt;/code&gt; hosted by the CDN's DNS servers: now you should specify which files should be cached, and which files should be loaded from the origin server. I haven't tested this myself yet, so any feedback is welcome. &lt;/p&gt;&lt;p&gt;The first large CDN was &lt;a href="http://www.akamai.com"&gt;Akamai&lt;/a&gt;: they now have 14,000 servers in 65+ countries. The last couple of years a new type of CDN optimized for rich media was introduced, for example by &lt;a href="http://www.limelightnetworks.com"&gt;Limelight&lt;/a&gt;. Those providers have fewer servers, but connections optimized for fast delivery of large files with high quality of service. A third approach focuses on world-wide distribution of intranet applications (ERP, CRM, etc.). They link up a limited number of office locations: &lt;a href="http://www.netli.com/"&gt;Netli&lt;/a&gt; is the pioneer in this area. In our case we have many small files delivered to a lot of visitors from many different locations: this seems to favor the Akamai model. &lt;a href="http://www.mirror-image.com/"&gt;Mirror Image&lt;/a&gt; (and possibly &lt;a href="http://www.savvis.net"&gt;Savvis&lt;/a&gt;) offer a similar service. Again, feedback is welcome, as we are still selecting a CDN vendor.&lt;/p&gt;&lt;p&gt;Although AJAX creates some constraints for CDN usage, it's also more effective compared with regular websites. This is because you can 'assemble' the page on the client-side. In traditional sites, the page is either dynamic or static (I define static as 'the same for each user', so it could dynamically generated on the server, but just not personalized). If it's static it can be cached, if it's dynamic it cannot be cached. An AJAX page can be partly static, and partly dynamic, where the dynamic part is retrieved with XMLHttpRequest. This is also the case on &lt;a href="http://www.backbase.com"&gt;Backbase.com&lt;/a&gt;: only 1 file is dynamic, the login dialog. So 98% of the files can be cached, except for this 1 file. Pretty good.&lt;p&gt;&lt;h4&gt;To summarize&lt;/h4&gt;&lt;p&gt;If you are running a global AJAX website in which you have a lot of static file requests, first try to reduce the number of files, and then consider a 'traditional' CDN to further improve performance. Be aware of the 'security-across-domain' issue. When we've implemented a CDN I can tell you more about the results. If you have good tips for selecting a CDNs, let me know!&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7367481-112656031572661492?l=richui.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://richui.blogspot.com/feeds/112656031572661492/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7367481&amp;postID=112656031572661492' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7367481/posts/default/112656031572661492'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7367481/posts/default/112656031572661492'/><link rel='alternate' type='text/html' href='http://richui.blogspot.com/2005/09/ajax-reducing-latency-with-cdn.html' title='AJAX: reducing latency with a CDN'/><author><name>Jep Castelein</name><uri>http://www.blogger.com/profile/02749121748856550538</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7367481.post-112603597066268540</id><published>2005-09-06T12:28:00.000-07:00</published><updated>2005-09-06T12:48:56.486-07:00</updated><title type='text'>Backbase in Top 10 Ajax apps - twice</title><content type='html'>Dan Grossman, a venture capitalist from &lt;a href="http://www.venrock.com/"&gt;Venrock Associates&lt;/a&gt; created a &lt;a href="http://www.aventureforth.com/?p=13"&gt;Top 10 of Ajax applications&lt;/a&gt;. Other than the &lt;a href="http://www.ajaxpatterns.org/Ajax_Examples"&gt;Ajax app list on Ajax Patterns&lt;/a&gt;, this list has a ranking from 1 to 10. It does not include applications by large companies such as Google or Yahoo!&lt;br /&gt;&lt;br /&gt;Number 1 is &lt;a href="http://www.kiko.com"&gt;Kiko&lt;/a&gt;, the online calender, and number 2 is the &lt;a href="http://www.backbase.com/demos/RSS"&gt;Backbase RSS Reader&lt;/a&gt;, our newest demo application. The &lt;a href="http://projects.backbase.com/RUI/portal.html"&gt;Backbase Portal&lt;/a&gt; (one of our most long-standing demos) is featured on place 8, and the recently updated &lt;a href="http://www.backbase.com/demos/explorer"&gt;Backbase Explorer&lt;/a&gt; is number 3 on the list of honorable mentions. &lt;br /&gt;&lt;br /&gt;Personally I also like the &lt;a href="http://www.backbase.com/demos/windows/"&gt;Backbase Windows&lt;/a&gt; starter kit, although it could be expanded a bit more. The embedded movie is quite funny, by the way.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7367481-112603597066268540?l=richui.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://richui.blogspot.com/feeds/112603597066268540/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7367481&amp;postID=112603597066268540' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7367481/posts/default/112603597066268540'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7367481/posts/default/112603597066268540'/><link rel='alternate' type='text/html' href='http://richui.blogspot.com/2005/09/backbase-in-top-10-ajax-apps-twice.html' title='Backbase in Top 10 Ajax apps - twice'/><author><name>Jep Castelein</name><uri>http://www.blogger.com/profile/02749121748856550538</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7367481.post-112594283972006453</id><published>2005-09-05T10:47:00.000-07:00</published><updated>2005-09-05T10:53:59.730-07:00</updated><title type='text'>Improve the Backbase page on Wikipedia...</title><content type='html'>We need your help: the Backbase page on Wikipage could be deleted if we don't add more content to it. As Wikipedia is a collaborative effort (and not a marketing brochure), you can help by adding text to this page. To contribute, just go to &lt;a href="http://en.wikipedia.org/wiki/Backbase"&gt;http://en.wikipedia.org/wiki/Backbase&lt;/a&gt;, and click on 'edit this page'. Just make sure the information has a neutral point of view and would be interesting for anyone who wants to learn more about Backbase. &lt;br /&gt;&lt;br /&gt;Thank you!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7367481-112594283972006453?l=richui.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://richui.blogspot.com/feeds/112594283972006453/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7367481&amp;postID=112594283972006453' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7367481/posts/default/112594283972006453'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7367481/posts/default/112594283972006453'/><link rel='alternate' type='text/html' href='http://richui.blogspot.com/2005/09/improve-backbase-page-on-wikipedia.html' title='Improve the Backbase page on Wikipedia...'/><author><name>Jep Castelein</name><uri>http://www.blogger.com/profile/02749121748856550538</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7367481.post-112585696530333713</id><published>2005-09-04T10:56:00.000-07:00</published><updated>2005-09-04T11:05:17.080-07:00</updated><title type='text'>AJAX Latency problems: myth or reality?</title><content type='html'>&lt;p&gt;I've read many articles on AJAX and network latency in the last year, but every article seems to claim to a different thing: one talks about latency as a problem specific to AJAX, while others claim that especially AJAX applications can overcome network latency problems. While yet others take a hands-on approach and build tools to simulate network latency on localhost. Confused...&lt;/p&gt;&lt;p&gt;So I searched Google for &lt;a href="http://www.google.com/search?q=ajax+latency"&gt;'AJAX Latency'&lt;/a&gt;, and read many of these articles again. Below is short overview of what I've found.&lt;/p&gt;&lt;p&gt;The first hit is from &lt;a href="http://en.wikipedia.org/wiki/AJAX"&gt;Wikipedia (3 Sept 2005)&lt;/a&gt;: &lt;/p&gt;&lt;blockquote&gt;"An additional complaint about Ajax revolves around latency, or the duration of time it takes a web application to respond to user input. Given the fact that Ajax applications depend on network communication between web browser and web server, any delay in that communication can introduce delay in the interface of the web application, something which users might not expect or understand."&lt;/blockquote&gt;&lt;p&gt;They refer to &lt;a href="http://www.lastcraft.com/blog/index.php?p=19"&gt;'Listen kids, AJAX is not cool'&lt;/a&gt;:&lt;/p&gt;&lt;blockquote&gt;"If you writing a user interface, make sure it responds in 1/10th of a second. That’s a pretty simple rule, and if you break it, you will distract the user."&lt;/blockquote&gt;&lt;p&gt;I agree with one thing: you do want a response in 1/10th of a second. But is this realistic? Cédric Savarese &lt;a href="http://formassembly.com/blog/ajax-not-all-about-xmlhttprequest/"&gt;points out&lt;/a&gt; that - even when it's not 1/10th of a second - the user expects to see something loading: he suggests using a loading indicator as a replacement for the traditional page refresh. But then he also mentions another perpective:&lt;/p&gt;&lt;blockquote&gt;"What happens really is that XmlHttpRequest is not used for what it is good at: asynchronous, behind-the-scene, access to the server, but in the context of a synchronous transaction by the user. Users want instant feedback from an application, and a better way to achieve that is by freeing the application from its over-reliance on the server." &lt;/blockquote&gt;&lt;p&gt;And Michael Mahemoff (of &lt;a href="http://www.ajaxpatterns.org"&gt;Ajax Patterns&lt;/a&gt; fame) &lt;a href="http://www.theserverside.com/news/thread.tss?thread_id=33938#170784"&gt;adds the following&lt;/a&gt;: &lt;/p&gt;&lt;blockquote&gt;"It's not an all-or-none thing. With AJAX, you can continue to download in the background if you want. "&lt;/blockquote&gt;&lt;p&gt;So they suggest moving more intelligence to the client, and loading data in a smart way, ideally asynchronously without having the user wait for it: I think that's really what that first 'A' of AJAX is all about. But this could mean that you're loading more data on application startup, using precious bandwidth. Or maybe you're even loading data that the user will never see (pre-loading). I found a very punchy quote in a &lt;a href="http://www.theserverside.com/news/thread.tss?thread_id=33938#170761"&gt;discussion on &lt;abbr title="The Server Side"&gt;TSS&lt;/abbr&gt;&lt;/a&gt;: &lt;/p&gt;&lt;blockquote&gt;"These days, bandwidth is cheap, latency expensive."&lt;/blockquote&gt;&lt;p&gt;I can confirm this from my own experience: on &lt;a href="http://www.backbase.com"&gt;www.backbase.com&lt;/a&gt; around 80% of the download time is caused by latency, and 20% by download speed (bandwidth). So you can better load some more data beforehand than have very frequent requests for small files.&lt;/p&gt;&lt;p&gt;We have measured latency and download speed with a &lt;a href="http://www.watchmouse.com"&gt;global performance measurement system&lt;/a&gt; (more about this in part 2), but that's not convenient to use during development because it takes at least a couple of days before you have enough data. Then I read the &lt;a href="http://ajaxblog.com/archives/2005/08/08/ajax-proxy-02"&gt;article by Harry Fuecks&lt;/a&gt;:&lt;/p&gt;&lt;blockquote&gt;"(...) alot of AJAX development is happening @localhost so these problems simply aren’t showing up."&lt;/blockquote&gt;&lt;p&gt;So he has created an AJAX Proxy to simulate a high-latency environment on localhost: kudos! In &lt;a href="http://ajaxblog.com/archives/2005/05/25/synchronous-requests-bad"&gt;another article&lt;/a&gt; he indicates that the use of synchronous requests should be avoided at all times. But even asynchronous requests need to be handled carefully: "Can multiple asynchronous XMLHttpRequests be outstanding at the same time?", asks &lt;br /&gt;&lt;a href="http://www.weiqigao.com/blog/2005/05/29/questioning_ajax.html"&gt;Weiqu Gao&lt;/a&gt;. Harry again did &lt;a href="http://ajaxblog.com/archives/2005/06/01/async-requests-over-an-unreliable-network"&gt;some research&lt;/a&gt;, and came up with a couple of recommendations: &lt;/p&gt;&lt;ul&gt;&lt;li&gt;Avoid Uncaught Exceptions: don't call the XMLHttpRequest object when it's still processing another request&lt;/li&gt;&lt;li&gt;Implement a solution for timeouts: XMLHttpRequest doesn't handle this automatically as do other socket client APIs&lt;/li&gt;&lt;li&gt;Make it possible to abort a request gracefully&lt;/li&gt;&lt;li&gt;Make sure that responses arrive in the right sequence&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;These are the technical aspects. I have found few articles about the usability aspects (probably because I didn't look very well). Marco Tabini &lt;a href="http://blogs.phparch.com/mt/index.php?p=51"&gt;quotes on his weblog&lt;/a&gt;: "one of the fundamental elements of AJAX programming (...) was to always give your users the appropriate feedback, so that they know when something happens." I agree with that: the user should not be surprised by unexpected behavior of the user interface. Interaction Designers should therefore also be aware of some of the latency issues. For them I would summarize it as follows: &lt;/p&gt;&lt;ul&gt;&lt;li&gt;If a user's action causes a server request, don't expect a response within 1/10th of a second: consider showing a 'loading' message&lt;/li&gt;&lt;li&gt;Specify the usage patterns of an application so that the developers know how preloading of data can best be implemented (think Google Maps, which prefetches maps just outside the border of the screen)&lt;/li&gt;&lt;li&gt;Be careful with 'hidden' functionality such as auto-save functionality, because it might conflict with other actions the user performs: cooperate closely with the developer(s) to avoid usability problems.&lt;/li&gt;&lt;li&gt;Clearly specify the sequence of events, e.g. 'action 1 has to be completed before the user should be allowed to start with action 2', which gives developers relevant information to avoid concurrency issues.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;And to make the link between technology and usability, I have a &lt;a href="http://www.jonathanboutelle.com/mt/archives/2004/08/latency_must_di.html"&gt;quote of Jonathan Boutelle&lt;/a&gt;, who already understood all of this more than a year ago:&lt;/p&gt;&lt;blockquote&gt;"Predownloading data is critical to providing low-latency experiences. But blindly downloading data without consideration for how likely the user is to need it is not a scaleable approach. RIA architects will have to consider these issues carefully, and ground their decisions about preloading in user research, in order to create superior user experiences."&lt;/blockquote&gt;&lt;p&gt;After reading all of this I've come to a tentative conclusion: network latency is an important issue to consider during the implementation of an AJAX Application, both by the developer as well as by the interaction designer. If you make the wrong decisions, usability can be terrible. If you make the right decisions, AJAX will significantly improve web application usability. It is still a tentative conclusion, because I'm pretty sure I haven't read all the relevant articles: let me know what your thoughts are. &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7367481-112585696530333713?l=richui.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://richui.blogspot.com/feeds/112585696530333713/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7367481&amp;postID=112585696530333713' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7367481/posts/default/112585696530333713'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7367481/posts/default/112585696530333713'/><link rel='alternate' type='text/html' href='http://richui.blogspot.com/2005/09/ajax-latency-problems-myth-or-reality.html' title='AJAX Latency problems: myth or reality?'/><author><name>Jep Castelein</name><uri>http://www.blogger.com/profile/02749121748856550538</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7367481.post-112549784668866112</id><published>2005-08-31T07:18:00.000-07:00</published><updated>2005-08-31T10:50:48.580-07:00</updated><title type='text'>Custom Tags for Organization Charts</title><content type='html'>We have created an &lt;a href="http://www.backbase.com/samples/grauw/orgchart/"&gt;interesting example&lt;/a&gt; of Backbase Custom Tags. Its goal is to simplify the creation of complex HTML structures by creating tags that have a higher abstraction level. &lt;br /&gt;&lt;br /&gt;The example is an organization chart: this is usually somewhat complex to create in HTML and CSS, and requires quite a lot of HTML code: it's difficult to maintain, and it's easy to make mistakes. Therefore we created two shortcut tags 'orgchart' and 'subordinate' that can be used like this:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&amp;lt;b:orgchart b:label="Boss"&amp;gt;&lt;br /&gt;     &amp;lt;b:subordinate b:label="My subordinate"&amp;gt;&lt;br /&gt;         &amp;lt;b:subordinate b:label="My sub-subordinate"&amp;gt;&amp;lt;/b:subordinate&amp;gt;&lt;br /&gt;     &amp;lt;/b:subordinate&amp;gt;&lt;br /&gt;     &amp;lt;b:subordinate b:label="My subordinate"&amp;gt;&lt;br /&gt;         &amp;lt;b:subordinate b:label="My sub-subordinate"&amp;gt;&amp;lt;/b:subordinate&amp;gt;&lt;br /&gt;         &amp;lt;b:subordinate b:label="My sub-subordinate"&amp;gt;&amp;lt;/b:subordinate&amp;gt;&lt;br /&gt;     &amp;lt;/b:subordinate&amp;gt;&lt;br /&gt;     &amp;lt;b:subordinate b:label="My subordinate"&amp;gt;&amp;lt;/b:subordinate&amp;gt;&lt;br /&gt;&amp;lt;/b:orgchart&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;And this is how it looks (we used minimal styling): &lt;br /&gt;&lt;br /&gt;&lt;img alt="Organization Chart" src="http://www.xs4all.nl/~jepc/backbase/orgchart.png" /&gt;&lt;br /&gt;&lt;br /&gt;The 'orgchart' and 'subordinate' tags are translated to HTML on the client-side, using the &amp;lt;s:htmlstructure&amp;gt; tag. Please have a look at the example: &lt;a href="http://www.backbase.com/samples/grauw/orgchart/"&gt;www.backbase.com/samples/grauw/orgchart/&lt;/a&gt;: use View Source to see how it's done. &lt;br /&gt;&lt;br /&gt;The Custom Tags are defined here: &lt;br /&gt;&lt;a href="http://www.backbase.com/samples/grauw/orgchart/b-orgchart.xml"&gt;www.backbase.com/samples/grauw/orgchart/b-orgchart.xml&lt;/a&gt; (again use View Source).&lt;br /&gt;&lt;br /&gt;And this is the CSS: &lt;a href="http://www.backbase.com/samples/grauw/orgchart/b-orgchart.css"&gt;www.backbase.com/samples/grauw/orgchart/b-orgchart.css&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Of course, this is just one example where custom tags can be useful. Everyone can make their own custom tags, for whichever application. And maybe the best thing: slowly we are getting more of these examples on the &lt;a href="http://www.backbase.com/forum"&gt;Backbase Forum&lt;/a&gt;, creating an exchange of useful custom tags.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7367481-112549784668866112?l=richui.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://richui.blogspot.com/feeds/112549784668866112/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7367481&amp;postID=112549784668866112' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7367481/posts/default/112549784668866112'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7367481/posts/default/112549784668866112'/><link rel='alternate' type='text/html' href='http://richui.blogspot.com/2005/08/custom-tags-for-organization-charts.html' title='Custom Tags for Organization Charts'/><author><name>Jep Castelein</name><uri>http://www.blogger.com/profile/02749121748856550538</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7367481.post-112542003524098154</id><published>2005-08-31T01:29:00.000-07:00</published><updated>2005-08-31T07:25:13.003-07:00</updated><title type='text'>Java Pet Store with AJAX &amp; XML</title><content type='html'>My colleague Mark Schiefelbein has written an &lt;a href="http://dev2dev.bea.com/pub/a/2005/08/backbase_ajax.html"&gt;nice article for BEA Dev2dev&lt;/a&gt; in which he explains how we've rebuilt the Java Pet Store with AJAX and the Backbase XML Pipeline Server. The Java Pet Store is a &lt;a href="http://java.sun.com/blueprints/code/"&gt;well-know Java example application&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;A common problem with AJAXifying an existing application is that the existing back-end is not optimized for an AJAX front-end: usually the flow of events is slightly different, and the data loading patterns are more 'on-demand'. The XML Server creates a bridge between disparate back-end systems and the Backbase AJAX engine. It can link to databases, Java objects, Web Services and custom connectors. Using an XML pipeline language you can link everything together. You can have a look at the AJAXified Pet Store here: &lt;a href="http://www.backbase.com/xmlserver"&gt;http://www.backbase.com/xmlserver&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;So although the Backbase AJAX Engine itself is a client-only application written in JavaScript, you can use various server-side add-ons that speed up AJAX application development. Backbase has both J2EE and .NET compatible products: the &lt;a href="http://www.backbase.com/#dev/download/xmlserver.xml"&gt;XML Server&lt;/a&gt; works on both J2EE and .NET, and the &lt;a href="http://www.backbase.com/#home/products/editions/net_edition.xml"&gt;.NET Server&lt;/a&gt; features WYSIWYG AJAX application development using Visual Studio.NET. We're also working on a similar JSF application that uses Eclipse for WYSIWYG development. &lt;br /&gt;&lt;br /&gt;Backbase has been classified both as a multi-platform technology (see &lt;a href="http://en.wikipedia.org/wiki/AJAX"&gt;Wikipedia&lt;/a&gt;) and as a pure JavaScript application (&lt;a href="http://www.ajaxpatterns.org/Ajax_Frameworks"&gt;AJAX Patterns&lt;/a&gt;). We are actually both: we have a client-only AJAX engine, complemented with (optional) server-side components for .NET and J2EE. We feel this gives more flexibility than products with a mandatory back-end such as JPSpan (PHP), DWR (Java), AJAX.NET (.NET) or WebORB (.NET &amp; Java). And more power than client-only products such as Dojo and OpenRico. &lt;br /&gt;&lt;br /&gt;Some people ask why we don't offer a PHP version. Of course, you can use our client-only version together with PHP: actually, we'll soon launch a very interesting sample application that uses this combination. The difficulty with PHP is that there is no standard for GUI development. At Backbase we like to adhere to standards, so we've select JSF for Java, and use the defacto standard for .NET: Visual Studio.NET. But we haven't found a similar standard for PHP. I'm open to suggestions here, so let me know through the comments, of via jep [at] backbase [.] com.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7367481-112542003524098154?l=richui.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://richui.blogspot.com/feeds/112542003524098154/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7367481&amp;postID=112542003524098154' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7367481/posts/default/112542003524098154'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7367481/posts/default/112542003524098154'/><link rel='alternate' type='text/html' href='http://richui.blogspot.com/2005/08/java-pet-store-with-ajax-xml.html' title='Java Pet Store with AJAX &amp; XML'/><author><name>Jep Castelein</name><uri>http://www.blogger.com/profile/02749121748856550538</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7367481.post-112491728195499289</id><published>2005-08-24T13:59:00.000-07:00</published><updated>2005-08-24T14:01:21.963-07:00</updated><title type='text'>AJAX jobs...</title><content type='html'>It's pretty difficult to find good software engineers right now, especially engineers with the right experience. They should be good software engineers in general, but also have some experience with web applications, or ideally with AJAX. It's funny to see that even Google is &lt;a href="http://www.nytimes.com/2005/08/24/technology/24valley.html"&gt;accused of hiring all the bright engineers&lt;/a&gt; (NY Times article). Also see a surprisingly well-organized &lt;a href="http://slashdot.org/articles/05/08/24/1526252.shtml?tid=217"&gt;discussion on Slashdot&lt;/a&gt; about it. &lt;br /&gt;&lt;br /&gt;In our own organization one potential employee went to Google (Zurich), instead of to Backbase, and several other people we've hired also considered Google. So I can't say that Google is luring away 'our' engineers. But I can confirm that it's difficult to find the right people, especially AJAX developers. &lt;br /&gt;&lt;br /&gt;We've put job postings on Monsterboard, but very few people respond to our advertisements, and the Monsterboard CV database has very few interesting CVs. It's probably best to conclude that the economy is improving again. Which is good news, of course :-)&lt;br /&gt;&lt;br /&gt;But anyhow: if you're a good software engineer and you would be interested to join a leading AJAX company, have a look at &lt;a href="http://www.backbase.com/careers"&gt;www.backbase.com/careers&lt;/a&gt;. R&amp;D is based in Amsterdam, The Netherlands, which is very nice place to work. It even seems that the Dutch government improved their immigration procedures, so we can actually get work permits for people from outside Europe. We already have over 10 nationalities in our office in Amsterdam, so feel free to add to this. &lt;br /&gt;&lt;br /&gt;PS. We're also hiring sales people for our new office in San Francisco.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7367481-112491728195499289?l=richui.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://richui.blogspot.com/feeds/112491728195499289/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7367481&amp;postID=112491728195499289' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7367481/posts/default/112491728195499289'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7367481/posts/default/112491728195499289'/><link rel='alternate' type='text/html' href='http://richui.blogspot.com/2005/08/ajax-jobs.html' title='AJAX jobs...'/><author><name>Jep Castelein</name><uri>http://www.blogger.com/profile/02749121748856550538</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7367481.post-112353133147007334</id><published>2005-08-08T12:56:00.000-07:00</published><updated>2005-08-08T13:03:49.506-07:00</updated><title type='text'>InfoWorld reviews Backbase software</title><content type='html'>No, it's not an advertorial, and we weren't even allowed to review the text before publishing. I find it very positive that the writer (Peter Wayner) really worked with the software himself and gave an unbiased opinion. &lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.infoworld.com/Backbase/product_64743.html?view=1&amp;curNodeId=0"&gt;Read the review »&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7367481-112353133147007334?l=richui.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://richui.blogspot.com/feeds/112353133147007334/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7367481&amp;postID=112353133147007334' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7367481/posts/default/112353133147007334'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7367481/posts/default/112353133147007334'/><link rel='alternate' type='text/html' href='http://richui.blogspot.com/2005/08/infoworld-reviews-backbase-software.html' title='InfoWorld reviews Backbase software'/><author><name>Jep Castelein</name><uri>http://www.blogger.com/profile/02749121748856550538</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7367481.post-112198371883847141</id><published>2005-07-22T00:05:00.000-07:00</published><updated>2005-07-21T15:10:53.510-07:00</updated><title type='text'>AJAX and Web Statistics</title><content type='html'>Fredric Paul of Techweb brought up a &lt;a href="http://www.techweb.com/wire/showArticle.jhtml?articleID=165702733"&gt;new and interesting perspective on AJAX&lt;/a&gt;: how are web statistics and web advertising going to be handled if there are no more pages. The conclusion of the article in my own words: 'there is a problem, but we might find a way to solve it'. I was surprised by this article: I feel there are so much MORE possibilities with AJAX, not less. &lt;br /&gt;&lt;br /&gt;With &lt;a href="http://www.backbase.com"&gt;www.backbase.com&lt;/a&gt; I've been closely involved in creating and managing one of the largest corporate sites that are build with AJAX technology (using the &lt;a href="http://www.backbase.com/download"&gt;Backbase software&lt;/a&gt; of course). We have around 4000 unique visitors per day, from over 160 countries in the world. For web statistics We've been working with standard log analysis software since the start. We're using &lt;a href="http://www.sawmill.net/"&gt;Sawmill&lt;/a&gt;, but any other tool would also work. It gives us all the information that you also get on a 'normal' website. Reading the article on Techweb could make you wonder how this is possible. &lt;br /&gt;&lt;br /&gt;I do understand the difficulty of grasping AJAX: it a popular topic, maybe even a hype. Many people write about it, and not everyone has a solid story. So certain aspects of AJAX that are repeated over and over again are catching on. One of the aspects is the death of the page refresh: with AJAX you can just load new information into an existing web page. In the Techweb article it is therefore assumed that there are no pages anymore, because the URL stays the same. This is not entirely true: you are still loading new information, it's just not an entire page. The new information is also a page on a web server, and it is therefore logged. On the backbase website we've stored all content-pages in one directory, in a hierarchical structure. This is how it looks: &lt;br /&gt;&lt;pre&gt;&lt;br /&gt;content&lt;br /&gt;  products&lt;br /&gt;    product_overview.xml&lt;br /&gt;    dotnet_edition.xml&lt;br /&gt;    j2ee_edition.xml&lt;br /&gt;    community_edition.xml&lt;br /&gt;  benefits&lt;br /&gt;    etc.&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;This means that you can easily see which information is requested by the user, and this is all stored in the web server logs. For web analysis software it's irrelevant whether this is a full page or only the content. It is important that 1 file contains one article though. &lt;br /&gt;&lt;h4&gt;An analogy: the frameset tag&lt;/h4&gt;This topic brings back memories of seemingly ancient HTML tag: the frameset. Most sites with frames also had 1 URL, and new content was loaded in the 'content' frame. This is very similar to a content-rich AJAX site, and it worked fine with web statistics software. &lt;br /&gt;&lt;h4&gt;Moving beyond basic statistics with AJAX&lt;/h4&gt;Of course, with framesets you could only load HTML pages. With AJAX you can load anything, such as unformatted XML data. In that case you might conclude that you cannot track how users are navigating through this XML data. This is not really a problem. First of all, the amount of data you can load at once into the browser is limited: it takes too long to download large amounts of data, and the browser could run out of memory. Nevertheless, with AJAX you move more intelligence to the browser: so you can easily track user behavior on the client, and periodically send an update to the server. Agree, there are no standard solutions for this at the moment, but that's definitely going to change. Let's look at an interesting scenario that we've worked on  a while ago. &lt;br /&gt;&lt;br /&gt;A financial services company wanted to optimize forms on their website. Their ultimate goal was to optimize revenue per form, thus minizing mistakes made by the user. They wanted to know how many times a certain form was filled in incorrectly, per user and on average. This information would allow them to continuously improve the form. The statistics they wanted weren't on a page level, but on a form field level. This is exacly what is possible for Rich Internet Applications. It's provides the opportunity to bring statistics to the next level. &lt;br /&gt;&lt;h4&gt;Advertising &amp; AJAX&lt;/h4&gt;I didn't understand the message of the Techweb article regarding AJAX and online advertising. Currently advertisements are typically loaded per page. With AJAX you have flexibility to decide when a new advertisement is displayed, you don't have to link it to a page refresh or loading of new information at all. You could put a timer on the advertisements: a new advertisement every minute for example. I don't get the point of the Techweb article: can someone explain it to me?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7367481-112198371883847141?l=richui.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://richui.blogspot.com/feeds/112198371883847141/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7367481&amp;postID=112198371883847141' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7367481/posts/default/112198371883847141'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7367481/posts/default/112198371883847141'/><link rel='alternate' type='text/html' href='http://richui.blogspot.com/2005/07/ajax-and-web-statistics.html' title='AJAX and Web Statistics'/><author><name>Jep Castelein</name><uri>http://www.blogger.com/profile/02749121748856550538</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7367481.post-111904108017212621</id><published>2005-06-17T22:39:00.000-07:00</published><updated>2006-10-17T15:44:00.656-07:00</updated><title type='text'>My First Hardware Hack</title><content type='html'>Some people hack their Mac. Or Playstation, or XBox. I never hacked any hardware and I don't enjoy soldering: I'm more of a software person. But tonight I did my first 'hardware hack'. &lt;br /&gt;&lt;br /&gt;A couple of weeks ago I splashed water all over my laptop. I completely disassembled it and let it dry for a couple of weeks. And - hurrah - my laptop was unscathed, or so I thought. The PC-Card socket didn't work anymore, nor did my Wifi PC-card. As a replacement, I ordered an Intel 2200BG mini-PCI Wifi card, because my laptop (Toshiba A30) has a mini-PCI slot with built-in antenna. &lt;br /&gt;&lt;br /&gt;When I put the card in the socket, connected the antenna and installed the drivers, it didn't work. The hardware switch on the side of the laptop did not help. Through Google I learned about &lt;a href="http://www.techspot.com/vb/all/windows/t-18046-Toshiba-Satellite-1135S1552-WiFi-Networking-Problem.html"&gt;pin 11 and 13&lt;/a&gt;: I put tape on those pins and yes!, it worked. A tiny piece of plastic just saved me €185. Toshiba sells their own mini-PCI card for €215, while the Intel card costs €29. And I thought software had good profit margins...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7367481-111904108017212621?l=richui.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://richui.blogspot.com/feeds/111904108017212621/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7367481&amp;postID=111904108017212621' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7367481/posts/default/111904108017212621'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7367481/posts/default/111904108017212621'/><link rel='alternate' type='text/html' href='http://richui.blogspot.com/2005/06/my-first-hardware-hack.html' title='My First Hardware Hack'/><author><name>Jep Castelein</name><uri>http://www.blogger.com/profile/02749121748856550538</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7367481.post-111859738995587220</id><published>2005-06-12T19:25:00.000-07:00</published><updated>2006-11-27T01:44:21.880-08:00</updated><title type='text'>Backbase Community / Essential web page features</title><content type='html'>In response to my &lt;a href="http://richui.blogspot.com/2005/06/practice-what-you-preach-ajax.html"&gt;previous post&lt;/a&gt;, Ryan Brooks outlined &lt;a href="http://www.ryanbrooks.net/?p=69"&gt;his thoughts&lt;/a&gt; on Backbase. This is very useful feedback. One of the main points of his post was the need for more community. I could not agree more. As with most software, RIA/AJAX software becomes more useful once more people are using it. And especially at this moment there are an awful lot of frameworks popping up: just look at &lt;a href="http://www.ajaxpatterns.org/AJAXFrameworks"&gt;Michael Mahemoff's list of frameworks&lt;/a&gt;, which only mentions the open-source frameworks at this moment. So we need some critical mass, fast!&lt;br /&gt;&lt;h4&gt;Community Edition&lt;/h4&gt;Luckily many thousands of people have downloaded the &lt;a href="http://www.backbase.com/download"&gt;Backbase Community Edition&lt;/a&gt; in the first couple of days. Our servers are still alive, but we'll have to pay a hefty bandwidth fee at the end of the month. A fee we're happy to pay: the more downloads, the better. We're also happy to see users from all over the world: the US still has the biggest share, but our software is also especially popular in China. So we will continue to distribute the Community Edition to as many developers as possible. &lt;br /&gt;&lt;h4&gt;Discussion forum&lt;/h4&gt;A couple of days after launching the Community Edition we opened up the &lt;a href="http://www.backbase.com/devnet"&gt;Discussion Forum&lt;/a&gt;, and we're preparing some other initiatives. We're thinking about a code exchange, a best practices wiki, a mailing list, faq database, technical articles with code samples, tutorials, user groups, developer conferences, etc. Of course, this won't all happen overnight, but we will focus on steady improvement. Let us know which of these features will help you most, so we can fine tune our planning. &lt;br /&gt;&lt;h4&gt;Essential web page features&lt;/h4&gt;A second topic of Ryan's article was focused web page features that you should get for free when you use AJAX (compared with Flash or Java applets). He discussed indexing by search engines, back- and forward buttons, permalinks and bookmarking. I'd like to add 'View Source' to this list. &lt;br /&gt;&lt;h4&gt;Search Engines&lt;/h4&gt;Search Engine Optimization is indeed an area that requires some attention with AJAX applications that use a Single Page Interface (SPI), because there is a risk the search engine only finds the first page. On &lt;a href="http://www.backbase.com"&gt;Backbase.com&lt;/a&gt; we're using a dual publishing model to avoid this problem: we use the same content files to publish both a rich single-page version and a plain multi-page version, which is indexed by bots. This requires some automation in the publishing process. As an alternative, the Backbase Tags allow you to use regular 'a href' links to load files with XMLHttpRequest: these links are also indexed by search engine spiders. In both scenarios, the search engine indexes 'pages' that are supposed to be part of an SPI. Therefore, some server-side logic is needed to convert these links to deeplinks that load the correct 'state' within the SPI. This topic will be covered in a 6-page technical article to be published in 1 or 2 weeks on the &lt;a href="http://www.backbase.com/devnet"&gt;Backbase DevNet&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.backbase.com/go/home/company/about.php"&gt;Backbase About Us page&lt;/a&gt;&lt;br /&gt;&lt;h4&gt;Back-button and permalinks&lt;/h4&gt;This brings us to another topic Ryan mentioned: deep linking (with permalinks) and  bookmarking. As I wrote in my previous post, we have some deeplinking support in Backbase.com. We are using URL parameters for this: for example, &lt;code&gt;/devnet&lt;/code&gt; is rewritten as &lt;code&gt;index.php?section=main_developers&lt;/code&gt;, which is parsed client-side: as a result, the Deck with ID &lt;code&gt;'main_developers'&lt;/code&gt; is selected. For people who haven't worked with Backbase: a Deck is a user interface concept similar to a stack of cards of which only the first one is visible. By selecting a card in a Deck, it is moved to the top, and becomes visible. This is what happens when the ID 'main_developers' is selected. The downside of using URL parameters is that the entire page is reloaded if we set a new parameter. An alternative is to use the pound sign (#), of which Tiddly Wiki makes good use: &lt;a href="http://www.tiddlywiki.com/#UsingThisSite"&gt;http://www.tiddlywiki.com/#UsingThisSite&lt;/a&gt;. At Backbase we are currently using the pound sign for Back/Forward support in Firefox: we could use a hidden frame for this, but this only works in Firefox when you are retrieving real pages from the server. In Internet Explorer you can retrieve 'virtual' pages by using the DOM, which is obviously faster. So maybe we could give users an option: either fast Back/Forward without permalinks, or somewhat slower Back/Forward with permalinks. If we build in this option, we should be able to support all scenarios. &lt;br /&gt;&lt;h4&gt;"View Source"&lt;/h4&gt;An area that is getting more an more attention lately is 'View Source', which was one of the key factors in the rapid growth of the World Wide Web. Steve Yen makes the link to AJAX in this &lt;a href="http://trimpath.com/blog/?p=23"&gt;blog post&lt;/a&gt;, and there are probably many other relevant articles. Even the Macromedia guys now offer &lt;a href="http://weblogs.macromedia.com/mesh/archives/2005/04/adding_a_view_s.cfm"&gt;this feature&lt;/a&gt;, although developers have to specifically build this into their Flash applications, while it is a default feature of web applications. I think a potential problem with 'View Source' and AJAX is the large amount of JavaScript used. Also, in good AJAX applications the JavaScript code is &lt;a href="http://www.ajaxian.com/archives/2005/06/microsoft_scrip.html"&gt;encoded to limit the download size&lt;/a&gt;. So although you can view the source, it's pretty tough to make sense of it. The benefit of Backbase is that it is completely tag-based, so there is no need to look at JavaScript code. Looking at the source code of a Backbase application, you just look at Tags and you can quickly decipher the complete application. Give it a try with the deep-linking example in the previous paragraph: if you go to Backbase.com, do a View Source, then you find an &lt;code&gt;&amp;lt;b:deck&amp;gt;&lt;/code&gt; tag, of which one of the &lt;code&gt;&amp;lt;s:buffer&amp;gt;&lt;/code&gt; tags has the ID &lt;code&gt;'main_developers'&lt;/code&gt;. You can follow this link, etcetera. &lt;br /&gt;&lt;h4&gt;wrapping up&lt;/h4&gt;So all in all this became a pretty long post: basically I just wanted to say we're growing the community, and all input and ideas are welcome. At the same time we take compatibility with the essential web page features very serious.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7367481-111859738995587220?l=richui.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://richui.blogspot.com/feeds/111859738995587220/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7367481&amp;postID=111859738995587220' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7367481/posts/default/111859738995587220'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7367481/posts/default/111859738995587220'/><link rel='alternate' type='text/html' href='http://richui.blogspot.com/2005/06/backbase-community-essential-web-page.html' title='Backbase Community / Essential web page features'/><author><name>Jep Castelein</name><uri>http://www.blogger.com/profile/02749121748856550538</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7367481.post-111825510117356759</id><published>2005-06-08T20:18:00.000-07:00</published><updated>2005-06-08T11:26:19.660-07:00</updated><title type='text'>Practice what you preach AJAX</title><content type='html'>Backbase's first websites were plain HTML. People asked us why we weren't using our own technology on our website. Good question. It should be possible to build a very nice website using our AJAX/RIA toolkit: AJAX shouldn't be just for web &lt;strong&gt;applications&lt;/strong&gt;. &lt;br /&gt;&lt;br /&gt;But people are never satisfied :-). A couple of months ago we redid our website using our own technology. And now some people say it looks like a Flash site and that it's an example of where AJAX &lt;a href="http://www.theserverside.com/news/thread.tss?thread_id=34354"&gt;should not go&lt;/a&gt;. So maybe it's good to tell a bit more about our considerations. &lt;br /&gt;&lt;br /&gt;By the way: we are not against Flash, but people frequently make the comparison between Flash and AJAX as the main Rich Internet Application (RIA) technology options.  &lt;br /&gt;&lt;br /&gt;We wanted the site:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;to be a technology showcase with a wow-factor&lt;/li&gt;&lt;li&gt;to load faster and be more responsive than a Flash site&lt;/li&gt;&lt;li&gt;to be usable and efficient&lt;/li&gt;&lt;li&gt;to have both a web-feel and an application-feel&lt;/li&gt;&lt;li&gt;to work like a typical website (e.g. back-button support)&lt;/li&gt;&lt;/ul&gt;&lt;h4&gt;a usable showcase&lt;/h4&gt;We thought: if we use our software on our own website, why not make it into a showcase. If people arrive on our home page they should clearly see the difference with 'regular' web sites. At the same time it shouldn't be a demo for the sake of being a demo: people come to our site to learn about our software, about our company, they want to download software, etc. This should be as easy as on other websites, if not easier. Of course, we also want to show that AJAX is faster and more responsive than other technologies such as Flash and Java, and our site should be a prime example. &lt;br /&gt;&lt;h4&gt;information architecture&lt;/h4&gt;In general we tried to make the site more flexible, and less page oriented. For example, for almost all forms we are using in-browser pop-up windows. To display commonly used information we've used 'drawers', or basically tabs that fold out when you click on them: we use it for demos, downloads, and contact information. At the same time we have a fairly hierachical information structure: almost every piece of content is living somewhere in this structure. We have also tried to highlight clearly where the user is in the hierarchical structure. These hierarchical pieces of information are also available through deep linking, e.g. &lt;a href="http://www.backbase.com/go/products_overview.php"&gt;www.backbase.com/go/products_overview.php&lt;/a&gt;. &lt;br /&gt;&lt;h4&gt;the wow-factor&lt;/h4&gt;To create the wow-factor, we decided to use many graphics and many animations. Both make the site more polished and more Flash-like, but graphics increase the download size and animation can be annoying. So we compromised a bit on the quality of the graphics and used very high compression. And for animation, we took a good look at operating systems such as MacOS X and Windows XP, and tried to design &lt;strong&gt;useful&lt;/strong&gt; animations. These animations typically give feedback to the user about what is happening on the screen: for example, the main menu opens with a transition so people can see what's happening. &lt;br /&gt;&lt;h4&gt;web-feel or application-feel?&lt;/h4&gt;Some GUI toolkits are only capable of creating desktop-like interfaces, which is not ideal for a content-rich website. You can also create application-like interfaces with Backbase (we will launch a desktop-like forum, and a desktop-demo soon), but it's just one of the options. Some desktop features can be useful though. For example: we've included pop-up windows on our site, and a tree view for the tertiary navigation in the documentation section. But for the rest we've focused on a web-feeling, for example by having 1 scroll bar to scroll the entire 'page'. In desktop applications you typically scroll only 1 panel (similar to using frames). &lt;br /&gt;&lt;h4&gt;utility&lt;/h4&gt;People expect certain basic functionality when they are using a web page. They want to be able to create bookmarks, or forward a link to a friend. People who use an old browser, screen reader, or a mobile browser expect to get access to the content. The back- and forward buttons should work. This site should be indexed by search engines, such as Google. We needed some tricks, but we now got most of this working, although bookmarks are still not easy enough: we have to improve this. &lt;br /&gt;&lt;h4&gt;performance&lt;/h4&gt;One objective which is not so difficult to achieve is to create a better performing site than comparable Flash sites. First of all the initial download time: incremental loading ensures that you don't have to load all files at once, you just load it when you need it. Of course, the images make our home page fairly large, but still significantly smaller than many Flash sites. Then responsiveness: the Backbase engine is optimized for performance so this should work pretty fine. Downloading additional information is quick because you only load the new information, and not an entire new page.  &lt;br /&gt;&lt;h4&gt;does it work?&lt;/h4&gt;Based on the feedback we get it appears that the majority of people enjoy using our site. Nevertheless, many people are sceptical at first, and are only convinced when they've tested all aspects of the site. This makes us extremely sensitive to problems and criticism, because we want to convince people that AJAX-powered sites can be both more &lt;strong&gt;usable&lt;/strong&gt; and more &lt;strong&gt;fun&lt;/strong&gt;. So if you have feedback: webteam at backbase.com, and we usually respond quickly. &lt;br /&gt;&lt;br /&gt;PS. I'm planning to write some more about the technology behind &lt;a href="http://www.backbase.com"&gt;Backbase.com&lt;/a&gt;, so if you have requests, let me know...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7367481-111825510117356759?l=richui.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://richui.blogspot.com/feeds/111825510117356759/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7367481&amp;postID=111825510117356759' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7367481/posts/default/111825510117356759'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7367481/posts/default/111825510117356759'/><link rel='alternate' type='text/html' href='http://richui.blogspot.com/2005/06/practice-what-you-preach-ajax.html' title='Practice what you preach AJAX'/><author><name>Jep Castelein</name><uri>http://www.blogger.com/profile/02749121748856550538</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7367481.post-111738241492574763</id><published>2005-05-29T08:21:00.000-07:00</published><updated>2005-05-29T10:15:21.130-07:00</updated><title type='text'>XTech Browser Tech Dinner</title><content type='html'>Last Wednesday I organized a dinner for speakers at the the &lt;a href="http://www.xtech-conference.org/"&gt;XTech conference&lt;/a&gt; in Amsterdam: we rented a boat to cruise through the Amsterdam canals. It was an interesting group of people: many Mozilla developers, people from Opera, and other browser experts such as &lt;a href="http://www.quirksmode.org"&gt;Peter-Paul Koch&lt;/a&gt;. It was a lot of fun to talk to all these people. At Backbase we use the browser for everything we do, and we now had the opportunity to speak to the core developers of Mozilla and Opera. It is good to know these people in person: we were able to discuss some Firefox 1.1 issues with the engineers who are working on it. Very useful for both parties. &lt;br /&gt;&lt;br /&gt;During the dinner I expected quite a bit of discussion about &lt;a href="http://www.whatwg.org"&gt;WHAT WG&lt;/a&gt;, &lt;a href="http://www.w3.org/MarkUp/Forms/"&gt;XForms&lt;/a&gt; and the forms product of &lt;a href="http://www.backbase.com"&gt;Backbase&lt;/a&gt;. We didn't really discuss that, maybe also because Steven Pemberton and Micah Dubinko from the XForms camp couldn't make it. So we mainly had WHAT WG people onboard, like initiator Ian Hickson, and contributor Anne van Kesteren. The next day on XTech &lt;a href="http://www.w3.org/2005/Talks/05-steven-xtech/"&gt;Steven&lt;/a&gt; and &lt;a href="http://ln.hixie.ch/?start=1117281519&amp;count=1"&gt;Ian&lt;/a&gt; had adjacent presentations, and it became clear that &lt;a href="http://www.grauw.nl/blog/?entry=183"&gt;both groups have their own proponents&lt;/a&gt;, and that the reconciliation &lt;a href="http://www.xml.com/pub/a/2005/05/11/deviant.html"&gt;as suggested by Micah&lt;/a&gt; will probably not happen anytime soon. At Backbase we have a forms model that is similar to XForms, with pure declarative markup, and focus on XML technologies such as XPath. So until a leading standard arises, it's probably best to stick to our own forms model. &lt;br /&gt;&lt;br /&gt;At Backbase we have a new release upcoming, 3.0, and we've also demoed it during the dinner. Many people &lt;a href="http://annevankesteren.nl/archives/2005/05/xtech"&gt;liked it&lt;/a&gt;, and can give it a try themselves with the &lt;a href="http://www.backbase.com"&gt;free Community Edition&lt;/a&gt;. We also had the first builds with Opera 8 support, which pleased the Opera people, obviously. &lt;br /&gt;&lt;br /&gt;It was also interesting to hear the &lt;a href="http://www.babylonsounds.com/2005/05/finally-lightning-lead-developer-mike.html"&gt;discussions&lt;/a&gt; about the proposed new calendar plug-in for Thunderbird, &lt;a href="http://wiki.mozilla.org/Calendar:Lightning"&gt;Lightning&lt;/a&gt;: there is definitely a drive at the Mozilla team to provide a viable alternative for Outlook as soon as possible. I'd love to start using it at Backbase: together with &lt;a href="http://www.hula-project.org"&gt;Hula&lt;/a&gt; it would make a great alternative for Exchange, which we are now considering. &lt;br /&gt;&lt;br /&gt;There was also some negative sentiment about Microsoft: not surprising with people like &lt;a href="http://www.theregister.co.uk/2005/02/11/hakon_on_ms_interroperability/"&gt;Håkon Wium Lie&lt;/a&gt; present :-). Nevertheless, most people who browse the web are still using Microsoft's Internet Explorer, so at Backbase we are maintaining a good relationship with Microsoft. And the IE7 initiative is a good development for sure, although the Avalon/XAML plans raise suspicions that Microsoft would rather do away with the Web as we know it today (not good, obviously). &lt;br /&gt;&lt;br /&gt;I've uploaded &lt;a href="http://flickr.com/photos/jepc/sets/379988/"&gt;pictures of the event&lt;/a&gt; to Flickr.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7367481-111738241492574763?l=richui.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://richui.blogspot.com/feeds/111738241492574763/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7367481&amp;postID=111738241492574763' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7367481/posts/default/111738241492574763'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7367481/posts/default/111738241492574763'/><link rel='alternate' type='text/html' href='http://richui.blogspot.com/2005/05/xtech-browser-tech-dinner.html' title='XTech Browser Tech Dinner'/><author><name>Jep Castelein</name><uri>http://www.blogger.com/profile/02749121748856550538</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7367481.post-111575976195774540</id><published>2005-05-10T11:57:00.000-07:00</published><updated>2005-05-10T14:16:02.066-07:00</updated><title type='text'>New website using AJAX</title><content type='html'>Last week we launched a new version of &lt;a href="http://www.backbase.com"&gt;the Backbase website&lt;/a&gt;, which now runs on the Backbase software (fully AJAX enabled). We've been able to tackle a number of typical AJAX challenges, as for example mentioned in the &lt;a href="http://www.lukew.com/ff/entry.asp?170"&gt;whitepaper by Luke Wroblewski&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;Things we've solved:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Back-button&lt;/li&gt;&lt;li&gt;Bookmarks&lt;/li&gt;&lt;li&gt;Development speed&lt;/li&gt;&lt;/ul&gt;Because AJAX applications typically only have a single URL, the back-button is usually not functioning. In the Backbase software you can register changes in the user interface that should be reverted when you click on the Back-button. So you can build up a history file, and use the back- and forward-buttons to navigate through the history. Give it a try on the Backbase site. &lt;br /&gt;&lt;br /&gt;With a single URL you might also have a problem with bookmarking. We've solved this with parameters in the URL, which are read by JavaScript that load the correct information. For example: &lt;a href="http:/www.backbase.com/developers"&gt;www.backbase.com/developers&lt;/a&gt; loads the DevNet 'page'. Because browser don't allow us to update the URL bar, it's not possible to use Ctrl-D to add a bookmark. In a future update of the site we'll add a keyboard shortcut 'D' to add a bookmark with JavaScript. &lt;br /&gt;&lt;br /&gt;If you do 'view source', you see that the development of the site is almost all done with extra tags, so-called B-tags. There are only a couple of lines of custom JavaScript code. Also a lot of code is in reusable skin files. If you use a B-tag, it is guaranteed to work in all browsers, so this also speeds up development.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7367481-111575976195774540?l=richui.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://richui.blogspot.com/feeds/111575976195774540/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7367481&amp;postID=111575976195774540' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7367481/posts/default/111575976195774540'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7367481/posts/default/111575976195774540'/><link rel='alternate' type='text/html' href='http://richui.blogspot.com/2005/05/new-website-using-ajax.html' title='New website using AJAX'/><author><name>Jep Castelein</name><uri>http://www.blogger.com/profile/02749121748856550538</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7367481.post-111249896552795998</id><published>2005-04-02T19:05:00.000-08:00</published><updated>2005-04-02T19:29:25.530-08:00</updated><title type='text'>Ajax: Where is it happening?</title><content type='html'>Even with the global nature of the Internet, new technological advances can come from a specific region. I live in Amsterdam myself, and for Ajax we're not doing bad: &lt;a href="http://www.quirksmode.org"&gt;quirksmode.org&lt;/a&gt; is based there, my employer &lt;a href="http://www.backbase.com"&gt;Backbase&lt;/a&gt; is based there, and - last but not least - Amsterdam is the home town of the soccer club &lt;a href="http://english.ajax.nl/"&gt;Ajax&lt;/a&gt; :-)&lt;br /&gt;&lt;br /&gt;Silicon Valley and San Francisco might even have better credentials: the &lt;a href="http://www.adaptivepath.com"&gt;creator of the term 'Ajax'&lt;/a&gt; is based there, many of &lt;a href="www.google.com"&gt;Google&lt;/a&gt;'s new services have been developed in the Valley, several &lt;a href="http://www.dojotoolkit.org"&gt;Dojo&lt;/a&gt; contributors are based there, and many more. Of course, it's not the first innovation that started in the Valley... &lt;br /&gt;&lt;br /&gt;This week I'm visiting a friend in San Francisco, so - in addition to enjoying the city and the wonderful weather - I'm open to meeting people. Let me know at jep at backbase dot com if you're interested.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7367481-111249896552795998?l=richui.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://richui.blogspot.com/feeds/111249896552795998/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7367481&amp;postID=111249896552795998' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7367481/posts/default/111249896552795998'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7367481/posts/default/111249896552795998'/><link rel='alternate' type='text/html' href='http://richui.blogspot.com/2005/04/ajax-where-is-it-happening.html' title='Ajax: Where is it happening?'/><author><name>Jep Castelein</name><uri>http://www.blogger.com/profile/02749121748856550538</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7367481.post-111032075881874624</id><published>2005-03-08T23:23:00.000-08:00</published><updated>2005-03-08T14:26:46.563-08:00</updated><title type='text'>XForms Myths rebutted</title><content type='html'>I’m not an XForms expert, I do not have specific interests in XForms, but I have to admit that I like certain aspects of XForms. When you’re into the XML-family of standards, it’s just a very elegant way to create form-based applications. Ian Hickson, the driving force behind &lt;a href="http://www.whatwg.org"&gt;WhatWG’s&lt;/a&gt; Web Forms 2.0, is &lt;a href="http://ln.hixie.ch/?start=1110316686&amp;count=1"&gt;clearly annoyed&lt;/a&gt; by the marketing speak of XForms proponents. I’ve added some serious and some not-so-serious comments on the arguments of Hixie, so please compare this with his article. &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;XForms is declarative&lt;/strong&gt;&lt;br /&gt;XForms is more declarative than HTML + JavaScript, but I think the main benefit is that 80% of the commonly used functionality is available as a tag, thus reducing the learning curve (although XForms is not so easy to learn because it introduces several more advanced concepts). &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Scripting is bad for accessibility&lt;/strong&gt;&lt;br /&gt;Two competing standards (Web Forms 2.0 and XForms) is bad for accessibility, because screen readers will need to learn about both standards, instead of just one. &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Script is harder to maintain than XPath expressions&lt;/strong&gt;&lt;br /&gt;I’m not an expert in this, but it seems that there are more degrees of freedom for JavaScript programs than for XPath expressions. More freedom means more power to do messy things. &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;HTML mixes presentation and content - XForms doesn't&lt;/strong&gt;&lt;br /&gt;Somewhat true, but I do like the client-side data instance of XForms. Some content should just be inserted server-side by a content management system, and there is no need to keep it separate on the client. &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;XForms is better than HTML because it is media-independent&lt;/strong&gt;&lt;br /&gt;Indeed, crap. What does the &lt;a href="http://www.acmecoalition.org/summitinfo.html"&gt;independence of the media&lt;/a&gt; have to do with XForms or HTML? &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;HTML mainly specifies how the control should look, while XForms specifies what the control should do&lt;/strong&gt;&lt;br /&gt;Yes, I think that’s a myth. From what I remember, XForms leaves it up to the XForms player to render the user interface. Just like the web browser renders the form controls. &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;HTML has limitations, so it had to be replaced with XForms&lt;/strong&gt;&lt;br /&gt;Yes, that’s something I can’t agree with. It’s better to extend HTML. &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;HTML requires authors to use hacks; XForms doesn't because is cleanly designed&lt;/strong&gt;&lt;br /&gt;Somewhat true: HTML was not designed to have client-side applications, but XForms was, so it’s easier to make a good implementation.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7367481-111032075881874624?l=richui.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://richui.blogspot.com/feeds/111032075881874624/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7367481&amp;postID=111032075881874624' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7367481/posts/default/111032075881874624'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7367481/posts/default/111032075881874624'/><link rel='alternate' type='text/html' href='http://richui.blogspot.com/2005/03/xforms-myths-rebutted.html' title='XForms Myths rebutted'/><author><name>Jep Castelein</name><uri>http://www.blogger.com/profile/02749121748856550538</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7367481.post-111031695117091527</id><published>2005-03-08T22:20:00.000-08:00</published><updated>2005-03-08T13:22:31.170-08:00</updated><title type='text'>JavaScript switched on?</title><content type='html'>Jeremy Keith &lt;a href="http://adactio.com/journal/display.php/20050308163812.xml"&gt;argues&lt;/a&gt; that an Ajax application should also work if JavaScript is switched off in the browser. I think this approach will not unlock the true value of Ajax applications. In the more advanced Ajax applications business logic will partly move to the client: this is similar to how client-server applications compare to mainframe applications. For simple form validation, search queries and the like it does make sense to have a non-JavaScript version. For applications where not every mouse-click is communicated to the server and client-side logic is executed, it might be very difficult to build a non-JavaScript equivalent. I believe the browser is capable of more than just displaying static pages with a little bit of interaction: the browser is a complete software development platform. There are even people who have created a &lt;a href="http://www.technicalpursuit.com/demos_launch.html"&gt;complete execution stack&lt;/a&gt;, with its own command prompt.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7367481-111031695117091527?l=richui.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://richui.blogspot.com/feeds/111031695117091527/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7367481&amp;postID=111031695117091527' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7367481/posts/default/111031695117091527'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7367481/posts/default/111031695117091527'/><link rel='alternate' type='text/html' href='http://richui.blogspot.com/2005/03/javascript-switched-on.html' title='JavaScript switched on?'/><author><name>Jep Castelein</name><uri>http://www.blogger.com/profile/02749121748856550538</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7367481.post-111023190792048331</id><published>2005-03-07T13:38:00.000-08:00</published><updated>2005-03-07T13:47:50.736-08:00</updated><title type='text'>New interaction patterns</title><content type='html'>&lt;p&gt;In my previous post I mentioned I was looking for usability best practices for Single Page Interfaces. This was on response to an &lt;a href="http://www.adaptivepath.com/publications/essays/archives/000385.php"&gt;article by Jesse James Garrett&lt;/a&gt; that explained the technical concepts quite well, but not the usability aspects. His colleague Peter Merholz wrote &lt;a href="http://www.peterme.com/archives/000454.html"&gt;a nice article&lt;/a&gt; about Google Maps in which he identified the core issue, I think: "how do you provide people with cues, so they know what to do, but enable new, more powerful means?"&lt;/p&gt;&lt;p&gt;This is probably one of the main questions that needs to be answered before you create a successful Singe Page Interface application. There are lots of new possibilities, but how does the user know about it? I’m just trying to think of a list of unexpected behaviors, but please add to it:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Drag-and-drop&lt;/li&gt;&lt;li&gt;Right-click and double-click&lt;/li&gt;&lt;li&gt;Keyboard shortcuts&lt;/li&gt;&lt;li&gt;Modal windows&lt;/li&gt;&lt;li&gt;Using decks instead of pages, enabling a more parallel workflow&lt;/li&gt;&lt;li&gt;Changes in one part of the screen trigger changes in another part of the screen&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;So which ideas are useful to explain people about these new features? Again, just some ideas: &lt;/p&gt;&lt;ul&gt;&lt;li&gt;A correct mouse pointer can give a hint that you can drag (which Google Maps is not doing, why not?)&lt;/li&gt;&lt;li&gt;A non-modal window can provide help (e.g. click F1 during a PowerPoint presentation to see all useful keyboard shortcuts: this is a modal window unfortunately)&lt;/li&gt;&lt;li&gt;Animations and effects: a good example is the cloud animation when you drag items out of the shopping cart in the &lt;a href="http://www.panic.com/goods/"&gt;Panic shop&lt;/a&gt;, or the &lt;a href="http://www.37signals.com/svn/archives/000558.php"&gt;Yellow Fade technique&lt;/a&gt; to highlight which area of the screen has changed.&lt;/li&gt;&lt;li&gt;Although a parallel workflow might offer many benefits, a step-wise input wizard might help first-time users&lt;/li&gt;&lt;li&gt;And, last but not least, it might be good to stick to well-known keyboard shortcuts, such as + and – for zoom in and zoom out (as &lt;a href="http://maps.google.com/"&gt;Google Maps&lt;/a&gt; is doing)&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;As Jesse James Garrett &lt;a href="http://www.adaptivepath.com/publications/essays/archives/000385.php"&gt;mentioned&lt;/a&gt;: "[we can] begin to imagine a wider, richer range of possibilities". &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7367481-111023190792048331?l=richui.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://richui.blogspot.com/feeds/111023190792048331/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7367481&amp;postID=111023190792048331' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7367481/posts/default/111023190792048331'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7367481/posts/default/111023190792048331'/><link rel='alternate' type='text/html' href='http://richui.blogspot.com/2005/03/new-interaction-patterns.html' title='New interaction patterns'/><author><name>Jep Castelein</name><uri>http://www.blogger.com/profile/02749121748856550538</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7367481.post-111014471758721503</id><published>2005-03-06T22:24:00.000-08:00</published><updated>2005-03-06T13:33:22.926-08:00</updated><title type='text'>Single Page Interfaces</title><content type='html'>After Jesse James Garret’s &lt;a href="http://www.adaptivepath.com/publications/essays/archives/000385.php"&gt;article about Ajax&lt;/a&gt; there have been several interesting posts. &lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.themaninblue.com/writing/perspective/2005/03/02/"&gt;Cameron Adams argues&lt;/a&gt; that it’s acceptable for some sites to exclude visitors that have JavaScript switched off, especially for web applications (as opposed to content-rich sites). I agree: there are some standards-enthusiasts who promote &lt;a href="http://www.bobbyvandersluis.com/articles/unobtrusiveshowhide.php"&gt;unobtrusive JavaScript&lt;/a&gt;, but they usually come from a content-publishing background. &lt;br /&gt; &lt;br /&gt;Tantek Celik &lt;a href="http://tantek.com/log/2005/02.html#d25t1709"&gt;proposes a new name for Ajax&lt;/a&gt;, to get rid of associations with &lt;a href="http://www.ajax.com"&gt;soap&lt;/a&gt; or &lt;a href="http://www.ajax.nl"&gt;football clubs&lt;/a&gt;. He proposes Cadex, short for CSS Asynchronous DOM Ecmascript XML/XHTML. What I don’t like about both Ajax (Asynchronous JavaScript + XML) and Cadex is that they focus on technology instead of usability. What I see as the main different between Ajax and old web interface is that it’s actually a single-page interface, instead of a multi-page interface. Maybe the name it’s somewhat simplistic, but I would suggest using Single-Page Interface instead of Ajax. &lt;br /&gt;&lt;br /&gt;To continue on the usability angle: &lt;a href="http://www.37signals.com/svn/archives/001070.php"&gt;Jason Fried&lt;/a&gt; explains that Ajax in itself does not improve the user experience: it enables it. The example of the &lt;a href="http://www.37signals.com/svn/archives/000558.php"&gt;Yellow Fade technique&lt;/a&gt; is one of the first examples I’ve seen with clear usability benefits. I’m myself working on a website with a Single-Page Interface, and it’s easy to come up with all kinds of spectacular effects, but difficult to find those effects that really enhance usability. A peak preview of what our technology is capable of can be seen in a &lt;a href="http://projects.backbase.com/RUI/shop.html"&gt;shop&lt;/a&gt; and a &lt;a href="http://projects.backbase.com/RUI/portal.html"&gt;portal&lt;/a&gt; demo, and the result of my project can be seen in a couple of months at &lt;a href="http://www.backbase.com"&gt;Backbase.com&lt;/a&gt;. In the mean time I’ll be scouring the web for more usability best practices for single page interfaces. And if you know any great usability examples, please let me know.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7367481-111014471758721503?l=richui.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://richui.blogspot.com/feeds/111014471758721503/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7367481&amp;postID=111014471758721503' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7367481/posts/default/111014471758721503'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7367481/posts/default/111014471758721503'/><link rel='alternate' type='text/html' href='http://richui.blogspot.com/2005/03/single-page-interfaces.html' title='Single Page Interfaces'/><author><name>Jep Castelein</name><uri>http://www.blogger.com/profile/02749121748856550538</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7367481.post-110907722238753303</id><published>2005-02-22T14:01:00.000-08:00</published><updated>2005-02-22T13:02:51.746-08:00</updated><title type='text'>WHAT WG or XForms: what is it going to be?</title><content type='html'>Just read &lt;a href="http://news.com.com/Fight+over+forms+clouds+future+of+Net+applications/2100-1032_3-5581106.html"&gt;an interesting article&lt;/a&gt; on News.com, in which WHAT WG's Web Forms 2.0 is compared with W3C's XForms. A journalist from a Dutch IT newspaper called me today to ask for Backbase's opinion on this. In short, Backbase sees good things in both initiatives, but our approach is closer to XForms because of our focus on XML and declarative development (as opposed to scripting). The big difference is that Backbase Forms work in most modern browsers without plugins. I'll write a bit more about this later.&lt;br /&gt;&lt;br /&gt;PS. also an interesting &lt;a href="http://it.slashdot.org/article.pl?sid=05/02/20/2355217"&gt;discussion on Slashdot&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7367481-110907722238753303?l=richui.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://richui.blogspot.com/feeds/110907722238753303/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7367481&amp;postID=110907722238753303' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7367481/posts/default/110907722238753303'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7367481/posts/default/110907722238753303'/><link rel='alternate' type='text/html' href='http://richui.blogspot.com/2005/02/what-wg-or-xforms-what-is-it-going-to.html' title='WHAT WG or XForms: what is it going to be?'/><author><name>Jep Castelein</name><uri>http://www.blogger.com/profile/02749121748856550538</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7367481.post-110815795794213423</id><published>2005-02-11T22:39:00.000-08:00</published><updated>2006-10-21T12:24:28.503-07:00</updated><title type='text'>Dell and buying via the Internet</title><content type='html'>May 2004 - On the first day of my new job I arrived at my new office punctual at 9am. I met my new colleagues, and after a while someone asked: did we buy a computer for him? Hmmm. Apparently not. No worries: the CEO gave me his car keys and his debit card and he suggested I buy a computer myself. So by 10.30 I was on my way. Unfortunately the &lt;a href="http://www.mycom.nl"&gt;recommended store&lt;/a&gt; was in the middle of Amsterdam, so by the time I arrived and found a parking spot it was 11 o'clock. Then I was waiting in line for 20 minutes in the 'fast lane', just to hear that buying a laptop did not qualify for the fast lane. Waiting. &lt;a href="http://eu.computers.toshiba-europe.com/cgi-bin/ToshibaCSG/model_index_page.jsp?service=EU&amp;ID=2327"&gt;Model&lt;/a&gt; not in stock. Go to other store. Drive. Park. Wait in line. Then finally got it: too bad the CEO's debit card wasn’t accepted, so I had to pay for it myself. Hmmm. &lt;br /&gt;&lt;br /&gt;After a small while, I became responsible for purchasing new computers for our company and I started buying from &lt;a href="http://www.dell.com"&gt;Dell&lt;/a&gt;: no hassles, just order via their website, via e-mail or over the phone. The computers are usually delivered within 2 weeks, and they offer good value for money. So if you manage to look ahead for about 2 weeks it sounds like an ideal solution. &lt;br /&gt;&lt;br /&gt;Then some patterns started to emerge. With almost every order there was a new account manager, because the previous one was either fired or promoted. With 6 purchases over the last 8 months I had 4 different account managers. All of them were trying to sell me the professional line of computers (Latitude and Optiplex) instead of the cheaper Inspirons and Dimensions. They gave a high discount, but it was still more expensive than the consumer line. When you ask them for the differences between both lines, you hear a lot of vagaries, nonsense, lies and only 1 possibly valid reason: the consumer models change more often, which could result in higher support costs. Is that really true? I don't know, but for &lt;a href="http://www.backbase.com"&gt;our company&lt;/a&gt; (30 employees and growing) it's certainly not relevant. One thing is sure: the Dell sales reps get more commission when they sell Latitude and Optiplex. &lt;br /&gt;&lt;br /&gt;Of the 4 sales reps, two were fairly good so they were promoted almost immediately. Two were different, but similar in that they:&lt;br /&gt;- Lacked any technical competence&lt;br /&gt;- Broke their promises frequently&lt;br /&gt;- Lied outright more than once&lt;br /&gt;- Talked so smooth that it was either scary or hilarious&lt;br /&gt;They promised things like 'I will take care of it today' and 'it will be delivered by October 1', and of course that didn't happen. They tell you lies like 'we don't sell Inspiron to corporate accounts anymore' and 'you will qualify for buying on credit'. For 5 times in a row they submitted an unsuccessful request to buy on credit (taking a couple of days), while we were perfectly happy to pay up front.&lt;br /&gt;&lt;br /&gt;Finally I was so disappointed with the Dell sales reps that I decided to order without human intervention: via the Internet! I entered my order and indicated that I wanted to pay up front. A couple of days later the account manager called me: the request to buy on credit was denied (?), and if I could resend my order directly to him via fax. Even buying via the Internet doesn't work with Dell, apparently. &lt;br /&gt;&lt;br /&gt;The Dell website itself is an interesting case, though: on the one hand it's great that you can configure your systems online, but from a usability perspective there’s a lot that can be improved. And they don't seem to have made any real improvements in the last couple of years. At my company we've created a &lt;a href="http://projects.backbase.com/RUI/shop.html"&gt;demo application&lt;/a&gt; with some ideas how an improved Dell shop could work. It’s not intended to be completely foolproof, but it offers an interesting new perspective. Especially drag-and-drop and the animated sort-functionality are highly appreciated. Now just wait until Dell realizes their website is out of date...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7367481-110815795794213423?l=richui.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://richui.blogspot.com/feeds/110815795794213423/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7367481&amp;postID=110815795794213423' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7367481/posts/default/110815795794213423'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7367481/posts/default/110815795794213423'/><link rel='alternate' type='text/html' href='http://richui.blogspot.com/2005/02/dell-and-buying-via-internet.html' title='Dell and buying via the Internet'/><author><name>Jep Castelein</name><uri>http://www.blogger.com/profile/02749121748856550538</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7367481.post-110806769176929749</id><published>2005-02-10T11:17:00.000-08:00</published><updated>2005-02-10T13:32:52.363-08:00</updated><title type='text'>Custom attribute with namespace: hasAttributeNS()</title><content type='html'>A colleague today showed me that he had created a custom attribute in his own namespace. He created a small JavaScript function to sort an XHTML table, which is triggered by the attribute g:sort="yes". An example is on &lt;a href="http://www.grauw.nl/interests/anime/#nl-licenses"&gt;his webpage&lt;/a&gt;. The JavaScript file can be seen &lt;a href="http://www.grauw.nl/js/tablesort.js"&gt;here&lt;/a&gt;.  &lt;br /&gt;&lt;br /&gt;He uses the hasAttributeNS() JavaScript as specified in the &lt;a href="http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#ID-ElHasAttrNS"&gt;W3C DOM Level 2 specs&lt;/a&gt;. Unfortunately only Mozilla and Opera 8 have implemented this. I'm not sure about Safari: does anybody know more about this? I haven't see this function on &lt;a href="http://www.quirksmode.org/dom/w3c_core.html"&gt;Quirksmode&lt;/a&gt; yet. In any case, IE does NOT support this function. &lt;br /&gt;&lt;br /&gt;Jim Ley &lt;a href="http://www.quirksmode.org/blog/archives/2005/02/javascript_trig_1.html#c966"&gt;mentioned&lt;/a&gt; that this will result in more complicated JavaScript code, because &lt;em&gt;"IE doesn't have a getAttributeNS - you can only do getAttribute("chicken:feed") - which means you have to manage the namespace handling"&lt;/em&gt;. I don't know what to think about that. Do you really want to handle namespaces? Or can you just do getAttribute("g:sort") and be happy with that. &lt;br /&gt;&lt;br /&gt;Personally I'm pragmatic. I like it when scripts work on IE and Mozilla, and ideally on Opera 8 and Safari 1.2+. So getAttributeNS is elegant, but I wouldn't use it on my site. It's time for a JavaScript library that creates an abstraction layer, so you don't have to worry about all these browser quirks :-)&lt;br /&gt; &lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7367481-110806769176929749?l=richui.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://richui.blogspot.com/feeds/110806769176929749/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7367481&amp;postID=110806769176929749' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7367481/posts/default/110806769176929749'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7367481/posts/default/110806769176929749'/><link rel='alternate' type='text/html' href='http://richui.blogspot.com/2005/02/custom-attribute-with-namespace.html' title='Custom attribute with namespace: hasAttributeNS()'/><author><name>Jep Castelein</name><uri>http://www.blogger.com/profile/02749121748856550538</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7367481.post-110770427538689230</id><published>2005-02-06T07:29:00.000-08:00</published><updated>2005-02-06T08:17:50.323-08:00</updated><title type='text'>Custom tags, namespaces and DTDs</title><content type='html'>When you want to add extra functionality to web applications, you might want to add extra attributes or tags. The idea of custom attributes is presented in a nice article by Peter-Paul Koch on A List Apart: &lt;a href="http://www.alistapart.com/articles/scripttriggers/"&gt;JavaScript Triggers&lt;/a&gt;, and further explained on &lt;a href="http://www.quirksmode.org/blog/archives/2005/02/javascript_trig_1.html"&gt;PPK's website&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;In the article below I give some extra ideas about custom tags and attributes, and how they can be combined with namespaces and DTDs. &lt;br /&gt;&lt;br /&gt;Namespaces and DTDs have a different purpose. Namespaces make it possible to mix different XML vocabularies in a single document. DTDs make it possible to check the validity of an XML document. &lt;br /&gt;&lt;br /&gt;If you use a custom attribute ‘required’ in an XHTML document, you are basically mixing your own XML-language with XHTML. There could be naming conflicts if a future version of XHTML also introduces the ‘required’ attribute. Therefore it’s better to put your own tags and attributes in your own namespace. You indicate the namespace with a namespace prefix. This could be the result: &lt;br /&gt;&lt;br /&gt;&amp;lt;?xml version="1.0" encoding="UTF-8" ?&amp;gt;&lt;br /&gt;&amp;lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" &amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;html xmlns="http://www.w3.org/1999/xhtml" xmlns:ppk="http://www.quirksmode.org/ppk" &amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;body&amp;gt;&lt;br /&gt;&amp;lt;form&amp;gt;&lt;br /&gt;&amp;lt;textarea ppk:required="true"&amp;gt;&amp;lt;/textarea&amp;gt;&lt;br /&gt;&amp;lt;/form&amp;gt;&lt;br /&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;br /&gt;&lt;br /&gt;Then you might want to check for validity, both for XHTML and for your own attributes. Checking for XHTML validity is important to ensure compatibility with web browsers. You cannot change web browser implementations, so you better make sure your documents are compliant, otherwise your pages might be rendered incorrectly. Your own XML tags and attributes will NOT validate based on the standard XHTML DTD, regardless whether they are in their own namespace or not. But the good thing is that the browser also won’t mind about these extra tags: they’re just ignored &lt;a href="#note1"&gt;(1)&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;So it’s your own responsibility to make sure that your own tags and attributes are processed correctly, using JavaScript. Then it makes sense to validate your custom markup, otherwise your JavaScript might not work correctly. For this purpose you can add your own tags and attributes to the DTD. For validation it is NOT important whether you use namespaces or not. A validating DTD parser is not even aware of namespaces (see &lt;a href="http://www.rpbourret.com/xml/NamespacesFAQ.htm#s7"&gt; Roland Bourret's Namespace FAQ&lt;/a&gt;). Validation is helpful during authoring of documents, and many authoring environments can use DTDs or Schemas for code completion and validation.  &lt;br /&gt;&lt;br /&gt;At &lt;a href="http://www.backbase.com"&gt;Backbase&lt;/a&gt; we have introduced two additional namespaces (one for visible tags, and one for system tags), and we have implemented code completion and validation for DreamWeaver, Eclipse and Visual Studio.NET. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a name="note1"&gt;(1)&lt;/a&gt; NOTE: if you use a namespace, you have to declare it, otherwise some browsers (such as Mozilla 1.8) will display XML errors. In the example above I have declared the namespaces in the HTML tag. &lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7367481-110770427538689230?l=richui.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://richui.blogspot.com/feeds/110770427538689230/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7367481&amp;postID=110770427538689230' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7367481/posts/default/110770427538689230'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7367481/posts/default/110770427538689230'/><link rel='alternate' type='text/html' href='http://richui.blogspot.com/2005/02/custom-tags-namespaces-and-dtds.html' title='Custom tags, namespaces and DTDs'/><author><name>Jep Castelein</name><uri>http://www.blogger.com/profile/02749121748856550538</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry></feed>
