Introduction UrlEcho and UrlReq are two HTTP services I built a few years ago when I started learning about the Web’s architecture. The services are fairly generic and might be useful to other people experimenting, testing and debugging Web-based systems. They are hosted on AppEngine and free to use. Both services receive an HTTP request which contains a definition of another HTTP message in the…
I love Google Scholar , especially the recently introduced Updates feature . In a nutshell, this feature continuously searches for and recommends new articles relevant to your research based on a statistical model that incorporates your publications and citations. And it works really well! Google Scholar already recommended me dozens of relevant papers and, because Google keeps a good watch over…
I wanted to compile a list of online, Web-based tools that Web engineers can use for their work in development, testing, debugging and documentation. The requirements for a tool to make the list are: must be a live Web application (no extensions or apps you have to host yourself), free to use (some kind of free plan available), generic applicability (not usable only for a specific…
EDIT (March 08 2012) : This post got a lot of feedback on Hacker News and Reddit . I’d like to thank all the people on their positive and constructive thoughts and address some of the feedback. First, there was some really good advice on advanced usage of TODOs, such as using tools for tracking them systematically and using different TODO tags (such as TODO, FIXME, TBD, and XXX) to indicate the…
Forgive me, InterWebs, for it has been a year since my last blog post . 2011 was a very busy+wonderful year for me, and I’ve had the opportunity to meet many nice people, visit many cool places and work on many interesting projects. I gave a talk at the Knowledge Media Institute of the Open University, UK about inter-widget communication based on the work that Marko and I did in this field. I’ve…
EDIT (January 25 2011): A while back, the GitHub team has updated the GitHub API to v3 which is now even more cool. Since the new API supports fetching both the Markdown source and the HTML rendering of a comment, this eliminates the need for rendering the comments on the client-side using the Showdown library as it was done before. I’ve updated the blog post to reflect this and some other minor…
EDIT (August 20 2012) : Sergey Lukin has been doing some digging and discovered two very interesting things which make some of the claims in my post no longer valid. First, GitHub now allows URL query parameters in post-commit Web hooks. Although this isn’t mentioned in the official docs , it just works. In other words, you can specify a Web hook URL like…
EDIT 29 August 2011: I’ve published two papers on concepts presented in this blog post. First, I’ve published a paper about the Pmrpc library, its architecture and benefits over other libraries, at the MIPRO 2011 conference. Also, I’ve published a paper about the classification framework for cross-context communication in Web browsers. The paper presents a more detailed and advanced analysis of…
EDIT 29 August 2011: I’ve published a paper on the FSM-based formalism for describing RESTful systems at the ICWE 2011 conference . The formalism presented in the paper is a more detailed and advanced version of the one presented in the second part of this blog post. Links for downloading the paper and presentation slides are in the talks and papers section . EDIT 25 January 2012: I’ve published…
This is another lengthy post so I’m writing a brief overview as an introduction. Introduction This post is about web syndication feeds (RSS and ATOM), technologies for real-time delivery of feeds (PubSubHubBub, RSSCloud) and two opportunities I believe could help make these technologies better and widen their adoption: real-time feed processing/filtering and end-user selection of…
In a previous post I wrote about pmrpc - a project of mine for developing a JavaScript library for cross-domain inter-window RPC-style communication in HTML5 browsers . RPC communication is based on two technologies: HTML5 cross-domain messaging as the transport mechanism and JSON-RPC as the RPC protocol and message format, while the library supports other advanced features (access control,…
I've used Google Code project hosting for almost every project I've started in the last few years. It's really great and I love both the Web UI and all the functionality-related features (which Google is continuously extending ). However, one aspect in which I've found Google Code project hosting strangely lacking is customizability and extendability in adding rich content and even external…
As promised in my post on named arguments in JavaScript , this post will be about pmrpc - a project I’ve been working on with Marko for the last few months. But first, a bit of background. From mid 2007. when I was interning at Google up until today and my dissertation-related research, an issue that’s consistently been popping up in anything I worked on is inter-window communication. Inter-window…
FriendFeed is the only social-networking application I get and like using, and one of the reasons why is that it’s very community-oriented. The groups and friends approach of segmentation of attention easily directs both topic-oriented discussions and friends-oriented discussions towards the right people. One other nice thing about FriendFeed is that, although not as popular as Twitter or…
__EDIT (January 25 2012): This post was originally written in 2009. when AppEngine was still a “beta” product. In the meantime, AppEngine graduated and now has a shiny new billing policy . Long story short, Google changed how paid apps work : “Paid apps cost a minimum of $2.10/week”. In result, the free lunch is over and all information in this blog post is not valid anymore. Still, I’m keeping…
While working on another project ( pmrpc , which I will write about soon), the implementation of a feature came down to calling JavaScript functions with named arguments . Unfortunately, the JavaScript language (or EcmaScript to be exact) doesn’t support named arguments , rather only positional arguments. Usually , JavaScript developers get around this by defining functions to accept a single…