<body><script type="text/javascript"> function setAttributeOnload(object, attribute, val) { if(window.addEventListener) { window.addEventListener('load', function(){ object[attribute] = val; }, false); } else { window.attachEvent('onload', function(){ object[attribute] = val; }); } } </script> <div id="navbar-iframe-container"></div> <script type="text/javascript" src="https://apis.google.com/js/platform.js"></script> <script type="text/javascript"> gapi.load("gapi.iframes:gapi.iframes.style.bubble", function() { if (gapi.iframes && gapi.iframes.getContext) { gapi.iframes.getContext().openChild({ url: 'https://www.blogger.com/navbar.g?targetBlogID\x3d11356004\x26blogName\x3dxception\x26publishMode\x3dPUBLISH_MODE_BLOGSPOT\x26navbarType\x3dBLUE\x26layoutType\x3dCLASSIC\x26searchRoot\x3dhttps://openrent.blogspot.com/search\x26blogLocale\x3den_US\x26v\x3d2\x26homepageUrl\x3dhttp://openrent.blogspot.com/\x26vt\x3d-4655156434419967503', where: document.getElementById("navbar-iframe-container"), id: "navbar-iframe", messageHandlersFilter: gapi.iframes.CROSS_ORIGIN_IFRAMES_FILTER, messageHandlers: { 'blogger-ping': function() {} } }); } }); </script>

Good quotes from Oracle "Unlimited Application Scalability" whitepaper

The cost of each tier in a web application increases as you move from URL to SQL. From the white paper:

"In the first tier—the Web tier—the cost of serving static content by use of commodity boxes running Apache is very low and, due to its stateless nature, very predictable.

• In the second tier—the J2EE tier—the cost of hardware may be the same, but both the infrastructure software and the custom application logic are significantly more expensive.

The result is predictable: Applications that tend to allow each request to get past the first or second tier will be much more expensive to scale, and applications that rely on data access from the database for each request will encounter severe limits on their scalable performance.

The lesson learned is this: handle the incoming load in the earliest-possible tier, and do it with resources that have predictable scale-out behavior and costs. For most applications, those are the resources represented by commodity hardware—servers with fast CPUs and plenty of memory.

Also, you should deliberately build an architecture that will bottleneck in the earliest-possible tier on either the CPU or in memory. Why? You’re going to have a bottleneck, whether you choose to or not. And if you don’t pick the bottleneck deliberately, it’s going to end up in the most expensive and difficult-to-scale part of your environment."

What is a "serializable" object?

To serialize an object means to convert its state to a byte stream so way that the byte stream can be reverted back into a copy of the object.

Paul Saffo on IT today

"...the information revolution is over. Information was a word that made sense in an age when we didn't have much information. But when it goes deep and becomes ubiquitous, it ceases to be information and it becomes media...this is a personal media revolution. Google is a personal media company, not an information company."

.Net request flow

The browser sends an http request to the server for a file with an .aspx extension. This request gets handled by the httpd.sys kernel process, which maps the .aspx extension into IIS via the aspnet_isapi.dll ISAPI filter. This filter subsequently calls the .Net runtime worker process aspnet_wp.exe, which compiles the page into a DLL and stores it in the filesystem cache at C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\.

Good illustration of the OSI model

IBM has a really good illustration of the OSI model. I've always had trouble associating the different layers, and this makes it really transparent: