text:
Does the biggest threat lie within?In the far future, humanity has left Earth to create a glorious empire. Now this interstellar network of worlds faces disaster - but can three individuals save their people?The empire's outposts are utterly dependent on each other for resources, a safeguard against war, and a way its rulers can exert control. This relies on extra-dimensional pathways between the stars, connecting worlds. But 'The Flow' is changing course, which could plunge every colony into fatal isolation.A scientist will risk his life to inform the empire's ruler. A scion of a Merchant House stumbles upon conspirators seeking power. And the new Empress of the Interdependency must battle lies, rebellion and treason. Yet as they work to save a civilization on the brink of collapse, others have very different plans . . . The Collapsing Empire is an exciting space opera from John Scalzi.
Product recommendations
by John Scalzi
Stay up to date with W.F.Howes news and announcements
The Home of Audiobooks, Digital Services & Large Print


text:
As your Trustee, I have been focused on holding our school administration accountable to provide 21st century education that emphasizes Critical thinking, Creativity, Collaboration, Communication and Character! This prepares our scholars to be College, Carrier and most importantly Life ready!
In the past 4 years, I am proud that AUHSD implemented programs and received accolades that benefited our scholars:
- Anaheim Pledge, a comprehensive covenant to our scholars and parents which culminates in guaranteed admission to University of California Irvine and California State University Fullerton
- Increasing Graduation Rate and Decreasing Dropout rate
- Increasing our transfer rate to University of California, Irvine
- Awards Recognition: 5 California Distinguished schools, 13 California Gold Ribbon Schools, 5 California Democracy Schools
- One year partnership with TESLA Foundation, which trained our scholars in drone technology
- Anaheim Innovative Mentoring Experience, which continues to give internship and mentoring opportunities for our scholars in Business, Trade and Government sector
- Building a partnership with the City of Anaheim to open up fields for community use and donate fireworks sales revenue to school programs
- Creation of Parent Leadership Academy
- UCI Saturday Law Academy
- Funding for Anaheim HS Pool
- First in the nation, Digital Mapping System for Anaheim HS, that helps increase response time for first responders
- Measurer H construction project completion are on time and under budget
- Saving a total of approximately 16 million for Tax payers on the Bonds
While the above and other accomplishments are celebrated, we have more work to be done. We need to focus on further improving all our academic metrics and providing more opportunities for our scholars. I will continue to:
- Invest in keeping our Scholars safe in their school sites
- Invest in 21st century education emphasizing on Critical thinking, Creativity, Collaboration, Communication and Character
- Invest in state of the art facilities
- Create a community school model that helps our students and parent find resources
- Hold our Administrators, School sites, staff and teachers accountable!
I was honored to be elected by you 4 years ago, and have never missed a board meeting represent you! I am ready to lead for another 4 years!
I humbly ask for your vote on November 6th to continue the progress.

subset: commoncrawl


text:
The lead mentions the fact that President Barack Obama appears in the fourth issue (he did in the third too, actually):
Even in an alternate universe where iconic superheroes are wrecking the world, pizza, juice boxes and President Obama help ground DC Comics' event series Flashpoint in reality.Ugh.
Obama is also mentioned in the post at DC's PR blog, The Source, that links to the USA Today article.
Glossed over is the infinitely more interesting (probably especially so to people who don't give a shit that Element Woman is a superhero with a sense of humor) question of what the inclusion of the real president in Flashpoint says about DC as a publisher (they haven't included any real presidents since the Clinton administration, with Lex Luthor winning 2000's presidential election) and the decision to put President Barack Obama into the narrative of Flashpoint, about a villain changing the real, true DC Universe from the way it should be to a fallen, wicked world where the greatest heroes either don't exist or are genocidal maniacs, suggests about their view of Obama.
I mentioned this in my review of Flashpoint #3; I'll reprint the salient part here so you needn't wade through my reviews of various aspects of that and a stack of super-comics if you're only interested in this aspect:
...what really stood out in this scene for me was what the accidental politics of it might be. Did you guys see Colin "Too Busy Thinking About My Comics" Smith's post about gender and race in Flashpoint and Fear Itself last week? (Both Blog@Newsarama and Robot 6 linked to it, so I'm assuming there's a pretty good chance you did).I don't think Geoff Johns or DC as an entity is actually anti-Obama; if they seem conservative as a publisher, it seems to be conservative in the avoid-political-attention-of-any-kind-at-all-costs sort, rather than making political statements.
Smith points out that while Cyborg seemingly has a plum role in the world of Flashpoint, as its Superman, the story is constructed to constantly remind us that the world is a fallen one, where things are wrong, and the thrust of the series is that the heroes must put the world back together so that it's the way it should be, again, the right way.
That is, so that Cyborg's back to being a B- or C-Lister whose best days are behind him, and who is usually relegated to babysitting the new generation of Teen Titans, if doing anything at all. (I know that Geoff Johns himself doesn't think that, based on the many times he's written the character, and the many different ways he's tried to cram him in whenever possible, due to what seems like genuine affection, but that's what the story he's currently writing suggests).
Anyway, given the reading of Flashpoint as a fallen world, what does that say about the fact that Obama is president in the Flashpoint DCU, but not the "real" DCU…?
When anyone does detect a whiff of political opinion in their wares—a lesbian Batwoman, a Muslim member of Batman Inc., Superman renouncing his citizenship in some dumb, non-canonical back-up story, etc.—they generally seem caught off guard by it and, lately, to actively avoid even potential controversy.
Still, when villainous Professor Zoom, The Reverse-Flash changed the heroic DCU into a darker world, where Bruce Wayne was killed by a mugger when he was a little boy, where Superman was taken prisoner by the government as a child and experimented on for years and where Aquaman and Wonder Woman have destroyed Europe and are responsible for the deaths of millions of innocent civilians, he also arranged it so that President Generic Fakeperson was replaced by Barack Obama.
That might have been a more interesting thing to talk to the writer and editor of the story about then whether or not the fourth issue was going to be awesome and, if so, how awesome?


text:
The Arduino Watch: Steampunk Edition was out at Maker Faire but for everyone that didn't get to see it there, enjoy these pictures!
And be ready for the coming Instructable that will teach you how to make your own Arduino Watch!
Wednesday, June 02, 2010
The Steampunk Edition
Posted by Matthew at 10:28 PM
1 comment:
- Jean-David said...
I love the concept!
I'm planning on doing one for live RPG games, on a slightly different theme...
But sadly, I've found no information on the temperature sensor glove... are you planning on explaining how you done it?
Subscribe to: Post Comments (Atom)


text:
Entrepreneur Sells Soil From Serial Killer's Home For $25 A Gram
People are getting creative during the recession. One entrepreneur is making a profit off dirt, a commodity that doesn't usually fetch so high a price. Unless, that is, if it's from the home of a famed serial killer.
Eric Gein of Jackson, Fla., had an associate fill two sandwich bags with soil from Anthony Sowell's house two weeks ago, and peddled it for $25 a gram on the website Serial Killers Ink, the Plain Dealer reports. That's almost five times the average price of low grade marijuana.
Gein and his wife Jessika run the crime memorabilia website, and maintain a correspondence with numerous killers, cannibals, supremacists and satanists to keep their stock replenished.
Gein isn't the couple's real name; Mr. Gein claims his mother, who is suffering from stage 3 cancer, would disown him if he revealed his real identity. It would cause a small scandal at their church, reported Folio Weekly.
So instead, when the press came calling, Erik and Jessika adopted the surname of murderer and body-snatcher Ed Gein. The real Gein's refashioning of exhumed corpses into trophies made him the inspiration for some of cinema's most chilling villains, from "Psycho's" Norman Bates to "The Silence of the Lamb's" Buffalo Bill to Leatherface from "The Texas Chainsaw Massacre."
Some of the other souvenirs on sale on their website include a handwritten letter from Ted Kaczynski, the Unabomber ($250), Polaroids of the founding members of the Aryan Brotherhood ($350), and a small abstract painting by the deceased Canadian cult leader, Roch Theriault ($250).
The website claims that it is interested in "education, knowledge and enlightenment."
"If you do not agree with this website," it says, "you are politely encouraged to simply leave."
Gein's morbid merchandise is branded as soil from the "House of Horrors," an apt description for the duplex where Sowell, otherwise known as the "Cleveland Strangler," buried his 11 female victims over two years.
In October 2009, Sowell was arrested on 85 charges of murder, rape and kidnapping. Sowell was found guilty on all but two counts, and now awaits his fate on death row.
Some family members of the victims are outraged over Eric Gein's business profiting off their loved ones' tragic deaths.
"You're talking about human beings, about lives that were misfortunately and horribly taken away," Denise Hunter, the sister of one victim, told Fox 8. "You want a piece of that?"
"I do have sympathy for them," responded Gein, "on the other hand, I'm running a business and it is a legal business."
Gein doesn't seem to think he's to blame for the families' upset.
In the website's "About Us" section, it used to state: "We also find it sickening that while the media condemns this business, they are the ones who bring us to the attention of the families of victims, which causes more heartache and pain to the families -- All in the name of ratings."
That section was recently removed.
Don't Miss: Companies Hiring Now
Stories from AARP
- Collecting Social Security Benefits While Working
- 8 Things You Can Learn From Your Intern
- Great Summer Jobs For Retirees


