Showing posts with label ajax. Show all posts
Showing posts with label ajax. Show all posts

Sunday, November 1, 2009

Best of this Week Summary 26 October - 01 November 2009

Sunday, June 14, 2009

Best of this Week Summary 8 June - 14 June 2009

Sunday, May 10, 2009

Best of this Week Summary 04 May - 10 May 2009

  • Reference to an AJAX framework analysis/comparison result by Matt Raible (for example known for his framework of frameworks: AppFuse). Compared were Dojo, Ext JS, GWT, and YUI. Check also the comments.

  • Beginners level host and Java performance tuning concepts.

  • Handy PHP profiler and debugging tool/library. Helps you with logging, memory usage, double includes, page execution time and database activity monitoring.

  • Nice presentation on scalable web architectures from Cal Henderson, (ex) Flicker architect. Including horizontal vs vertical, architecture, sessions, load balancing, queuing, relational data, caching, H(ighly) A(vailable) data, federation, serving and storing files, CDN, real-world examples.

  • SpringSource has created Roo, a sophisticated round-tripping code generator that should make it quicker and easier to create and evolve Spring applications.

  • Funny: how to measure code quality: WTFs/minute :)


    Via.

  • You as a developer can now go social on IBM's myDeveloperWorks, a social network spun off of developerWorks.

  • An introduction on how one could formalize a SOA using WS-CDL, including a few real-world insurance based uses.

  • Yahoo has just released a major update for their innovative YQL. "The Yahoo! Query Language lets you query, filter, and join data across any web data source or service on the web. Using our YQL web service, apps run faster with fewer lines of code and a smaller network footprint. YQL uses a SQL-like language because it is a familiar and intuitive method for developers to access data. YQL treats the entire web as a source of table data, enabling developers to select * from Internet." The update adds "Execute", with which "developers now have full control of how the data is fetched into YQL and how it’s presented back to the user. With Open Data Tables, developers can build tables that manipulate, change, and sign the URLs to access almost any protected content, allowing YQL access and combining data across a variety of different authenticated services such as Netflix or Twitter. Developers can call multiple services and data sources within Execute to join and mashup data however they desire, letting Yahoo! do the work rather than their applications. Data can be tweaked and manipulated into an optimal format for applications to consume." Another example of what is possible can be found here. Check also this article for more explanations.

Sunday, May 3, 2009

Best of this Week Summary 27 April - 03 May 2009

Sunday, January 25, 2009

Best of this Week Summary 20 January - 25 January 2009

Saturday, January 3, 2009

My clients are getting thicker and thicker: MVC implementation shift

Last week I stumbled over this interesting article on the potentially changing Model View Controller architecture implementations. (Sidenote: here's the more subtle distinction between MVC1 and MVC2 described. And here's an article on the ambiguity of the term and pattern MVC.)
An example logical diagram of MVC2 is shown below:


For quite some years, the general practice was to generate HTML as result of the View, with the browser rendering it and being the thin web client. These days though, more and more the web client is getting heavier ("fatter") because of all the Javascript being used for AJAX, SPI and, in general, more logic on the web client.
The article takes a look at the different approaches to MVC implementations:

  1. the HTML-only approach;

  2. the HTML+Javascript "basic" approach; some of the Model's "business logic" is duplicated on the client;

  3. the "AJAX" approach; partial views can be updated, the view consists of multiple HTML fragments, Javascript creates the View, not the application server;

  4. and the full-blown Javascript-only ("a la gmail") approach; Javascript in the browser creates the views, near-complete responsibility for the Model business rules in the web client (browser), the web client would be the Controller.

The approaches range from, at the one extreme end, the definitive "thin client", and at the other extreme end, the definitive "thick client"." Example frameworks that can easily facilitate the last option are Google Web Toolkit (Java to Javascript) and Pyjamas (Python to Javascript). Below GWT's architecture diagram is displayed. Note the (relatively) limited application server procedures, part of the Model, preferably only performing basic validation, security, etc.


The new MVC2 diagram for the above mentioned fourth approach would look something like this:

Included in the article is also how you could split up work in a team between people working on the View and Model parts.

I do not completely agree with the statement in the beginning of the article that says "The Web client takes care of keystrokes and mouse movements: the Web browser application itself is the Controller". I'm reading this as: the browser is the controller. Though, when you look at the first picture, that is not what the Controller is supposed to be.
But, in general the whole potential movement of going to thick clients is an interesting one to keep an eye on.
Other pros for thicker Javascript-based clients (not mentioned in the article) are:
  • Easier distribution of new versions than in the old days with fat clients like Visual Basic, where you had to make sure all clients got updated;

  • Easy opening up of your SOA webservices. The fat client could directly access them;

  • Easier mashup possibilities at the View layer via Javascript;

  • Potentially a large improvement in scalability: the client processing power is used as much as possible, the application server only performs several basic checks;

  • The Javascript generator/builder takes care of browser compatability.


