I examined recent Web Browser implementation with XMLHttpRequest Caching Test, which was posted by mnot, 2 years ago.
The set of browsers I examined includes the latest stable Windows versions of Mozilla Firefox, Microsoft Internet Explorer, Opera, Apple Safari, and Google Chrome.
I would like to leave my memos related to my "kung-fu" for some technology insights. Kung-fu doesn't only mean a battle style, but means hacking one's own life.
Wednesday, October 29, 2008
Tuesday, October 28, 2008
Today's Paper: MapJAX: Data Structure Abstractions for Ajax (USENIX 2007)
A model paper for discussing based on Ajax-like technologies. I have just found a PDF file of this paper in many icons on my desktop...
Title:
MapJAX: Data Structure Abstractions for Asynchronous Web Applications
Authors:
Daniel S. Myers, Jennifer N. Carlisle, James A. Cowling, and Barbara H. Liskov, MIT CSAIL
EE:
http://www.usenix.org/events/usenix07/tech/myers.html
Abstract:
The current approach to developing rich, interactive web applications relies on asynchronous RPCs (Remote Procedure Calls) to fetch new data to be displayed by the client. We argue that for the majority of web applications, this RPC-based model is not the correct abstraction: it forces programmers to use an awkward continuation-passing style of programming and to expend too much effort manually transferring data. We propose a new programming model, MapJAX, to remedy these problems. MapJAX provides the abstraction of data structures shared between the browser and the server, based on the familiar primitives of objects, locks, and threads. MapJAX also provides additional features (parallel for loops and prefetching) that help developers minimize response times in their applications. MapJAX thus allows developers to focus on what they do best-writing compelling applications-rather than worrying about systems issues of data transfer and callback management.
We describe the design and implementation of the MapJAX framework and show its use in three prototypical web applications: a mapping application, an email client, and a search-autocomplete application. We evaluate the performance of these applications under realistic Internet latency and bandwidth constraints and find that the unoptimized MapJAX versions perform comparably to the standard AJAX versions, while MapJAX performance optimizations can dramatically improve performance, by close to a factor of 2 relative to non-MapJAX code in some cases.
Title:
MapJAX: Data Structure Abstractions for Asynchronous Web Applications
Authors:
Daniel S. Myers, Jennifer N. Carlisle, James A. Cowling, and Barbara H. Liskov, MIT CSAIL
EE:
http://www.usenix.org/events/usenix07/tech/myers.html
Abstract:
The current approach to developing rich, interactive web applications relies on asynchronous RPCs (Remote Procedure Calls) to fetch new data to be displayed by the client. We argue that for the majority of web applications, this RPC-based model is not the correct abstraction: it forces programmers to use an awkward continuation-passing style of programming and to expend too much effort manually transferring data. We propose a new programming model, MapJAX, to remedy these problems. MapJAX provides the abstraction of data structures shared between the browser and the server, based on the familiar primitives of objects, locks, and threads. MapJAX also provides additional features (parallel for loops and prefetching) that help developers minimize response times in their applications. MapJAX thus allows developers to focus on what they do best-writing compelling applications-rather than worrying about systems issues of data transfer and callback management.
We describe the design and implementation of the MapJAX framework and show its use in three prototypical web applications: a mapping application, an email client, and a search-autocomplete application. We evaluate the performance of these applications under realistic Internet latency and bandwidth constraints and find that the unoptimized MapJAX versions perform comparably to the standard AJAX versions, while MapJAX performance optimizations can dramatically improve performance, by close to a factor of 2 relative to non-MapJAX code in some cases.
Monday, October 13, 2008
Today's Person: Mr. Software Rejuvenation Never Aging
Software rejuvenation is a proactive fault management technique for preventing the occurrence of severe crash failures in the future by cleaning up the state of a system. As bug-zero software is almost impossible, it is a practical solution to provide a robust system.
Prof. Kishor Trivedi and his group has contributed a lot to this area. Their webpage presents very useful information for studying the cutting-edge of this research, including Prof. Trivedi's keynote speeches, many conference/journal papers, and whitepapers.
Friday, September 12, 2008
The Best Introduction to InvokeDynamic (JSR 292)
Charles Nutter, the JRuby development lead, posted an extensive introductory article on the road towards JSR 292 Supporting Dynamically Typed Languages on the Java Platform (a.k.a. invokedynamic). According to his experience with prototyping of JRoby using InvokeDynamic, he has explained how we can leverage the coming feature of JVM. He also mentions things that are not covered in the current draft of the specification (EDR), such as AnonymousClassLoader, which are critical to support dynamic languages on top of the Java platform.
Charles Nutter, First taste of InvokeDynamic:
Tuesday, September 02, 2008
Google Chrome Explained in a Comic Book
The brilliant design of Google Chrome Web browser is explained in a comic style, including its per-tab process, hidden-class optimization in the V8 JavaScript engine, user interfaces, and so far.
It is a model technology show case displaying fairly deep technologies in attractive words of brevity and clarity.
It is a model technology show case displaying fairly deep technologies in attractive words of brevity and clarity.
Saturday, July 19, 2008
Today's Paper: Follow-ups for Google's MapReduce
Ralf Lämmel: Google's MapReduce programming model - Revisited. Sci. Comput. Program. 70(1): 1-30 (2008)
http://dx.doi.org/10.1016/j.scico.2007.07.001
Abstract:
Google’s MapReduce programming model serves for processing large data sets in a massively parallel manner. We deliver the first rigorous description of the model including its advancement as Google’s domain-specific language Sawzall. To this end, we reverse-engineer the seminal papers on MapReduce and Sawzall, and we capture our findings as an executable specification. We also identify and resolve some obscurities in the informal presentation given in the seminal papers. We use typed functional programming (specifically Haskell) as a tool for design recovery and executable specification. Our development comprises three components: (i) the basic program skeleton that underlies MapReduce computations; (ii) the opportunities for parallelism in executing MapReduce computations; (iii) the fundamental characteristics of Sawzall’s aggregators as an advancement of the MapReduce approach. Our development does not formalize the more implementational aspects of an actual, distributed execution of MapReduce computations.
Jeffrey's MapReduce papers and Talk:
http://dx.doi.org/10.1016/j.scico.2007.07.001
Abstract:
Google’s MapReduce programming model serves for processing large data sets in a massively parallel manner. We deliver the first rigorous description of the model including its advancement as Google’s domain-specific language Sawzall. To this end, we reverse-engineer the seminal papers on MapReduce and Sawzall, and we capture our findings as an executable specification. We also identify and resolve some obscurities in the informal presentation given in the seminal papers. We use typed functional programming (specifically Haskell) as a tool for design recovery and executable specification. Our development comprises three components: (i) the basic program skeleton that underlies MapReduce computations; (ii) the opportunities for parallelism in executing MapReduce computations; (iii) the fundamental characteristics of Sawzall’s aggregators as an advancement of the MapReduce approach. Our development does not formalize the more implementational aspects of an actual, distributed execution of MapReduce computations.
Jeffrey's MapReduce papers and Talk:
- Jeffrey Dean, Sanjay Ghemawat: MapReduce: simplified data processing on large clusters. Commun. ACM 51(1): 107-113 (2008)
http://doi.acm.org/10.1145/1327452.1327492 - Jeffrey Dean: MapReduce and Other Building Blocks for Large-Scale Distributed Systems at Google. Invited Talk at USENIX Annual Technical Conference 2007
http://www.usenix.org/media/events/usenix07/tech/mp3/dean.mp3
Friday, May 30, 2008
Today's Paper: Groovy O/R Mapping in ACM Queue
Chris Richardson has an ACM Queue article on O/R Mapping frameworks for dynamic languages, referring GORM (Groovy O/R Mapping). He successfully introduces GORM by highlighting its difference from Java's solution, Hybernate.
ORM in Dynamic Languages
Volume 6 , Issue 3 (May/June 2008)
Object-Relational Mapping
FEATURE: Q focus: Object-Relational Mapping
Pages 28-37
Year of Publication: 2008
ISSN:1542-7730
Author:
Chris Richardson
Abstract:
A major component of most enterprise applications is the code that transfers objects in and out of a relational database. The easiest solution is often to use an ORM (object-relational mapping) framework, which allows the developer to declaratively define the mapping between the object model and database schema and express database-access operations in terms of objects. This high-level approach significantly reduces the amount of database-access code that needs to be written and boosts developer productivity.
ORM in Dynamic Languages
Volume 6 , Issue 3 (May/June 2008)
Object-Relational Mapping
FEATURE: Q focus: Object-Relational Mapping
Pages 28-37
Year of Publication: 2008
ISSN:1542-7730
Author:
Chris Richardson
Abstract:
A major component of most enterprise applications is the code that transfers objects in and out of a relational database. The easiest solution is often to use an ORM (object-relational mapping) framework, which allows the developer to declaratively define the mapping between the object model and database schema and express database-access operations in terms of objects. This high-level approach significantly reduces the amount of database-access code that needs to be written and boosts developer productivity.
Tuesday, May 13, 2008
Best Twitter Architecture Introductory
Alex Iskold posted an excellent article on the architecture of the Twitter platform. It clearly explains what are problems and how they are solved in terms of relational DB and Computing Clouds.
- Twitter and the Architectural Challenges of Life Streaming Applications, Alex Iskold (May 12, 2008)
Tuesday, April 22, 2008
Today's Paper: Internet Monetization Papers in WWW 2008
This year's WWW conference accepted a lot of papers related to business method issues in world-wide web and had 3 sessions named "monetization". :-)
Internet Monetization: Online advertising
Internet Monetization: Online advertising
- Arpita Ghosh, Mohammad Mahdian: Externalities in online advertising. pp.161-168
- Uriel Feige, Nicole Immorlica, Vahab S. Mirrokni, Hamid Nazerzadeh: A combinatorial allocation mechanism with penalties for banner advertising. pp.169-178
- Hamid Nazerzadeh, Amin Saberi, Rakesh Vohra: Dynamic cost-per-action mechanisms and applications to online advertising. pp.179-188
- Jason D. Hartline, Vahab S. Mirrokni, Mukund Sundararajan: Optimal marketing strategies over social networks. pp.189-198
- Reid Andersen, Christian Borgs, Jennifer T. Chayes, Uriel Feige, Abraham D. Flaxman, Adam Kalai, Vahab S. Mirrokni, Moshe Tennenholtz: Trust-based recommendation systems: an axiomatic approach. pp.199-208
- Jens Grossklags, Nicolas Christin, John Chuang: Secure or insure?: a game-theoretic analysis of information security games. pp.209-218
- Anindya Ghose, Sha Yang: Analyzing search engine advertising: firm behavior and cross-selling in electronic markets. pp.219-226
- Massimiliano Ciaramita, Vanessa Murdock, Vassilis Plachouras: Online learning from click data for sponsored search. pp227-236
Tuesday, April 08, 2008
Google App Engine
Google announced Google App at Campfire One.
You can see their presentation at YouTube:
http://www.youtube.com/watch?v=3Ztr-HhWX1c
The movie is kindly prepared and easy to follow.
Google App Engine is a SaaS style Web application platform for developing and running Web applications. (Currently it is a 'preview release' and only available to the limited number of developers.) Python is the language for programming on the platform and the platform comes with APIs (and library implementation) for Datastore, Users, URL Fetch, and Mail, in addition to those which are already available with stock Python.
This is the ultimate style of agile web development with "zero" start-up cost as hosting service itself is also included in the platform. While lots of other companies are trying to do the similar thing, you know, it is Google, which is worth keeping our watch on.
You can see their presentation at YouTube:
http://www.youtube.com/watch?v=3Ztr-HhWX1c
The movie is kindly prepared and easy to follow.
Google App Engine is a SaaS style Web application platform for developing and running Web applications. (Currently it is a 'preview release' and only available to the limited number of developers.) Python is the language for programming on the platform and the platform comes with APIs (and library implementation) for Datastore, Users, URL Fetch, and Mail, in addition to those which are already available with stock Python.
This is the ultimate style of agile web development with "zero" start-up cost as hosting service itself is also included in the platform. While lots of other companies are trying to do the similar thing, you know, it is Google, which is worth keeping our watch on.
Subscribe to:
Posts (Atom)
-
Great demonstrations of powerful combination of recent deep neural networks applications - stacked hourglass networks for human pose estima...
-
A caveat for programming in C++ for ROS (Robot Operating System). The core ROS architecture is of the pub-sub messaging framework , where ...
-
In April, the "Linked Data Basic Profile 1.0" was published as a W3C member submission , lead by IBM Rational but involving other...