text:
Hello! Are you lost, weary internet adventurer? You have somehow managed to stumble into the loneliest, most untraveled virtual corridors of the internet where my blog resides. If you're still reading this, you have also decided to give me a moment of your time, perhaps from the sheer exhaustion of your endless browsing, but whatever, I'll take it!
You may be asking yourself, "What is HattieVents?" or you may not, which is perfectly fine, I won't judge your lack of curiosity. I'm joking! "Relax will ya, relax!" (Oscar – The Odd Couple.) This is my small corner of the world where I will be expressing my unedited opinions (although no one has asked me to do so) on many different subjects. A virtual dumping ground, if you will, for all the pollution that fogs up my brain causing me to lose many hours of sleep as I ponder the simple questions of life such as – Why are we here? Who is God? Why is the world in such a horrible state? Why are some people so mean to animals? Have I accomplished anything in my life? Should I have cereal or toast for breakfast?? Did I lock the front door???
Like all of us, I have opinions about most things. The problem is, I've been hesitant to share mine for most of my life even when asked. The main reason for this is the fear of offending others,whether parents, grandparents, aunts, uncles, friends, co-workers, acquaintances, random person in Starbucks who insists on making conversation when I am clearly involved in something much more interesting on my phone! However, I've reached a point in my life where I simply cannot live that way anymore. I have opinions and, as long as I do it with respect and grace, I have a right to share those opinions in their undiluted entirety. If someone is offended because my opinion differs from theirs, then I guess that really is their issue, not mine. I'll just have to remove my rose-colored glasses and accept that we can't all hold hands while singing "Kumbaya" around the campfire now can we? And, if I happen to get ridiculed for my opinions, then as my Dad always says "consider the source."
I also hope to share and exchange useful information, tips, hints on dealing with some of life's daily chores and struggles. I am certainly NOT an expert on much of anything, but you never know when some of the coping strategies you have found useful in certain situations may also help someone else facing similar circumstances.
So, all that rambling just to say I've started a blog, a fairly random blog. Nobody asked for my opinion, but I'm going to put it out there anyway. It may be that no one ever reads it and that's ok too. It should at least prove a fairly cathartic exercise for me.
Pleasant journey!


text:
Implement and maintain standards set by the Centers for Medicare and Medicaid Services (CMS) and other accrediting agencies, such as the College of American Pathologists (CAP). Responsible for the overall administration of the laboratories, assuring the employment and training of competent personnel that can perform test procedures, record and report test results promptly, accurately and proficiently.
Oversee the technical and scientific oversight of the laboratories, assuring compliance with applicable federal and state regulations. Consult on the appropriateness of the testing ordered and the interpretation of test results. Oversee quality assurance and compliance for the assisted reproduction program.
Responsible for all aspects of test performance, to include the pre-analytic, analytic and post-analytic phases of testing. Assure the enrollment in an approved proficiency testing program, the appropriate execution and evaluation of proficiency testing, and the establishment and maintenance of quality control and quality assurance programs.
Take and document all necessary remedial actions upon the identification of significant deviations from the established laboratory performance characteristics, and report patient test results only when the system functions properly.
Assure the complete and accurate reporting of test results, and then consult with the clients regarding the quality and the interpretation of the test results. Assure the following of the appropriate enterprise and laboratory policies and procedures, and the availability of an approved procedure manual to all personnel.
Select the appropriate methodology for clinical use, verify all procedures performed and the establishment performance characteristics, including the precision and accuracy of each method. Resolve technical problems and assure the taking of remedial actions when test systems deviate from the established laboratory performance specifications.
Identify the training needs and ensure that each individual performing tests receives regular in-service training appropriate for the type and complexity of the laboratory services performed. Evaluate the competency of all testing personnel to ensure that they maintain their competency to perform test procedures and report test results promptly, accurately and proficiently.
Assist laboratory clients to ensure clinical expectations the ordering of the appropriate tests and that the test results reports include pertinent information required for specific patient interpretation.
Perform laboratory procedures and testing as needed. Implement and review the quality laboratory objectives, ensuring accuracy and precision. Review laboratory quality control activities and implement corrections and improvements as necessary. Seek out and evaluate new quality assurance concepts, and evaluate new technologies, methods and equipment with respect to improved quality.
Genetics lab should be similar, with wording about specialty, to include genetics or reproductive. Clinical Laboratory Improvement Act/Amendment.
Solves a wide range of complex mathematical problems using a variety of techniques. Manages conflicting priorities effectively. Delivers written and oral communication, responds to questions and concerns, and produce specific outcomes and impact. Deals effectively with ambiguity and uncertainty; recovers from disappointments and setbacks. Implements programs as needed to comply with diverse healthcare laws or regulations. Monitors regulatory compliance of all healthcare practices to ensure no violations. Operates quality testing equipment and verifies collected data. Utilizes quality control techniques to monitor and maintain laboratory equipment. Participates in research studies for area of specialization or function.
Doctor of Philosophy (PhD) or Medical Doctor (MD) degree required.
Experience working in a Clinical Laboratory Improvement Amendments (CLIA) certified medical laboratory is desired.
Must be Board Certified or Board Eligible in Molecular Genetics by the American Board of Medical Genetics or equivalent agency.


text:
Join Our Junior Golf Program
We are Open Year Around! Prices May Vary
Tee Times are Recommended, but Not Required
Prices do not reflect seasonal discounts
Dunes Junior Golf Program is geared for youth aged 4-High School. It is a 3 stage program where you can join for one session, or the whole series! $10 per week.
Stage 1: Wednesday 10 & 11am
Beginners Golf Camp
Stage 2: Wednesday 9am
Advanced Golf Camp
Stage 3: Thursday 9am
Golf Tour playing 9 holes of Golf
Email Us for More Information & to sign up!
Welcome to Golden Sands Golf Course & Bucket Bar! Home of fabulous meals, yummy creative drinks, lush green surroundings, and lots to do for your whole group to enjoy.
Open Year Around
Everyday: 8am-8pm
Tee Times Recommended, but Not Required
BUCKET BAR: Seasonal
April - September
Please Call for Current Times
Kitchen Open:
Sunday - Thursday: 9am-9pm
Friday & Saturday: 9am-10pm
Bar Open:
Sunday - Thursday 9am-10pm
Friday & Saturday 8am - 12am
Call us anytime!
(231) 873-4909
Golden Sands is a well kept nine hole adventure for all ages and abilities. It's tight greens and fluffy sand traps make for a touch of challenge to even the best of golfers. We also have four sets of tees including a par three course, a short par four course, and a challenging 2409 yard extended blues course.
If you are new to golf, we have a three hole rate, a full driving range, and lessons with golf professional Alicia Kolenda. Mrs. Kolenda is also the director of the Dunes Junior Golf Program that teaches youth ages 4-high school the skills of golfing. This program runs camps in July and August. Lessons are available all season.
Golden Sandse.
Stay Current with Facebook!


text:
Get all those UFO's out and decide what you want to bring to Girls' Night Out. You can finish up a project or start something new. We sew, talk, laugh, and have a great time stitching together. Bring a snack for sharing. Reservations are required since space is limited. If the roster is full when you sign up, please put your name on our waiting list. Often quilters' plans change and they are unable to attend. You will be called as soon as possible to let you know a spot has opened up.
Fee: non-refundable, $10
Friday, May 31
5 – 10 pm
Hostess: Carolyne Long


text:
|Scalable distributed caching system and method
|Srbljic et al.
|Inter-cache protocol for improved WEB performance
|DeSimone et al.
|Interactive computer network and method of operation
|Filepp et al.
|Distributed computing network
|Johnson, Jr.
|Variable latency cut through bridge for forwarding packets in response to user's manual adjustment of variable latency threshold point while the bridge is operating
|Daines et al.
|System and method for selecting cache server based on transmission and storage factors for efficient delivery of multimedia information in a hierarchical network of servers
|Papadimitriou et al.
|Distributed processing ethernet switch with adaptive cut-through switching
|Locating resources in computer networks having cache server nodes
|Boyles et al.
|Router using multiple hop redirect messages to enable bridge like data forwarding
|Perlman et al.
|Dynamic packet routing network
|Frank et al.
|Method of maintaining consistency of cached data in a database system
|Wilkinson et al.
|System and method for using cached data at a local node after re-opening a file at a remote node in a distributed networking environment
|Chang et al.
(a) storing local cache copies of documents at a plurality of intermediate node locations in the network;
(b) in response to a particular one of the clients generating a particular document request message intended to be sent to a particular one of the home servers, fulfilling the document request message at one of the intermediate node locations by intercepting the document request message and returning one of the local cache copies to the client;
(c) determining the identity of at least one neighboring intermediate node that stores local cache copies; and
(d) determining if a local cache copy of a requested document is different from a copy of the requested document at the home server;
wherein step (d) further comprises the steps of:
i) forwarding a hit report to a home server after fulfilling the document request message at one of the intermediate node locations; and
ii) receiving a reply from the home server indicating a time of last modification of the requested document.
iii) if the time of last modification of the requested document indicates that the cache copy is no longer current, adding an identifier for the document to a list of modified documents.
(e) sending a status message to at least one neighboring intermediate node, the status message including the list of modified documents.
(f) before sending the list of modified documents to the neighboring intermediate node, removing any duplicate document identifiers corresponding to document information which has already been received from the particular neighboring intermediate node.
(j) merging the list of modified documents received from the intermediate node with a list of modified documents maintained at the neighboring node.
(k) maintaining a copy of the list of modified documents received from the intermediate node, in order to avoid returning duplicate document identifier information to the intermediate node when it is time for the neighboring intermediate node to send a status message to the intermediate node concerning the neighboring intermediate nodes' own information concerning document modifications.
sending status messages to the other intermediate nodes to determine the identity of neighboring cache servers.
(g) deleting a document identifier from the list of modified documents once the document identifier has been sent to all neighboring cache servers.
(h) upon receiving a list of modified documents, invalidating any cache copies corresponding to document identifiers on the list.
fulfilling the particular application layer document request message at one of the intermediate node locations by intercepting the document request message and returning one of the local cache copies to the application layer at the client, such that the application layer request message is intercepted at the intermediate node and such that a network connection is not established with the application layer on the server.
at the home server, attaching a document modification time stamp to the document.
(i) determining a path for the particular document request message to travel from the particular client to the particular server along a path of nodes located in the network between the particular client and the particular server, the path comprising a plurality of the intermediate node locations; and
(ii) fulfilling the particular document request message at one of the plurality of intermediate node locations in the determined path of nodes by, in response to receipt of the particular document request message, returning one of the local cache copies corresponding to a document specified in the particular document request message.
Computer networks, such as the Internet, private intranets, extranets, and virtual private networks, are increasingly being used for a variety of endeavors including the storage and retrieval of information, communication, electronic commerce, entertainment, and other applications. In these networks certain computers, known as servers, are used to store and supply information. One type of server, known as a host or home server, provides access to information such as data or programs stored in various computer file formats but generically referred to herein as a "document". While in the Internet the documents are typically primarily composed of text and graphics, each such document can actually be a highly formatted computer file containing data structures that are a repository for a variety of information including text, tables, graphic images, sounds, motion pictures, animations, computer program code, and/or many other types of digitized information.
Other computers in the network, known as clients, allow a user to access a document by requesting that a copy be sent by the home server over the network to the client. In order for a client to obtain information from a home server, each document typically has an address by which it can be referenced. For example, in the context of the Internet and within the communication protocol known as Hyper Text Transfer Protocol (HTTP), the address is typically an alphanumeric string, known as a Uniform Resource Locator (URL), that specifies (a) an address of the home server from which to obtain the information in the form of a name or a numerical address, and (b) a local information text string that identifies the information requested by the client, which may be a file name, a search request, or other identification.
After the user specifies a URL to the client computer, the address portion of the URL is sent over the network to a naming service such as the Domain Name Service (DNS) in order to obtain instructions for how to establish a connection with the correct home server. Once the connection with the server is established, the client can then retrieve the desired document by passing the local information text string over the network directly to the home server. The server then retrieves the document from its local disk or memory storage and transmits the document over the network to the client. The network connection between the home server and the client is then terminated.
Computer and network industry analysts and experts are presently quite concerned that traffic on the Internet is becoming so heavy that the very nature of the way in which it is possible to use the Internet may change. In particular, many individuals now believe that the Internet is intolerably slow and is no longer a reliable entity for the exchange of information in a timely fashion.
The present bottlenecks are no doubt the result of exponential increases in the number of users as well as in the number of complex documents such as multimedia files being sent. It might appear that the answer is simply to add more bandwidth to the physical connections between servers and clients. This will come, however, only at the expense of installing high bandwidth interconnection hardware, such as coaxial or fiber optic cable and associated modems and the like, into homes and neighborhoods around the world.
Furthermore, added bandwidth by itself perhaps would not guarantee that performance would improve. In particular, large multimedia files such as for video entertainment would still potentially displace higher priority types of data, such as corporate E-mails. Unfortunately, bandwidth allocation schemes are difficult to implement, short of modifying existing network communication protocols. The communication technology used on the Internet, called TCP/IP, is a simple, elegant protocol that allows people running many different types of computers such as Apple Macintoshes, IBM-compatible PCs, and UNIX workstations to share data. While there are ambitious proposals to extend the TCP/IP protocol so that the address can include information about packet content, these proposals are technologically complex and would require coordination between operators of many thousands of computer networks. To expect that modifications will be made to existing TCP/IP protocols is thus perhaps unrealistic.
An approach taken by some has been to recognize that the rapidly growing use of the Internet will continue to outstrip server capacity as well as the bandwidth capacity of the communication media. These schemes begin with the premise that the basic client-server model (where clients connect directly to home servers) is wasteful of resources, especially for information which needs to be distributed widely from a single home server to many clients. There are indeed, many examples of where Internet servers have simply failed because of their inability to cope with the unexpected demand placed upon them.
To alleviate the demand on home servers, large central document caches may be used. Caches are an attempt to reduce the waste of repeated requests for the same document from many clients to a particular home server. By intercepting parallel requests, a cache can be used to serve copies of the same document to multiple client locations.
From the client's point of view, the interaction with a cache typically occurs in a manner which is transparent to the user, but which is slightly different from a network messaging standpoint. The difference is that when the address portion of the request is submitted to the Domain Name Service (DNS) to look up the information needed to connect to the home server, the DNS has been programmed to return the address of a cache instead of the actual original home server.
Alternatively, a server node, acting as a proxy for the client, may issue probe messages to search for a cache copy. Once a cache copy is found at a particular node in the network, the request is then forwarded to that node. For example, under the auspices of the National Science Foundation, document caches have been placed at various locations in the United States in order to eliminate bottlenecks at cross-oceanic network connections. Generally, certain of these caches located on the West Coast handle requests for documents from the Asia-Pacific and South American countries, and a number of those located on the East Coast handle requests for documents from Europe. Other of these national caches handle requests for popular documents located throughout the United States.
However, such caching techniques do not necessarily or even typically achieve optimum distribution of document request loading. In particular, in order for the caches to be most effective, the DNS name service or other message routing mechanism must be appropriately modified to intercept requests for documents for which the expected popularity is high. The introduction of cache copies thus increases the communication overhead of name resolution, because of the need to locate the transient copies. The name service must register these copies as they come into existence, disseminate this information to distribute demand for the documents, and ensure the timely removal of records for deleted cache copies. Often times, the cache lookup order is fixed, and/or changes in document distribution must be implemented by human intervention.
Unfortunately, frequent and pronounced changes in request patterns can force the identity, location, and even the number, of cache copies to be highly transient. The resulting need for updating of cache directories means that they cannot typically be replicated efficiently on a large scale, which can thus turn the name service itself into a bottleneck.
Another possible approach to implementing caches is to change the client/server interaction protocol so that clients proactively identify suitable cache copies using a fully distributed protocol, for example, by issuing probes in randomized directions. Aside from the complexity of modifying existing protocols and message cost introduced by such an approach, such a scheme also adds one or more round trip delays to the total document service latency perceived by the client.
The present invention is an automatic and transparent scheme for distributing updated document content that exploits the fact that the paths that document requests follow through a computer network from a client to a particular document on a particular home server naturally form a routing graph, or tree.
Cache servers are placed throughout the network, such that if a document request can be fulfilled at some intermediate node along the routing graph, it will be serviced by the intermediate node returning the cached document to the client. The document request messages are thus responded to before they ever reach the home server. Since document request messages are permitted to be routed from clients in the direction of the home server up the routing graph in the same manner as would occur in the absence of caching, naming services do not need modification.
In order to be able to service requests in this manner without departing from standard network protocols, the cache server also preferably acts as a communication protocol proxy for the home server. That is, as part of fulfilling document request messages at the intermediate node locations, the client is sent appropriate messages, depending upon the communication protocol in use, to spoof the client into believing that the document was actually received from the home server.
Specific to the present invention is a distributed protocol for the cache servers to maintain and propagate updated document versions among themselves and the home servers. In a preferred embodiment, this is accomplished by the cache servers providing hit reports to the corresponding home server whenever they service a document request message locally. The home server then replies with an indication that the document has been updated. The cache server then invalidates its copy. As a result, no two consecutive document requests will receive the same instance of the document unless it is the current version.
However, freshness of a cached document can be determined other ways, such as periodically or at scheduled update times. The cache server may also learn of an invalid document upon receiving information from neighboring cache servers.
Upon learning that a document has changed, a cache server adds an identifier for the document such as its URL to a list of modified documents. Upon sending a message to a neighboring cache server, a request is made to return the requested document copy if a more recent copy is contained in the neighboring cache. The neighboring caches also preferably cooperate to ensure that document lists exchanged remain updated, so that the rate of queries submitted to home servers is reduced.
According to the invention, the cache servers obtain and share information learned about updates to cached documents, so that updated content is provided to the clients. This sharing of information occurs by directly interacting with the originating servers, by sending status messages to neighboring cache servers, and as a consequence, by indirect interaction with non-neighboring cache servers.
In a first scenario, a cache server may learn about updates to a cached document when forwarding a hit report to an originating server. The hit report serves two purposes, namely, to notify the originating server of the hit, as well as to obtain the time of the last modification of the document. Upon learning of a change in a cached document, the cache server adds a document identifier to a list of modified documents.
A cache server may also learn about changes to cached documents by receiving information from a neighboring cache server. In particular, the cache servers send gossip messages to neighboring cache servers that indicate their status to one another, to locate the neighborhood hierarchy. In addition, the gossip messages include the list of modified documents to the neighboring server messages contain the list of modified documents. Preferably, the list of modified documents is checked to remove any information which has most recently been received from the particular neighboring cache server. The cache server deletes document identifiers from the list of modified documents once they have been sent to all neighboring cache servers.
When a neighboring cache server receives the gossip message, it invalidates or updates and copies it has of documents listed in the modified document list, and then merges the remaining information into its own list of modified documents. A copy of the modified document list as received may be maintained, in order to avoid returning information to the cache server when it is time for the neighboring cache server to gossip about its own information.
The invention eliminates the need for home servers to be polled periodically by large numbers of cache servers to check for content freshness, thereby reducing the load on the home servers.
There are several advantages to the basic concepts of a document caching system according to the invention.
First, the approach does not need to request an address lookup from a cache directory, to redirect document requests, or to otherwise probe other elements of the network to locate cache copies. Location of the cache copy thus occurs fortuitously, along the natural path that the request message follows anyway. The client thus does not experience delays or bottlenecks associated with waiting for other entities in the network to find appropriate cache copies.
In addition, the system as a whole permits cache copies of documents to diffuse through the network as needed, which in turn diffuses bottlenecks at the caches and well as along the communication paths.
There is also a corresponding reduction in network bandwidth consumption and response time, because cache copies are always placed nearer to the original server than to the client. Document request messages and the documents themselves therefore typically do not need to travel the full distance between the server and each client every time they are requested. Hence, an overall network bandwidth is conserved, response times are reduced, and load is more globally balanced.
The invention thus not only helps to dampen differences in the load demand on the host servers, but also reduces the load on network communication resources, without requiring any modification to existing network protocols.
Furthermore, because cache copies are distributed through the network, there is no single expected point of failure of the caching system, and the system is robust and fail-safe.
The technique is also scalable, in the sense that as more cache servers are added, both clients and servers experience a likewise benefit.
With respect to the document freshness protocol in particular, the document caches can be expected to propagate fresh content among themselves, by direct interaction with one another, and indirectly, as a result of forwarding new information to their neighboring caches. This reduces the need for home servers to respond to update requests.
For a more complete understanding of the advantages provided by the invention, reference should be had to the following detailed description together with the accompanying drawings, in which:
FIG. 1 depicts a typical computer network showing a request path for a single document and the location of cache servers along the path according to the invention;
FIG. 2 is a communication layer diagram illustrating how a resource manager, protocol proxy, and snooper are used to implement the invention;
FIG. 3 shows the typical stages in a document request over the network;
FIG. 4 is a flow chart of the operations performed by a leaf server located on the routing path according to the invention;
FIG. 5 is a flow chart of the operations performed by an intermediate non-leaf cache server;
FIG. 6 is a flow chart of the operations performed by a last cache server on the routing path;
FIG. 7 illustrates the interception of a document request message by an intermediate server;
FIG. 8 also illustrates the interception of a document request message in more detail;
FIG. 9 is a flow chart of the steps taken by a cache server in one embodiment of the intention to discover that document copies are no longer fresh;
FIGS. 10A and 10B illustrate a sequence of steps taken upon learning of a change in a cached document; and
FIG. 11 is a sequence of steps performed upon receiving a gossip message from a neighboring cache server.
1. Introduction
Turning attention now to FIG. 1, a computer network 10 such as the Internet, extranet, private intranet, virtual private network, local area network, or any other type of computer network consists of a number of network entities including client computers 12-1, 12-2, 12-3, . . . , 12-4 (collectively, clients 12), routers 14-1, 14-2, . . . , 14-10, cache servers 16-1, 16-3, 16-4, 16-6, 16-8, and 16-10, and home server 20. The network may make use of any and various types of physical layer signal transmission media such as public and private telephone wires, microwave links, cellular and wireless, satellite links, and other types of data transmission.
In the illustrated network, certain routers 14 have associated with them cache servers 16, whereas other routers do not have associated cache servers. The cache servers 16 include various types of storage for documents in the form of a cache storage 18-1 which may include disk storage 18-1-1 and/or memory storage 18-1-2.
The clients 12 and home server 20 operate as in the prior art to permit distribution of a wide variety of information, typically in the form of "documents". Such documents may actually contain text, graphics, pictures, audio, video, computer programs and any number of types of information that can be stored in a computer file or parts of a computer file. Furthermore, certain documents may be produced at the time that access is requested to them, by executing a program.
It will be assumed in the following discussion that the network 10 is the Internet, that the information is encoded in the form of the Hyper Text Transfer Protocol (HTTP) documents, and that document request messages are sent in the form of Uniform Resource Locators (URLs) using the TCP/IP layered protocol. This is with the understanding that other types of wired, switched, and wireless networks, and other types of protocols such as FTP, Gopher, SMTP, NNTP, etc. may make advantageous use of the invention. In addition, although the invention is discussed in the context of a client-server type of communication model, it should be understood that the principals of the invention are equally applicable to peer-to-peer networks.
A request message for a particular document, for example, originates at one of the client computers, such as client 12-1. The message is a request by the client 12 for the home server 20 to send a copy of the document that is presently stored at the home server 20 location such as on a disk. The document request message is passed through one or more routers 14, such as routers 14-1, 14-2, 14-3, in the direction of the illustrated arrows, on its way to the home server 20.
In networks such as the Internet, document request messages may pass through as many as fifteen or more nodes or "hops" through routers 14 before reaching their intended destination. Requests for the same document from other clients, such as clients 12-2, 12-3, or 12-4 also pass through different routers 14 on their way to the home server 20 at the same time.
It should also be understood that although the routers 14 and cache servers 16 are shown as separate elements in FIG. 1, that their functionality may be combined into a single element.
A model is useful for understanding the nature of how requests from multiple clients for one particular document travel across a path the computer network 10. The model is that structure, T, which is induced by the effect of routing algorithm on the document request messages as they travel through the network to the home server 20. As shown in FIG. 1, the home server 20 can thus be thought of as being at the root node of the structure, T, with document requests originating at the leaf node levels farthest away from the root, namely at clients 12-1, 12-2, . . . , 12-4. The structure T also includes many intermediate nodes which are located the routers 14.
While the structure T of the set of paths that client requests follow toward a given home server 20 is accurately and generally described as a data directed, acyclic graph, the present exposition does not benefit from the added complexity. In particular, when a single particular document is considered as being located at only one home server, the structure can be referred to as a tree with a single root. With that understanding we use the term tree to describe the structure T herein, with the understanding that a graph model may also be used. With this model in mind, the entire Internet can be thought of as a forest of trees or graphs, each rooted at a different home server 20 which is responsible for providing an authoritative permanent copy of some set of documents.
Copies of documents are located in the network at cache servers 16. In a preferred embodiment of the invention, the placement of cache copies, and hence the diffusion of load, is constrained to nodes in the tree structure, T. This avoids the need for clients to lookup the locations of cache copies, either by directly contacting the home server 20, or a naming service such as a Domain Name Service (DNS), or by probing the network in search of appropriate cache copies.
The preferred embodiment also assumes that cache servers 16 lie on the path along the tree that document request messages would naturally take from the client 12 to the home server 20, with the cache servers 16 cooperating to off-load excess load at the home server 20, or to diffuse other potential performance bottlenecks such as communication links themselves. In effect, the routers 14 having associated cache servers 16 inspect document request message packets as they fly-by and intercept any request for which it may be possible to fulfill by providing a cached document instead.
In a most general description of the operation of the invention, document request messages travel up the tree T, from a client at which it originated, such as client 12-3, towards the home server 20. Certain routers encountered by the document request message along the way, such as router 14-7, do not have local cache servers 16, and thus simply pass the document request message up to the next router in the tree, such as router 14-6.
However, certain other routers, such as router 14-6, do have a local cache server 16-6, in which case the document request message is examined to determine if it is seeking a document located in the local cache store 18. If a cache copy is encountered at cache server 16-6, then that copy is returned to the client 12, and the request message is not permitted to continue on its way to the home server 20. If however, a cache copy is not encountered at the particular cache server 16-6, the request message continues to the next router 14-4 on the path to the home server 20.
When a request message packet enters a router 14, the router first passes the request message to a portion of its software referred to herein as the filter code. The filter code in the router 14 is updated as necessary by the local cache server 16. The filter code depends on the types of packets, the cache contents, the load at the local cache server 16, or the load on the attached communication links. The filter causes the interception of the packet (for an attempted service by the local cache server 16) or passes the packet back to the router 14 to determine the next hop the packet should take on its way to the home server 20.
Ideally, the implementation of the cache servers 16 is such that no changes are required to the normal operating mode of either clients 12 or servers 20. Another goal is to have a design that can be gradually deployed into the existing infrastructure of the network 10. This also requires that any new mechanisms preferably be compatible with existing communication protocols.
To accomplish this, a cache server 16 and associated router 14 preferably consist of four functional building blocks, as shown in the layer diagram of FIG. 2. At a relatively higher layer protocol level, such as the application layer, the cache server 16 includes an HTTP proxy 22 and a resource manager 24. At a lower layer, such as the physical layer, the router typically implements a packet filter 26 and an IP proxy or snooper 28.
The HTTP proxy 22 implements a standard HTTP protocol with responsibilities including storage management and the maintenance of the index structures necessary for accessing cached documents. If the HTTP proxy 22 receives a request for a document not located in the local cache 18, it requests the document from the home server 20 and respond to the request when the document arrives. The HTTP proxy 22 is configured to cache documents only as instructed by the resource manager 24.
While FIG. 2 shows two types of proxying, namely at the HTTP and IP level, it should be understood that the implementation can also include proxying at other layers, including the application layer, IP layer, or some other layer in between, such as a transport, session, presentation, or other layer.
The resource manager 24 implements a protocol to diffuse document copies through the network 10, as will be described in greater detail below. The resource manager 24 is responsible for maintaining state information used by the document load diffusion mechanism. The resource manager may be programmed to not only manage the load on the cache servers 16 themselves, but may also be programmed to manage the traffic on the communication paths used interconnect the routers 14.
To accomplish this load management, or load balancing, the resource manager 24 maintains information about the identity and the load of its neighboring cache servers 30. The details of how neighboring cache server information is maintained is discussed below in Section 3.
In addition, for each document in the cache 18, the resource manager 24 distinguishes between requests received through each of its neighboring cache servers 30. This is done by maintaining a separate hit count for requests received from each neighboring cache server 30. Using such information, the resource manager 24 computes the fraction of excess load to be diffused. Once these fractions are determined, the resource manager 24 informs its under-loaded neighbors 30 which document to cache and the fraction of requests they should undertake. These fractions are also used to generate new filter code to be injected into the associated router 14. A similar process is performed by the under-loaded neighbors 30. If necessary, the resource manager 24 at the under-loaded neighbor 20 informs the attached HTTP proxy 22 to add new documents to its cache 18.
Other responsibilities of the resource manager 24 include neighborhood discovery, propagating load information to the neighboring servers 30, and discovering and recovering from potential barriers to load balancing. These mechanisms are discussed in more detail below.
The routers 14 take an active role in assisting cache servers 16 to achieve cache server and/or communication path balancing goals. This is accomplished by allowing the resource manager 24 to inject functionality into the router 14 in the form of the code that implements the filter 26 and snooper 28. In particular, all packets passing through a router 14 not addressed directly to a host server 20 are first passed to the snooper 28. The snooper 28 inspects a packet and determines its type, destination, and the document requested. Depending on the state of the cache server 16 and packet type, the snooper 28 could intercept the packet or simply forward the packet to the next hop, or router 14, along the intended destination path to the home server 20.
To determine if a requested document is located at the local cache server 16, the snooper 28 queries the filter 26. If the filter 26 indicates that the requested document is cached and can be serviced locally, then the packet is intercepted and passed to the resource manager 24. Otherwise, the packet is passed on to the next hop towards the destination home server 20.
The snooper 28 is typically aware of the TCP protocol and the structure of both TCP and HTTP packets. Another functionality of the snooper 28 is to extract copies of HTTP request packets and pass them up to the resource manager 24. This feature is used to assist the resource manager 24 in discovering its neighborhood and recovering from potential barriers.
2. Handling an HTTP Document Request in a TCP/IP Network
Current implementations of networks 10 that use HTTP rely on the layered TCP/IP protocol for reliable end-to-end communication between clients 12 and servers 20. This layering divides the normal processing of a request message into three steps; connection establishment (i.e., TCP-level three way handshake in the form of {SYN} messages), HTTP document request/reply in the form of {GET} messages, and connection termination in the form of {FIN} messages.
This process is depicted in FIG. 3, where the client 12 first issues a {SYN} message with a sequence number to the home server 20, and the home server 20 returns a {SYN} message with an acknowledgment {ACK}. In response to this, the client 12 then sends a document request in the form of a {GET} message that includes the URL of the desired document. The document is then forwarded by the home server 20 to the client 12. After the client 12 returns an acknowledgment, the server 20 and client 12 terminate the connection by exchanging {FIN} and {ACK} messages.
The main hurdle in actually implementing the cache servers 16 as explained above in such an environment is the requirement that they need to identify the document requested by a client 12. However, as seen in FIG. 3 the URL information is typically advertised by an HTTP client 12 only after a TCP/IP connection has already been established with the home server 20. One possible solution would thus be to have all such connections be established with the home server 20 and have snoopers 28 at intermediate routers 14 intercept all {GET} packets. Even though this approach might relieve a significant amount of load from a home server, it still required that TCP connections associated with such documents reach the home server 20, which defeats the purpose of attempting to off-load the home server 20. During high demand periods, such requests would amount to a flood of {SYN} requests on the home server 20. In addition, if the initial {SYN} is not intercepted, both establishing and tear down of connections becomes significantly more complicated.
To overcome this hurdle, in the preferred embodiment, intermediate routers 14 have some awareness of the TCP protocol. TCP aware routers 14 are able to detect TCP connection requests to all HTTP servers (i.e., a {SYN} packet directed to the HTTP port), and have the ability to act as a proxy for, or "spoof" the home server 20.
This functionality is implemented by the snooper 28. In particular, snoopers 28 located in routers 14 on the path to a home server 20 inspect packets that fly-by, identify such packets, and intercept any {SYN} packets directed to HTTP home servers 20. As {SYN} packets do not contain any information identifying which document the client 12 intends to request, the snooper 28 acts as a proxy for, or "spoofs" the home server 20, by establishing a connection between the client 12 and the local transport layer in the cache server 16, and noting the initial sequence numbers used by both the client 12 and the local transport layer.
After the connection is established the snooper 28 inspects all packets that fly-by, and waits for the corresponding {GET} request. Once the {GET} request arrives the snooper 28 queries the local filter 26 and the resource manager 24 to determine if the requested document is cached. If the document is cached the snooper 28 forwards the HTTP {GET} message to the local resource manager 24, waits for the resource manager 24 to service the request, and then terminates the connection. Otherwise, the requested document is not cached (i.e., the filter 26 or resource manager 24 missed). Several different approaches may be taken to servicing the document request at this point.
In a first approach, the TCP connection is handed off, wherein the snooper 28 closes the server half of the spoofed TCP connection with the client 12, and forwards the document request in the form of a composite "piggy back" {SYN+GET} message in the direction of the home server 20. In addition, the {SYN+GET} message contains all the state information needed to hand-off the server half of the TCP connection to any other intermediate cache server on the path to the home server 20 which happens to cache the requested document.
In a second alternative approach, the snooper may act as a TCP relay, maintaining the TCP connection with the client, and relaying the {SYN+GET} message on a separate connection to the next intermediate cache server on the path to the home server 20.
The above hand-off process is illustrated in the flow chart of FIG. 4. This process is carried out by a particular class of cache servers 16 referred to as leaf node servers 38, which are the cache servers 16 that are on the extreme lower level nodes of the tree T, i.e., the first servers to intercept a {SYN} packet from a client 12. The leaf node servers 28 in the tree T depicted in FIG. 1 are cache servers 16-1, 16-6, and 16-8.
As shown in step 41 of FIG. 4, when a leaf node server 38 receives a {SYN} packet, the home server 20 is proxied for, or "spoofed", by establishing a TCP connection directly between the leaf node server 38 and the client 12. The leaf node server 38 then waits to intercept the corresponding {GET} request from the client 12.
Note that spoofing thus occurs in the sense that packets exchanged between the client 12 and a cache server 16 are modified by the snooper 28 in the above scenario. In particular, the network address of a cache server 16 which is servicing a request is replaced with the network address of the home server 20 and in a connection handoff, the sequence numbers of bytes issued by the cache server 16 have to follow the sequence number as determined by the leaf server 38.
Returning to step 41, if the requested document passes the cache query test by the filter 28, and in step 42, and if the resource manager 22 detects that the document is present in the local cache and will permit access to it, then the document request is serviced locally, in step 45. In step 45, the {GET} command is forwarded to the resource manager, which then replies with the requested document. Finally, the TCP connection between the leaf server 38 and the client 12 is closed, by spoofing the home server 20 once again and issuing the closing {FIN} and {ACK} messages to the client.
Otherwise, if there is a miss in step 42 or 43, the snooper 28 forwards a {SYN+GET} packet in the direction of the home server 20, and then closes the server half of the spoofed TCP connection, so that another cache server on the tree may service it if possible. The steps d) and e) in FIG. 4 may be asynchronous events and may typically occur in parallel. The snooper 28 at a leaf server 38 then has to acknowledge the reception of the {GET} request.
In the scenario depicted in FIG. 1, the upstream intermediate non-leaf nodes 39 include those with cache servers 16-3, 16-4, and 16-10. The cache servers 16 located at the non-leaf nodes 39 need to process {SYN+GET} packets in a slightly different manner. In particular, the snooper 28 in a non-leaf node 39 intercepts {SYN+GET} packets only if the requested document is cached and the local cache server 16 has sufficient capacity to service it.
FIG. 5 is a detailed flow chart of this process as performed at the non-leaf intermediate nodes 39. As shown in step 51, to service such a request, the snooper 28 first spoofs upon receipt of the {SYN} from the leaf node 38, and intercepts the following {GET} request. In the following steps 52 and 53, queries are made to the filter 26 and resource manager 24 as before, to determine if the {GET} can be processed locally.
If the request can be processed locally, step 55 completes the proxying for the home server 20 by establishing the server half of the TCP connection with the client 12, issuing the {GET} to the resource manager 24, returning the document to the client 12, and closing the TCP connection.
If the {GET} message cannot be processed locally, step 54 is executed, where the {SYN+GET} is forwarded to the next node in the tree T.
The main advantage of processing {SYN+GET} packets differently in the intermediate non-leaf nodes 39 is that a TCP connection is only handed-off once to the particular intermediate node 39 that actually has the requested document. Another advantage is that the {SYN+GET} contains all the state information needed for connection hand-off (i.e., no additional state information is exchanged between the snooper 28 at the leaf node server 38 and that at the intermediate node 39 which is actually caching the requested document.)
One drawback of piggy-backing {SYN+GET} packets in this manner is that home servers 20 will not interpret such packets properly without adapting their transport protocol to deal with such packets. To avoid this problem and ensure inter-operability with current network protocols, an additional precaution can be taken by requiring that the snooper 28 located at the last intermediate node 39 before a home server 20 intercept all {SYN+GET} packets. Thus, when none of the leaf node servers 38 or intermediate node servers 39 cache the requested document, the last intermediate server 39 intercepts the {SYN+GET} and relays an explicit HTTP {GET} request to the home server 20.
To accommodate this case, step 54 of FIG. 5 can be replaced with the processes illustrated in FIG. 6. In this case, in step 61, where the next upstream node along the path, T, (or parent node) is not the home server 20, then step 62 is entered, where the {SYN+GET} is forwarded to the next intermediate node on T.
However, if the next node is a home server 20, then the step 63 is performed. In particular, snooper 28 establishes the server half of the TCP connection with the client 12, and replaces the {SYN+GET} with a {PROXY_GET} request to the local resource manager 24. The resource manager 24 translates the {PROXY_GET} request to an explicit {GET} issued to the home server 20. The response of the home server 20 response is then relayed to the client 12 in the same manner as if the cache server was caching the requested document.
Another shortcoming of the caching technique described thus far is that the path along the tree T between a particular client 12 and the home server 20 can change after a leaf node server 38 or an intermediate node server 39 decides to service a request. This may occur, for example, when a network connection, or link, is lost between two server nodes. FIG. 7 shows this relatively rare case where the path between the client 12 and the home server 20 changes while an intermediate cache server 16b is processing a document request from client 12. All {ACK}s sent by the client 12 will now follow the new path, through a new cache server 16x, to the home server 20. This causes cache server 16b to time-out and retransmit its packets.
To solve this problem, the snooper 28 at server 16b may keep track of the number of times a packet is retransmitted. If a packet is re-transmitted more than a predetermined number of times, for example, three times, the snooper 28 then assumes that the path between the client 12 and the home server 20 has changed, and then takes steps to terminate the connection with the client 12. In particular, the snooper 28 aborts the connection with the client 12 and aborts the connection with cache server 16b, simultaneously spoofing the home server 20 and sending a reset packet (i.e., an {RST} packet) to the client 12.
In another approach the leaf node servers 28 closest to the clients 12 and the last hop nodes closest to the server 20 are provided with only one possible route to the clients 12 and servers 20, respectively. This is accomplished by having the cache servers forward client request messages over cache server--to--cache server permanent TCP connections, instead of simply letting the request messages follow their normal routes. The set of connections, being implemented as a set of properly joined TCP connections, thus automatically adapts to any changes in IP routing as the network configuration changes.
3. Neighborhood Discovery
However, any resulting changes in the configuration of adjacent cache servers must also be detected by communication with neighboring cache servers in order to achieve resource load balancing and other advantages possible with the invention. In particular, each cache server 16 participating in the above-described scheme has to determine which other servers are in its neighborhood. In addition, on each routing tree T, a cache server 16 has to distinguish between upstream servers (located at parent nodes) and down stream servers (located at child nodes). A particular node, i, in the tree T is the parent of a node j, if i is the first cache server 16 on the route from j to the home server 20, in which case node j is also referred to as the child of node i.
One method for a cache server 16 to discover its neighborhood requires some assistance from the underlying router 14 and snooper 28. At selected times, the resource manager 24 asks the local router 14 to issue neighborhood discover messages to each destination in a routing table which the router 14 maintains.
These neighborhood discovery packets are then intercepted by a given snooper at another node having a cache server 16 in the tree. It is then responsibility of the intercepting cache server 16 to send a reply to the resource manager 24 at the cache server 16 that issued the neighborhood discover packet, announcing that it is a parent (e.g., that it is closer to the home server 20 than the issuing cache server) and the identity of the tree T that it is on. The destination port for neighborhood discover packets may be assigned an unlikely port number, to ensure that the destination home server 20 does not attempt to process un-intercepted neighborhood packets. A hop count field can also be used to limit neighborhood discover packets from excessive forwarding.
The main drawback of this approach is that it would flood the network with neighborhood discover packets. An alternative approach is to use document request message packets (i.e., the {SYN+GET} packets) that fly-by the filter in each cache server 16 anyway.
In this approach, each document request message contains a field identifying the previous hop, that becomes, under the scenario implemented above, an identification of the last cache server 16 that a particular request packet passed through.
As a request passes through a router 12 (i.e., it is not intercepted), the local snooper 28 stamps the IP address of the attached cache server 16. When a cache server 16 wants to discover its neighborhood, it then instructs its attached snooper 28 to extract the last observed destination and last hop address from request packets and then passes this information up to the local resource manager 24.
As shown in FIG. 8, a typical HTTP {GET} message follows a path from the client 12 through A to the home server 20 and is intercepted by intermediate cache 16c. While cache server 16c is processing the request, the path between the home server 20 and the client 12 changes causing all acknowledgments to use a different path.
Using this information the resource manager 24 at cache server 16c determines both which routing trees it is on and any down stream cache servers 16 on each tree. Once server 16c determines that server 16b is its downstream child on tree T, cache server 16c has to explicitly inform cache server 16b that it is its parent on T. To reduce the number of messages exchanged between the different components (snoopers 28 and resource managers 24), the snoopers 28 can cache a number of packets and forward them all at once to the resource managers 24.
Neighborhood information is maintained for a predetermined number, such as two, of neighborhood discovery epochs. If no requests are received through a child cache server 16b during these periods, the child cache server 16b is removed from the cache server 16c's model of the neighborhood. The parent cache server 16c then also informs the child cache server 16b of its intention to do so.
It is also possible that a cache server 16 does not have a parent snooper 28 on the routing tree to the home server 20. In this case, the snooper 28 at cache server 16b sends a neighborhood discovery packet in the direction of the home server 20. An upstream snooper such as the one at server 16c receives the packet and informs 16b that it is its parent on the tree to the home server 20. However, if the snooper 28 at 16b does not have a parent node such as 16c on the tree to home server 20 it replaces 16b address on the neighborhood discovery packet and forwards it in the direction of the home server 20.
This neighborhood discovery scheme has a number of advantages. First, the routing tree T does not have to be completely constructed for the caching protocol to start operating. Another advantage is that the cooperating cache servers 16 can dynamically discover and adapt to routing changes. Finally the protocol is totally distributed and is therefore robust against server failures.
4. Propagating Fresh Content Among Cache Servers
While the above mentioned cooperation between cache servers 16 works well for initially distributing copies of documents to the cache servers 16, it does not specifically address efficient distribution of updated content among them. The above scheme of neighborhood discovery lends itself to a particularly advantageous way of distributing updated content.
Therefore, in the preferred embodiment each of the cache servers 16 shares information about updates to cached documents that it learns from its neighboring cache servers 16. This may happen via direct interaction with neighboring caches 16 when clients request documents, and also indirectly as a result of cache servers 16 periodically sharing information with their neighbors.
In general, upon the occurrence of certain events, or at scheduled or estimated expiration for particular documents, each cache server 16 checks the freshness of the documents that it maintains. Upon learning of a change in the source documents as maintained by the home server 20, the cache server 16 propagates this fact to its neighbors by sending status or so-called "gossip" messages. In addition, the cache server continues to respect any "do not cache" annotations provided by the home server 20, and continues to honor any at a reload requests from clients which may still have copies of the earlier version of the document.
The specific protocol for maintaining freshness among the cache servers 16 is shown in a sequence of steps of FIG. 9. While this sequence of steps shows one preferred manner of determining if a change has been made in a particular cached document, it should be understood that other techniques could be used. For example, a cache server C can learn of a change in a particular cached document X via a number of different mechanisms. For example, the cache server C may forward a hit report to the home server for document X, and receive a reply that indicates that document X has changed. In addition, the cache server C may be informed that document X has changed by one of its neighboring cache servers.
Returning attention to FIG. 9, the certain data structures are maintained by a cache server 16 expressed from the point of view of a particular cache server C and its neighboring cache server N. Cache server C keeps a list L(C) of names or other identification such as the URL, of recently modified documents that periodically exchanges with its neighbors, N. Each of the neighbors N also keeps a corresponding list L(N). The notation L(C, N) indicates the copy of the list L(C) that the neighboring server N has most recently received from the cache server C.
Upon receiving a request for cached document X, a state 90 is entered in which cache server C serves the requested document X to the requesting client.
At the same time, the cache server C sends a hit report to the home server in state 91. The sending of the hit report serves two purposes, namely notifying the home server 20 of the hit, and also to determine the time of last modification of the document X of the home server.
The hit reports provided in state 91 to the home server are sent as a message which is marked so that it is not intercepted by any other cache server 16 on the path between cache server C and the home server 20.
In a next state 92, a reply to the hit report is received. In state 93, if the reply indicates that the requested document X has been updated since it was last cached by cache server C, then the cache server C proceeds to state 94 in which its local cache copy is invalidated. This process of invalidating the local cache copy may also include a state 95 to request an updated cache copy from the originating server. However, to minimize network traffic, this preferably not done, and the requesting client is permitted to keep a copy of the document which was not current. In this scenario, no two consecutive requests will receive the same instance of the document X unless it is a current version.
Returning back to state 93, if the originating server indicates by its reply that the version of the document was current, then no further processing is necessary.
In an alternate embodiment, the order of certain steps shown in FIG. 9 may be changed. For example, if it is desired to always serve fresh content to the client, the hit report of step 91 is sent to the home server first, followed by the processing of the reply in steps 93 through 95, prior to serving the cache copy to the client in step 91. This ensures that the clients always receive fresh content, at the expense of having to wait for a reply to the hit report first.
FIGS. 10A and 10B indicate a sequence of a steps performed by the cache server upon learning of a change document X. As previously described, this state 100 may be entered via a number of different mechanisms such as the process described in FIG. 9 or in other ways. In any event, upon learning of a modification to a cached document, in state 100 the cache server C adds the identifier of the document X to its list of modified documents L(C).
Eventually a state 102 is entered in which the cache server C sends status or gossip messages about its present state to neighbor N. When sending this gossip message to a neighbor N, the cache server C includes in its message a copy of the present state of its list L(C) minus any items that has had most recently received from its neighbor N. This step 102 eliminates the possibility of sending to neighboring cache server N any information already known to neighboring cache server N.
In a next following state 104, the cache server C deletes from its list L(C) any document identifications that have already been sent to all of its neighbors. This step maintains the list L(C) to be current.
Referring to sequence of steps in FIG. 11, a first state 110 is entered by a neighboring cache server N upon receiving a gossip message from cache server C. In this state 110, the neighboring cache server N invalidates any copies it has of documents listed in L(C). In this state, the neighboring cache server N may also choose to refresh or update the copies it has of these documents.
In a next state 112, the neighboring cache server merges the list L(C) into its own list L(N). In particular, L(N) takes on a new value that represents the union of the L(N) and the received L(C).
In a following state 114, neighboring cache server N keeps a copy of L(C) as L(C, N) for the purpose of not forwarding the contents of L(C) back to cache server C, when it becomes time for neighboring cache server N to send cache server C a copy of its own list L(N).
By performing the steps shown in FIGS. 10A, 10B, and 11, the freshness of content that is to be served from a particular home server 20 is improved. This in turn reduces the need for the home server 20 to be polled periodically by the cache servers 16 to check for content freshness. In the absence of cooperation among the cache servers 16 as described above, the rate of queries submitted to the home servers 20 may grow linearly with the number of caches 16 and therefore overwhelm the home caches 20, which defeats the purpose of deploying the cache servers 16 in the first place.
While we have shown and described several embodiments in accordance with the present invention, it is to be understood that the invention is not limited thereto, but is susceptible to numerous changes and modifications as known to a person skilled in the art and we therefore do not wish to be limited to the details shown and described herein but intend to cover all such changes and modifications as are obvious to one of ordinary skill in the art.


text:
June 24, 2004 · Lessig
Edwards would be a wonderful choice.
June 24, 2004 · Lessig
Edwards would be a wonderful choice.
June 24, 2004 · Lessig
EFF has mocked-up a complaint against Apple under the pending INDUCE Act.
June 24, 2004 · Lessig
So jump over here to Amazon.com where you can purchase an electronic version of the Constitution, fitted very nicely to a Microsoft Reader (not Mac compatible), and protected quite completely with DRM. The description says you're not permitted to print it. The reader reviews report you're permitted to print it twice a year. And don't try to hack the code to print it more than twice — until Boucher's H.R. 107 passes at least. (Though the ranking is higher than for my book. Maybe free fails after all?) (Thanks Paul!)
June 24, 2004 · Lessig
June 24, 2004 · Lessig
Here's who you should call to express your views about the INDUCE Act.
June 24, 2004 · Lessig
Ernie has put together a line-by-line rebuttal to Senator Hatch.
June 23, 2004 · Lessig
Senator Hatch (who used to understand stuff) has introduced the INDUCE Act, which will criminalize the act of inducing another to commit a copyright violation. This is a brand new theory of copyright liability, which, as this floor statement makes clear, is directed at overturning Sony with respect to p2p.
The proposal alone is troubling enough. But the outrageous part is that there is talk that this massive new layer of federal regulation of technology will happen without hearings — indeed, that it will be passed in the next weeks.
Whatever the merits of this new regulatory program are (and, imho, there are not many), it should not happen without an opportunity for Congress to consider the full implications of this new regulation. The ramifications of this reach far beyond p2p.
June 18, 2004 · Lessig
This comes to me from a reliable source, though I would very much like it if it were mistaken.
Apparently Microsoft has taken the first steps to filing a criminal defamation action against a Brazilian government official who was quoted criticizing Microsoft in a magazine article. Sergio Amadeu, head of the agency responsible for spreading free software within the Brazilian government, is reported to have accused "the company of a 'drug-dealer practice' for offering the operational system Windows to some governments and cities for digital inclusion programs. 'This is a trojan horse, a form of securing critical mass to continue constraining the country'."
He's also quoted characterizing Microsoft's strategy as a "strategy of fear, uncertainty and doubt."
These statements have apparently earned Mr. Amadeu the right to defend himself in a defamation action. Microsoft characterizes Amadeu's statements as "beyond being absurd and criminal" and as evincing an "excess in freedom of speech and freedom of thought." "Freedom of speech and freedom of thought" is, Microsoft apparently believes, properly prosecuted in Brazil, and so it has brought this first step to prosecute the "felony of defamation" evinced by Amadeu's words.
Such words could not rise to the level of defamation in the United States; I would be surprised if they were defamation in any sane state. But whether they are defamatory in Brazil or not, it is wrong for this company to use the law to silence a critic. In the American tradition, we meet bad speech with more speech, not with more lawyers. We should all teach Microsoft something of our tradition, by meeting its bad speech — a defamation action against a critic — with lots more speech criticizing it.
June 16, 2004 · Lessig
Michael Geist's latest column in the Tornoto Star maps a sane process to realizing balance in IP. Help spread the sanity.


text:
DL/I 1.12.1 available
Ingolf24 120000DRN3 Comment (1) Visits (6264)
The new DL/1 1.12.1 update is now available. This major update provides DL/I partitioning, which lifts the 4 GB limitation for DL/I segment types.
DL/I 1.12.1 is only available for z/VSE 6.2. The former DL/I 1.12.0 can also run on z/VSE 6.2. It is now end of marketing, that is DL/I 1.12.0 can no longer be ordered.
Migration from DL/I 1.12.0 to 1.12.1 should be an easy task. If you don't use partitioning, the database will not change. More migration details are described in the DL/I 1.12.1 Release Guide. The Release guide is available in the z/VSE PDF library here. It's a link on the z/VS
The partitioning function splits a DL/I segment type into partitions (VSAM datasets). DL/I 1.12.1 comes with an exit, that selects the correct partition for the records to be retrieved. Each dataset can be up to about 4 GB in size. To migrate to DL/I partitioning you have to add the number of partitions and a 5 or 6 character database name to the Database Descriptor (DBD), unload the database, run the DBDgen / ACBgen with the new partition parameters and do a database reload.
This fulfills customer requirement RFE 67331 - DL1 increase 4 GB sequent Limit size.


text:
Welcome to Diange Milang!
We are a small business that has been in operation in Denver, Colorado for the last 15 years. We provide service for both residential and commercial properties. We provide services to all areas of Denver. We provide the best service at a competitive price.
We provide service for both residential and commercial properties. We provide services to all areas of Denver. We provide the best service at a competitive price.
Our Team
We have a team of knowledgeable and trained specialists who have experience to do the jobs right. You can completely rely on our plumbers and technicians for providing excellent service 24 hours a day and 7 days a week. Our employees undergo comprehensive background screenings. They carry with them all the necessary tools to do their work.
We call you before we come to your property for plumbing works. We give you an honest estimation about our work. During work, we cover all your belongings so that they don't get dirty or damaged. After completing the work, we make sure that any mess is cleaned up.
Our Reputation
We have gained popularity in our local area for providing reliable professional plumbing services to our customers. Most of the works we get are from recommendations. We maintain safety in our works. We follow the local authority guideline in this respect. Whenever we take up a job, we don't consider whether it's small or big. To us, any job is a separate project and we give equal amount of effort and time on each project.
We are insured, so if any damage occurs to your property for our work, you remain fully covered. We are open all the time to provide you our regular services and as well as emergency services. If you have any queries regarding our services or need free quotation from us for various services, then please don't hesitate to contact us any time.
Our Partners
Throughout Colorado we recommend using 24 Hour Locksmith Pros for all your security needs. They have operations in Denver and Colorado Springs. They can be contacted below (please click on the image to be taken to their websites):
Latest Posts
DIY Washing Machine Repair Tips
Washing machines aren't the most sophisticated machines in the world, and with some little background knowledge, even you can be able to fix a washing machine problem on your own. Even so, some people decide to junk a washing machine, when in fact the device has many years left of…
The Best Residential Plumbing Contractors
The need to work with a local residential plumbing repair contractor is something which almost all of us experience at some time in our lives. If you need your project completed quickly and within a strict budget, you will find that a number of local contractors will reduce costs wherever…
Tools For Plumbing You Must Have
Though you are not a plumber by profession, you can find a few plumbing issues which you can actually deal with all by yourself as long as the right equipment and tools are possessed. Purchase tools from a company that is reliable and keep them in storage in your house…