Several cons are though:
  • Potentially quite significant longer page loading times when the Javascript all has to be loaded at once;

  • If not designed correctly, there could be significant extra network traffic;

  • Being dependent on the Javascript generator/builder when a browser is (not anymore) supported (though an opensource framework allows you to build it yourself if really needed).

Saturday, October 4, 2008

Best of this Week Summary 29 September - 05 October 2008

Saturday, September 27, 2008

Best of this Week Summary 22 September - 28 September 2008

Monday, August 11, 2008

Best of this Week Summary 04 August - 10 August 2008

  • Good article on the current status of Ajax frameworks. Most interesting is the notion that in 2005 there were already 48 Ajax frameworks and in 2007 there were already 240! Clearly the expected consolidation did not occur yet. Nice conclusion I agree with at the end: for Ajax use Prototype and script.aculo.us, they have been around for 3-4 years. For more heavyweight RIA applications use Flex (Silverlight is in a too early stage). What about AIR? I'd say the same. Though AIR needs its own runtime, so is a bit different.

  • Good intro on google's recently introduced open sourced binary encoding format Protocol Buffers, including references to pros and cons articles.

  • Recently the Open Web Foundation was launched. It "[...] will be focused on developing the technical specifications of protocols used for communication and inter-operability between applications on the web. The foundation will also set out the legal terms and best practices for the use and transport of both private and public data, and the usage of web services". Here's how it relates to the Data Portability Working Group and who's in it.

  • Microsoft is now sponsoring the Apache Software Foundation. Note that is not a move away from IIS, as mentioned in the referred blog in the article.

  • Drizzle is the name of the new lightweight MySQL spin-off, which aims at systems that have to process massive amounts of concurrency (mostly reads) on multicore systems. Think Cloud and Net(?) applications. Or, as they say it: "A High-Performance Microkernel DBMS for Scale-Out Applications ".

  • Quite elaborate article and comparison on how secure the current major web frameworks are.
    Discussed are: Struts, Spring MVC 2, Struts2, Spring, Webwork, Stripes, JSF, MyFaces, Wicket and MS .Net.

Saturday, July 19, 2008

Best of this Week Summary 14 July - 20 July 2008

  • Real world cases used to describe vertical scaling for Java EE applications. Definitely check also the comments.

  • An interesting theory and technology: host-proof hosting. This is a technique where the browser encrypts the data to be stored on the server, such that the host (application) only sees encrypted data, thus completely preventing the host from seeing the actual contents of the user data. Thus enables for "zero knowledge web applications". Two examples of implementations are Clipperz (sourcecode partially AGPL v3) and Passpack (sourcecode MIT license).

  • Visualize your code in CVS with this Visual Code Navigator. Too bad that's CVS, which is quite old. Hopefully there'll be an SVN version soon!

  • Sun this week released their
    Sun Java Mobile Enterprise Platform 1.0: "MEP is a framework for developing mobile enterprise applications. Based on robust synchronization technologies, it enables enterprise users to synchronize enterprise data (from back-end systems like Siebel or SAP) with their mobile devices. In a nutshell, MEP enables enterprise users to carry the enterprise in their pockets". You can get a free evaluation here.

Sunday, June 22, 2008

Best of this Week Summary 16 June - 22 June 2008

Sunday, June 8, 2008

Best of this Week Summary 31 May - 08 June April 2008

  • Interesting article on how to do estimates with Use Cases.

  • The Google Ajax APIs will be available via cached versions for faster load times, stored at Google's servers. Hmmm, doubt that you want to depend on that...

  • An insight in Google's datacenters. Definitely worth reading. Google's core software consists of: GFS, BigTable and MapReduce.

  • The OpenAjax Alliance has created a set of papers "as a guide to help Web developers and IT managers understand and evaluate Ajax, define a successful Ajax strategy, and become familiar the important role OpenAjax plays in the development of the Ajax market". This one is an interesting one as it describes Ajax for mobile devides. On the other hand, browsers like Opera can already handle (some form) of regular Ajax, so is it worth making the distinction?

Saturday, February 23, 2008

Best of this Week Summary 18 February - 23 February 2008

  • Nice overview showing how a Ruby on Rails Facebook application named "Friends for Sale" scaled to handle 200 requests/second and 300M page views per month. Includes the used hardware, software, # of visitors etc.

  • This is a short article describing Comet, one of the better known technologies to push events from the server to the browser client. Also explains the name Comet (I for example thought it was a software product, not a technology).

  • Reference to a thorough thesis (conclusions in the article) on performance of AJAX applications for 12 frameworks on mobile devices. Also 5 larger AJAX websites on mobile devices were compared.

  • Nice (but not very elaborate) comparison of 9 features and benchmark of four JEE 5 servers: JBoss 4.x (OSS), Glassfish 2.1 (OSS), WebSphere 2.0 CE (OSS) and WebLogic 10. Check the reference to the jRealBench (zip) benchmarking tool.

  • IBM has just opened their Jazz tool for beta. This post is a short description of installing and using it. Jazz "is a collaborative development environment product based on Eclipse, designed to support the application of RUP, which is itself an interative software development process framework built around iterative". But as you can see in the comments, it's not really restricted to RUP.

Sunday, February 10, 2008

Best of this Week Summary 28 January - 10 February 2008

  • Interesting idea mentioned in this post: the very basic site inursite.com validates your markup daily and you get sent the result via email or RSS. Of course during the building your site should already validate, but this site can help for Continous Integration of your front-end.

  • Great overview of Javascript/AJAX performance issues in all major browsers (except Opera). You can use this information to know where to focus your Javascript optimizations on.

  • This week several BIG names joined OpenID: Google, Verisign and IBM.

  • Google's just released Social Graph API. It tries to find public relationships between people's accounts.

Saturday, January 19, 2008

Best of this Week Summary 14 January - 20 January 2008


Sunday, November 25, 2007

Best of this Week Summary 19 November - 25 November 2007

  • For software companies to test the security skills of their IT employees, the Secure Programming Council created this "Essential Skills for Secure Programmers Using Java/Java JEE". The draft is now open for public review for 60 days. Other languages like C++ and PHP will follow. Amongst the people in the Java steering committee are Ed Tracy and assisting them are for example people from the OWASP. Definitely a good initiative.

  • In October W3C wrote a proposal to allow cross domain capabilities (same-origin-policy) for the XMLHttpRequest (XHR) object. This article summarizes it and also compares it with the JSONRequest proposal.

  • Great presentations that contain comparisons of several Java web frameworks: JSF, Spring MVC, GWT, Seam, Stripes, Struts2, Tapestry and Wicket. Also included are Flex and Grails. Definitely a good starting point if you're starting with a web framework selection. Note that the general trend is that Tapestry is being used less and less, while Wicket is on the rise. GWT I would not use quickly for deployment on Internet sites since it creates quite large Javascript code. For intranet this constraint is a lot less serious. Note that soon you should be able to minimize the required Javascript libraries, thus improving download time. This is a presentation of Matt Raible where he compares a bunch of web frameworks in this 1 hour funny presentation, from a developer's point of view. He also asks who uses what (Hibernate, Websphere, Struts, JSF, Wicket etc). The above mentioned presentations are updated version of the one used in this presentation. His conclusion is that there is no real winner yet.

  • A nice how-to on how you can write RESTful web services in Java that conform to the JAX-RS: Java API for RESTful Web Services (JSR-311) specification. This JSR should be in Java EE 6.

Saturday, November 17, 2007

Best of this Week Summary 12 November - 18 November 2007

Saturday, August 4, 2007

Best of this Week Summary 29 July - 04 August 2007

  • This is a very interesting overview (basically a summary) of YouTube's architecture and how it handles scalability. Python is used all over the place. Includes lessons learned! Of course YouTube does not need heavy business-logic nor a solid transaction-architecture as mentioned here too. This makes scaling a little less of a challenge; but since the numbers are so huge, the challenges are nevertheless large.
    This (a bit older) article describes how Digg handles scalability. Definitely interesting too.
    And here's the inside scoop on MySpace architecture and scalability.
    Here are details on Google's file system GFS and how it helps solve them scalability.
    This PDF shows how Japan's largest social networking site (SNS) Mixi is handling scalability with MySQL.
    Finally, interesting regarding scalability and availability is this architecture "mashup": Java JVM is used to improve scalability in Drupal.

  • This looks like an interesting upcoming feature in HTMLUnit for unittesting AJAX enabled web-applications. It will actually re-synchronize AJAX calls that should run asynchronously.

Sunday, July 29, 2007

Best of this Week Summary 22 - 28 July 2007


  • Interesting conclusion made in a technical report from the Delft University of Technology regarding the use of push vs pull techniques in AJAX applications for web-based realtime notifications. They concluded that:

    "In this paper we have compared pull and push solutions for achieving web-based real time event notification. The contributions of this paper include the experimental design, a reusable implementation of a sample application in push and pull style as well as a measurement framework, and the experimental results.
    Our experiment shows that if we want high data coherence and high network performance, we should choose the push approach. However, push brings some scalability issues; the server application CPU usage is 7 times higher as in pull. According to our results, the server starts to saturate at 350-500 users. For larger number of users, load balancing and server clustering techniques are unavoidable."

  • Yahoo released this very cool extension to Firebug (the standard tool for webdevelopers) named YSlow. Here's a good introduction with screenshots and what it can do. Here's an example of it analyzing this blog (click on it for the large version):


  • On the funny side: a list of commonly used development methodologies that are "broken" to say the least :-)

Saturday, June 30, 2007

Best of this Week Summary 24 - 30 June 2007

  • Nice use of RSS: use it to publish your nightly build results. They then use the (commercial) product Confluence to build a wiki page out of it.
  • Interesting write-up of one of the developers of the Digg comments system. Very AJAX and PHP orientated solution. Notice for example that the DOM is created mostly dynamically and there is 4x as much Javascript code than PHP code for the comments functionality! For interesting detailed design desicions made (main question to anser: how to the commenting more complex and simpler at the same time), see this link, also mentioned in the article.