text:
Edgewood senior living center opening in Jamestown
JAMESTOWN, N.D. — Construction has begun on the new Edgewood assisted-living and memory-care center in Jamestown. The facility, which is expected to open next summer, will create 40 jobs.
The Edgewood facility will offer room for 33 residents in the assisted-living area and 39 memory-care patients. The care center will be operated by Edgewood Management Group, which currently operates 53 centers in seven states.
Source: Prairie Business Magazine


text:
BIDDEFORD, Maine – Maine Maritime Academy men's lacrosse fell 23-3, to the University of New England on Saturday afternoon in non-conference action, at the Big Blue Turf.
Dean Samuelson (Southbury, Conn.) scored a pair of goals to lead Maine Maritime, while Alex Grant-Roy (Biddeford, Maine) added the other goal for the Mariners. George Doe (Kennebunkport, Maine), Grant-Roy, and Nikko Pappas (Cape Elizabeth, Maine) each scooped up six ground balls, while Nathan Granholm (Brunswick, Maine) led the Mariners defensively with two caused turnovers.
UNE's Donovan Connor led all players with four goals, including the first of his career. Connor Leggett scored three goals, while Dan Auger, Dylan Jones and Garett Bozek each scored twice. Jones got into the scoring column for the first time in his career, as did Noah Luccini and Jared Hall, who joined 10 players registering one goal for the Nor'easters.
In net, Maine Maritime's Daniel Lee (Satellite Beach, Fla.) tallied 13 saves in the loss, while UNE's David Pearson earned the victory, appearing in the first quarter with one save, and teammates Tyler Nevers, Jake Kampner and Sam MacKenzie combined for six saves, while each registering 15 minutes worth of action.
The Mariners fall to 2-8 overall, while the Nor'easters improve to 10-4. Maine Maritime returns to action on Wednesday, April 19 at 7:00 pm, when they host Thomas College for a North Atlantic Conference matchup.


text:
magnifying glass(redirected from Magnifying lens)
Also found in: Dictionary, Thesaurus.
magnifying glass:see microscopemicroscope,
optical instrument used to increase the apparent size of an object. Simple Microscopes
A magnifying glass, an ordinary double convex lens having a short focal length, is a simple microscope. The reading lens and hand lens are instruments of this type.
..... Click the link for more information. .
magnifying glass[′mag·nə'fī·iŋ 'glas]
Any device that uses a simple lens which enlarges the object being viewed.
magnifying glass
traditional detective equipment; from its use by Sherlock Holmes. [Br. Lit.: Payton, 473]
See: Sleuthing
magnifying glass, magnifier
a convex lens used to produce an enlarged image of an object


text:
Albania – country full of contrasts, imagined by most of us as a dangerous place (all the stories about Albanian mafia). Personally places like Albania always get a lot of attention from my side and I am eager to visit them. Not sure what is so magnetic but for sure I don't like to classify something as bad or good without trying.
Staying in Montenegro again opened for us a good opportunity (after Dubrovnik) to explore a completely new place. Our luggage was ready in the car, passports as well. Without saying twice we were already at the Albanian boarder (do you still remember dodgy, old borders from 30 years ago?). The Albanian border was exactly like that, dirty, scary and full of strange people. It gave us an extra adrenaline. A few simple questions in a very bad English and we were already there.
Imagined vs. real
First surprise was an architecture. You expect from Albania as one of the poorest countries in Europe ugly, old houses and terrible infrastructure. Maybe the houses were ugly (not in my style) but they were gigantic and colorful. Another thing was a number of gas stations- on every corner, every 1 km on the road you could find one. I am still wondering why? In addition we could see behind those stations hidden police trying to measure our speed. Basically each time when the speed limit changed from 70 to 50 km/h. Not that hidden at the end 🙂 Driving itself it's also an experience. Forget about rules – they don't exist (maybe they do but not in practice). The weirdest thing I have seen was a child biking on a highway (there is one highway between Tirana and Durres). In my opinion he was 6-7 years old. How can you allow to bike on a highway and how the child can bike alone on a highway? Many questions no answers.
Priority on roads is also a taboo. "Right hand " rule doesn't make sense. If you don't drive a Mercedes you can be as much as you want on the right side but you will be treated as a lower class driver. No Mercedes –no rights! I have never seen so many Mercedes cars in one place, I was wondering how is possible that they are still driving as they were very old. It's seems to be a good investment – Mercedes drives long and gives you status and priority.
Durres-place for elites
After a few hours of driving and exploring the northern, agriculture Albania which is mainly full of fields and donkeys (more popular than horses) we arrived in Durres. We didn't have anything booked so our challenge was to find a hotel. To make our life easier we decided to choose 5 stars hotel, where people at least speak English. Don't take me wrong- we never go for those fancy places but Albania is a perfect country to do that due to low prices. For two persons in the best hotel in the town, swimming pool, private parking, breakfast, lunch and dinner (made by a French cook) we paid 100 Euros.
Durres seemed wild, its air spiced with danger. It was dirty, chaotic and pulsating with music and life. The architecture was strange. There was no order in building construction ,huge apartment blocks were built with no logical order, some levels incomplete yet never the less families dined on the barrierless balconies. We went to the beach, what was also an experience. We passed crumbling houses with fresh animal hides strung up to dry in the garden. The beach was dirty and overcrowded, full of ugly sun chairs.
All of this didn't matter that much- getting know new culture, meeting people, enjoying music coming from everywhere was amazing! The low prices make the experience even better as you can feel like a king. We have really enjoyed our short stay in Albania and our plan is definitely to come back and drive to the south. This time it will be with a better car's insurance (we had just a basic insurance but with the driving style of Albanians it's better to be covered).


text:
How To: Use an old smartphone or tablet as a security camera
Don't throw away or retire your older smartphones and tablets. Deploy them as a security camera around your home or office. We bet there will be many of you who have an old smartphone or tablet that is lying almost useless simply because either it under performs, is outdated hardware or there are … Continue reading
Intel could soon rewrite the entire industry, and that isn't a bad thing
Intel could soon rewrite the entire industry, and that isn't a bad thing Jamshed Avari Deputy Editor, CHIP Magazine If a leaked roadmap is to be believed, Intel will introduce a whole new type of CPU in 2014 which won't fit into a socket on a motherboard, but will instead take over nearly all the … Continue reading


text: We could not of asked for better weather for Katie and Tom's Wedding held in Hoar Cross Hall. The autumn colours made a fantastic backdrop for their wedding photography. The entire wedding was very informal and relaxed. The evening entertainment was provided by a live band who really created a fantastic atmosphere for the guests to dance to. Overall it was a great day and one of our favourite times of year to photograph a wedding.


text:
Everyone's different.
At the moment everyone gets to see the same website, personalisation makes it possible to show relevant content to your visitors.
Visitor A
Started getting into running and cardio.
Visitor B
Loves traveling to sunny countries.
Visitor C
Prepares an original breakfast every weekend.
10 habits of highly effective runners.
Continue reading
Top 10 must-see travel destinations.
Continue reading
Easy healthy breakfast ideas.
Continue reading
Recommended for you
Best running tips for beginners
The best countries for solo travel
5 recipes to kick-off summer night
10 best countries for runners
Worldwide bucket list destinations
Healthy pizza ideas under 500 calories
Running in the cold tips.
Christmas markets in Europe
Brunch recipes to make this weekend


text:
Sunday, 31 May 2015
The Three Boat Painter
It was an early start for us (7am) and we managed to complete the first three locks on self service. Jan prefers to do the locks herself. She tells me it's because they are more gentle to fill and we do them quicker on our own. I suspect it's more a case of the pleasure she gets from pushing the lock keeper's buttons!
We passed 'nb Ploddin' Along' below Goring Lock. There was no sign of life so I sounded the horn. Then I realised Louise was slaving away in the galley making breakfast for John who was still in bed. <note to myself to cease having these fantasies'>!
It's a short distance from Goring to Cleeve Lock where we stopped above to lock to top up the water tank. The diameter of the EA 'bulk filling' water hose is significantly larger than your standard garden hose however the pressure wasn't that great. By the time we had filled the tank the lock keeper had arrived. You can set your watch by these lock keepers!
Both Jan and I remembered the bridge at Wallingford. There are more dry arches than wet, an indication of just how much the river level can rise after heavy rain.
The day was still early by the time we reached Wallingford so we pressed on.
This part of the Thames is looking very familiar. It was May 2012 that we were able to at last escape from the receding flood waters on the Kennet & Avon and make a dash north having purchased a 3 day Thames license.
There is a sharp left turn where this house is located on the bend. A very nice looking home which isn't owned by Rolf Harris!
Three female boat painters were crowding around Clifton Lock. After looking at the size of their paint brushes it was obvious we wouldn't be employing them. Not only were their brushes tiny, they also wanted to sketch the boat first.
We remembered nb Tardis from our last visit. It doesn't look like it's moved in the intervening three years.
Didcot power station seems to stalk you as you cruise between Days and Culham Locks.
We caught up with nb Petrus at Culham Lock and followed it to Abingdon. The crew had warned us moorings in Abingdon would likely be scarce as it is a very popular spot. We actually remembered this from May 2012. To everyone's surprise moorings were plentiful. We have a nice mooring and the locals have already called in to see what Jan has on offer.
Those of you who read blog comments might have noticed Marilyn's (nb Waka Huia) comment about me being 'boat bitch'. Her David retired early and subsequently became house bitch, PA Bitch, Admin Bitch and IT Help Desk Bitch. It appears early retirement can be a real bitch!
8 comments :
- John and Louise said...
Hi Tom
I wish I was still in bed, but sadly not. I was in the bathroom, otherwise engaged. That's enough info as I don't want you having anymore strange fantasies !!!
- 31 May 2015 at 17:52
- Tom and Jan said...
Don't spoil everything by telling me it was John in the galley cooking breakfast! :-)
- 31 May 2015 at 17:58
- Paul (from Waterway Routes) said...
I hope we'll get a second blog tonight.
- 31 May 2015 at 18:45
- Tom and Jan said...
Yes..... lazy for one day only!
- 31 May 2015 at 18:46
- Jaqueline Biggs said...
This was a great post Tom. A two belly laugh rating. We only made it to Reading in 2013. We look forward to finishing our interrupted trip. In the meantime we've been traveling vicariously with you and Jan.
- 31 May 2015 at 19:48
- Daykin said...
Tom - Did you notice something lacking at Didcot Power Station ?
- 31 May 2015 at 21:34
- Tom and Jan said...
Hi Jaq,
Hope you have your seatbelt on tight coz the ride gets bumpy at times!
- 31 May 2015 at 22:00
- Tom and Jan said...
Yes..... Didcot power station wasn't puffing out any white clouds! :-)
- 31 May 2015 at 22:01