From: Discovery Channel\n\n1918 Killer Flu Tested on Monkeys\nSeth Borenstein, Associated Press\n\n\nJan. 18, 2007 — Scientists who tested monkeys with the resurrected 1918 killer flu virus now have a better idea of how the deadliest epidemic in history attacked and killed so many people — by over-amping the victims' own immune systems.\n\nThose findings in a first-of-its-kind experiment also help explain why so many of the roughly 50 million who died in the Spanish flu pandemic were young and healthy.\n\nBased on what was seen in monkeys, the human victims' strong immune systems likely were overstimulated, causing their lungs to rapidly fill with fluid.\nadvertisement\nShop Discovery Channel Store\nline\n\n"Essentially people are drowned by themselves," said University of Wisconsin virology professor Yoshihiro Kawaoka, lead author of a study being published Thursday in the journal Nature.\n\nScientists believe the results open a window into what could happen if the current bird flu in Asia morphs into a highly lethal strain that spreads easily among people.\n\nThe 1918 virus was reconstructed with reverse genetics, relying on tissue from victims of the early-day flu pandemic. The virus is kept only in two labs where scientists are studying it: the U.S. Centers for Disease Control and Prevention in Atlanta and the Public Health Agency of Canada's lab in Winnipeg where the monkey experiment was done.\n\nWhen seven macaques were given the virus at the high-level biosafety lab there, scientists were struck by how suddenly and overwhelmingly the flu struck. The virus spread faster than a normal flu bug and triggered a "storm" response in the animal's immune systems.\n\nTheir bodies' defenses went haywire, not knowing when to stop, researchers said. The lungs became inflamed and filled with blood and other fluids.\n\nThe scientists believe the virus had the same effect on humans in 1918.\n\nThe macaque experiment was supposed to last 21 days, but after eight days the monkeys were so sick — feverish, in pain, and struggling to breathe - that ethical guidelines forced the researchers to euthanize them.\n\n"There was some surprise that it was that nasty," University of Washington virologist and study co-author Michael Katze said. "It was the robustness of the immune system that helped victimize them."\n\nThe virus is very good at replicating itself, said Peter Palese, chairman of the microbiology department at Mount Sinai School of Medicine in New York. Its effect on the immune system "triggers what one refers to as a cytokine storm," he said.\n\nCytokines transmit messages among cells in the immune system. Palese wasn't part of the study but has worked on the resurrected virus before.\n\nNo other flu virus is deadly to monkeys, and the speed in its spread and the overwhelming immune system response is similar to those in the H5N1 bird flu, Kawaoka said.\n\nIf bird flu spreads person-to-person, scientists believe understanding the 1918 virus may give them clues about how to protect people from the new one.\n\n\n\n\nThe new work "gives us another tool," said Anthony Fauci, director of the National Institute of Allergy and Infectious Disease, who was not part of the research.\n\nFauci praised the study and said what it found in the effects on the body are stunning: "There aren't a lot of things that can induce that robust of an inflammatory response that quickly."\n\nThe 1918 flu research suggests that those fighting the bird flu in the future could try using drugs that reduce inflammation and control the body's immune response, Katze said.\nadvertisement\nShop Discovery Channel Store\nline\n\nIn the Winnipeg research, the first controlled introduction of the 1918 flu to primates, the monkeys were given extra high doses of the flu virus by nose, mouth, eye, and direct injection into the trachea to ensure infection.\n\nThe virus had been tested before on mice, but macaques provide better models of how viruses work on humans, the scientists said.\n\nThe fate of the monkeys was sealed within hours of their infections, Katze theorized.\n\nIn normal flu, the immune system response wanes, but in the 1918 flu "the innate response stayed up and didn't go down," Katze said.\n\nAdolfo Garcia-Sastre, a Mount Sinai microbiology professor who conducted some of the earlier mouse work, cautioned that it may be a mistake to focus so heavily on immune system response. The 1918 flu "induces an overwhelming and probably damaging immune response system" but it is largely because the virus grows so much, he said.\n\nIn mice, when the overactive immune response was eliminated, mice died because of high viral levels.\n\n"It's like a vicious circle, you get more viruses, you get more immune response and this results in damage," Garcia-Sastre said.\n
After a small amount of testing, the new TiddlyWiki based site is online. I highly reccomend the software for anyone needing to put up a simple to moderately complex web site with built-in navigation. At [[BMS]] we are currently writing code to drive the use of TiddlyWiki technology as the base user interface for CGI driven code.
Witness for Generic Drug Maker Says Plavix Case Could Cost It $4 Billion\n\nNEW YORK (AP) -- Apotex Inc., a Canadian pharmaceutical company with $1 billion in annual sales, would suffer as much as $4 billion in losses if it is forced to withdraw its generic version of blood thinner Plavix from the market, a financial expert the company hired testified Monday.\n\nADVERTISEMENT\nclick here\nFrank Allen Bernatowicz, an accountant, told U.S. District Judge Sidney H. Stein that Sanofi-Aventis SA, which sells Plavix with partner Bristol-Myers Squibb Co., would lose half as much as the Ontario-based Apotex if the judge does not stop its sales.\n\nStein opened a hearing Friday to decide whether he should force Apotex out of the market it entered only two weeks ago until he makes a permanent decision on whether the patents that support Plavix remain valid. Apotex claims they do not.\n\nBernatowicz said the $4 billion figure would include lost sales in a field where Apotex would expect to control 55 percent of the market within six months and future damage to its position in the marketplace even if the judge eventually ruled in its favor.\n\nApotex's product has already rapidly gained market share.\n\nFor the week ended Aug. 18, the generic version Plavix captured 60.2 percent of the total prescriptions written for the drug and 74 percent of the new prescriptions, according to Verispan LLC, which collects prescription.\n\nApotex's market share would likely shrink when new generic manufacturers eventually begin selling their versions of Plavix.\n\nBernatowicz refuted many of the dire claims Sanofi-Aventis lawyer Evan Chesler made Friday. The financial impact to Bristol-Myers -- a company with $53 billion in sales -- would be negligible, Bernatowicz said.\n\nPlavix is Bristol-Myers best selling drug and analysts estimate it accounts for about 30 percent of the company's profits. The Plavix revenue is crucial for Bristol-Myers ability to maintain its dividend, which, in turn, has been propping up its stock price. The blood thinner's worldwide sales totaled $5.9 billion last year.\n\nChesler warned Stein that letting Apotex stay on the market would send a message to pharmaceutical companies that patents are easily breached and that costly pioneering research that saves lives was not economical.\n\nChesler told the judge on Friday it costs $800 million to develop a single drug and that 5,000 potential drugs fail in the laboratory for each one that survives an obstacle course that includes multiple trials on the way to regulatory approval.\n\n"If somebody can do what they've done to my clients ... our free economy is not going to continue to produce the kind of ground breaking drugs that exist here. The incentive will be gone," Chesler had argued.\n\nBut Bernatowicz said pharmaceutical companies are known for their profits and that Bristol-Myers and Sanofi-Aventis had earned about $10 billion on more than $15 billion in sales of Plavix since it was introduced in late 1997.\n\n"Even if no other sales happened, this has been a great success," Bernatowicz said of Plavix.\n\nBernatowicz said pharmaceutical companies typically pour 17 percent to 21 percent of their sales into research and development and that Bristol-Myers and Sanofi-Aventis will continue to do so, regardless of the judge's ruling.\n\nBernatowicz also testified that the price of Plavix has dropped from $3.53 a pill to less than $2.40 and would fall to less than $1.45 in the next year, making it likely that many people who cannot afford the drug would begin taking it and more lives would be saved.\n\nBristol-Myers disclosed last month that the Department of Justice was investigating a deal where it, along with Sanofi-Aventis, agreed to pay Apotex at last $40 million to keep its version of Plavix off the market until 2011. The deal was rejected by state attorneys general.\n\nBristol-Myers shares fell 9 cents to close at $21.55 on the New York Stock Exchange, while American-traded shares of Paris-based Sanofi-Aventis fell 75 cents, or 1.7 percent, to finish at $44.70.\n\nAP Business Reporter Theresa Agovino contributed to this report.\n
Aug. 18 (Bloomberg) -- To commemorate the 30th anniversary of Canadian drugmaker Apotex Inc., an employee gave owner Barry Sherman a wood carving of an attacking red-tailed falcon, talons outstretched, now on display in the lobby.\n\n``They say I stalk my prey,'' Sherman said this week in an interview at his Weston, Ontario, headquarters. ``I say I don't ever shy away from a fight.''\n\nHis latest battle, playing out in a U.S. court today, is over Plavix, the world's second-best selling drug, with $6.2 billion in sales last year. If Apotex prevails, Bristol-Myers Squibb Co. and Sanofi-Aventis SA will lose their exclusive right to market Plavix five years earlier than planned and Apotex will get a windfall selling a cheaper version of the $4-a-day blood- thinning pill.\n\nSherman is at the center of a storm involving drug prices. Apotex and generic-drug makers are challenging the validity of product patents so they can sell less-expensive copies sooner than scheduled. To delay the competition, brand-name drugmakers have been cutting deals with generic producers that may blunt the price-lowering effect of patent expirations for 70 drugs in the U.S. in the next five years.\n\n``The system is being screwed up by greedy people who see this big pot to be split, and they have no interest in consumers, who get screwed by paying more than they should for medications they need,'' said Sherman, the 64-year-old chief executive officer of Apotex.\n\n
\n\n\nFlickr Black Magic is available for testing.\n\nIt is similar to OnBlack, but uses magic to display your photo.\n\n\nYou can test it by pasting the link:\n\nBest with <b> <a href="http://fiveprime.org/blackmagic">B l a c k M a g i c</a></b>\n\ninto your photo description for any of the public photos in your photostream. I think adding it in a photo comment should also be fine.\n\nThis should give "On Black" type photo views but uses referer information to figure out the picture ID, so you don't have to craft a new URL for each picture.\n\nAt least for now this only works for public photos.\n\nIf your browser does not send referer information, the you should get sent back to the page where you clicked on the link.\n\n\nLet me know of any successes, problems, and thanks! \n\nMore discussion, as well as an example in action:\n\nhttp://www.flickr.com/photos/nosha/3277989393/\n \n
Deutsche Bank upgrades Bristol-Myers Squibb (NYSE: BMY) from Hold to Buy with a $35 price target. The firm said, "BMY's 1Q07 EPS indicate a sustained EPS recovery may be ahead Solid sales, higher than expected gross margins, and lower expenses drove a substantial earnings beat in BMY's 1Q07 EPS. The new management team has been focusing on improving shareholder value in a multitude of ways which could bear substantial fruit over the coming years. Due to these factors we now expect\nthat BMY's operating leverage from its growing new product portfolio may be substantially greater than we had originally believed."\n
<<option chkGenerateAnRssFeed>> GenerateAnRssFeed\n<<option chkOpenInNewWindow>> OpenLinksInNewWindow\n<<option chkSaveEmptyTemplate>> SaveEmptyTemplate\n<<option chkToggleLinks>> Clicking on links to tiddlers that are already open causes them to close\n^^(override with Control or other modifier key)^^\n<<option chkHttpReadOnly>> HideEditingFeatures when viewed over HTTP\n<<option chkForceMinorUpdate>> Treat edits as MinorChanges by preserving date and time\n^^(override with Shift key when clicking 'done' or by pressing Ctrl-Shift-Enter^^\n<<option chkConfirmDelete>> ConfirmBeforeDeleting\nMaximum number of lines in a tiddler edit box: <<option txtMaxEditRows>>\nFolder name for backup files: <<option txtBackupFolder>>\n\n<<option chkStepWiseNavigationOn>> StepWiseNavigation
“I’d like to share with you a revelation, I’ve had during my time here. It came to me when I tried to classify your species that I realized you aren’t actually mammals. Every mammal on this planet instinctively develops a natural equilibrium with its surrounding environment, but you humans do not. You move to an area and you multiply, and multiply until every natural resource is consumed. The only way you can survive is to spread to another area. There is another organism on this planet that follows the same pattern. Do you know what it is? A virus. Human beings are a disease, a cancer of this planet. You are a plague, and we...are the cure.â€
NEW YORK, Sept 6 (Reuters) - Canadian drugmaker Apotex Inc. on Wednesday asked a U.S. federal appeals court to allow it to keep selling its generic version of the top-selling blood-thinner Plavix by delaying a lower court order halting its shipments.\n\nThe motion, filed in the Court of Appeals for the Federal Circuit in Washington, D.C., seeks to delay a preliminary injunction issued on Aug. 31 by U.S. District Judge Sidney Stein in Manhattan, pending Apotex's appeal of the matter.\n\nStein granted a request from Sanofi-Aventis (SASY.PA: Quote, Profile, Research) and Bristol-Myers Squibb Co. (BMY.N: Quote, Profile, Research) to block the sale of a generic form of Plavix, saying continued shipments would cause "irreparable harm" to the two drugmakers. A trial on the matter is set for January.\n\nStein also denied a motion seeking a recall of the generic product that has already been distributed by Apotex.\n\nIn a 26-page motion, Apotex argued that emergency relief from the higher court is necessary because the injunction will "wreak havoc in the pharmaceutical markets where statutes and insurers require that prescriptions be filled with generic product."
A U.S. court filing on Thursday provided new details about allegations that a Bristol-Myers Squibb executive made a secret side deal with a generic drug maker in hopes of preserving a lucrative monopoly on the anti-clotting drug called Plavix.\n \nThose allegations are thought to be the focus of a U.S. Department of Justice investigation of Bristol-Myers and the company's marketing partner for the drug, Sanofi-Aventis.\n \nThe court filing, made by lawyers for a Canadian generic drug company, Apotex, contends that Bristol-Myers made the secret agreement as part of a proposed patent lawsuit settlement with Apotex. The secret deal, Apotex contends, was an effort to evade the scrutiny of U.S. regulators who were reviewing the settlement.\n \nThe filing alleges that Dr. Andrew Bodnar, a top assistant to Bristol-Myers's chief executive, Peter Dolan, negotiated the secret deal after regulators objected to an earlier version of the patent settlement on the ground that it would stifle competition.\n \nAlthough the U.S. Food and Drug Administration approved Apotex's generic version of Plavix earlier this year, the settlement would have delayed the introduction of that drug until 2011, several months before the expiration of the Plavix patent.\n \nThe side deal, according to papers filed in court on Thursday, contained two provisions that were not included when the companies formally submitted their revised version.\n \nOne provision called for Bristol-Myers and Sanofi to give Apotex a six-month head start when it introduced its generic version of Plavix in 2011, before the two big companies would introduce their own generic, according to the filing.\n \nUnder the other provision, the filing says, Bristol-Myers and Sanofi would pay Apotex $60 million, even if regulators rejected the settlement. But regulators did reject the agreement late last month, and Apotex almost immediately began shipping its generic version of Plavix, flooding the U.S. market with millions of pills priced 10 percent to 20 percent below the $4-a-day price of brand-name Plavix.\n \nAbout $3.5 billion worth of Plavix was sold in the United States last year; it is one of Bristol-Myers's top products.\n \nApotex has said that it negotiated the settlement on the assumption that regulators would reject it, but that the discussions allowed it to win concessions from Bristol-Myers and Sanofi, which is based in Paris, that have made it easier to introduce its generic drug in defiance of the big companies' patent claims.\n \nThe filing by Apotex preceded a hearing that was scheduled for Friday in a U.S. court in Manhattan, in which Judge Sidney Stein was to consider a request by Bristol-Myers and Sanofi to block further sales of the generic drug until the end of a patent trial, now expected to begin in January.\n \nTony Plohoros, a Bristol-Myers spokesman, said that an internal investigation by his company's outside lawyers had found no evidence of unlawful conduct by Bristol-Myers employees. The results of that review are being shared with the government, he said.\n
<html>\n<div class="content">\n <h1>ArtFart</h1>\n\n </div>\n <div class="content">\n <h2>1120275036</h2><p><h2>Watch Out</h2>\n<p><em><a href="http://www.explodingdog.com">Explodingdog</a></em></p>\n<br><a href="http://www.explodingdog.com"><img\nsrc="/Images/watchout.jpg"></a>\n</p>\n </div>\n <div class="content">\n <h2>1117335393</h2><p><h2>It's my favorite job</h2>\n\n<p><em><a href="http://www.explodingdog.com">Explodingdog</a></em></p>\n<br><a href="http://www.explodingdog.com"><img\nsrc="/Images/itsmyfavoritejob.gif"></a>\n</p>\n </div>\n <div class="content">\n <h2>1117335316</h2><p><h2><a href="http://www.gric.at/home.htm">Peter Gric</a></h2>\n<br><img src="/Images/gric1.jpg">\n<br><img src="/Images/gric2.jpg">\n<br><img src="/Images/gric3.jpg">\n<br><img src="/Images/gric4.jpg">\n<br><img src="/Images/gric5.jpg">\n\n\n</p>\n </div>\n <div class="content">\n <h2>1117152456</h2><p><h2>Bill Sienkiewicz, of Elektra Assassin fame</h2>\n<br><img src="/Images/sienkiewicz2.jpg">\n</p>\n </div>\n <div class="content">\n\n <h2>1117107070</h2><p>I am becoming fond of the artwork of <a\nhref='http://www.jamesjean.com/'>James Jean</a>, an artist in LA.\n<br>\n<img width="50%" src="/Images/JamesJean/k.jpg">\n<br>\n<img width="50%" src="/Images/JamesJean/banquet.jpg">\n<br>\n<img width="50%" src="/Images/JamesJean/jamesjean1.jpg">\n<br>\n<img width="50%" src="/Images/JamesJean/jamesjean2.jpg">\n</p>\n </div>\n <div class="navBeta">\n\n <p><h2>Thanks to <a href="http://www.bluerobot.com">BlueRobot</a> for\n CSS Layouts</h2></p>\n\n </div>\n</html>
Echo 0.15 delay 0.3 decay\n\n
/***\n|Name|AutoOpenTiddlersPlugin|\n|Created by|SaqImtiaz|\n|Location|http://lewcid.googlepages.com/lewcid.html#AutoOpenTiddlersPlugin|\n|Version|0.21|\n|Requires|~TW2.x|\n!!!Description:\nOpen a user defined number of recent tiddlers automatically when the TW loads.\nYou can also specify a tag and only load tiddlers that have that tag.\nTo change the number of tiddlers automatically opened, or define a tag to use, ed the config.autoOpenTiddlers part of the code below.\n\n!!!To Do\n*add an option to exclude tiddlers with a particular tag\n\n!!!Code\n***/\n//{{{\n//edit this section to change the default settings\nconfig.autoOpenTiddlers = \n{\n count: 5, //number of tiddlers opened.\n tag: undefined //change if you want to open tiddlers with a specific tag, eg: 'DefaultTiddlers'\n}\n\n\nconfig.autoOpenTiddlers.handler = function()\n{\n if (this.tag == undefined)\n var newTiddlers = store.getTiddlers("modified");\n else\n var newTiddlers = store.getTaggedTiddlers(this.tag,"modified");\n var newTiddlers = newTiddlers.reverse();\n var max = Math.min(this.count,newTiddlers.length-1);\n for (var i=max; i>=0; i--)\n { story.displayTiddler(null,newTiddlers[i].title);} \n}\n\nwindow.old_lewcid_autoOpenTiddlers_restart = restart;\nrestart = function ()\n{\n window.old_lewcid_autoOpenTiddlers_restart();\n config.autoOpenTiddlers.handler();\n}\n//}}}
La Palma "LEM" 370-500 euros online.\n\nhttp://www.ambientedirect.com/en/eur/lap_lem_hocker_en.php\n\n
[[Bristol-Myers Squibb|http://www.bms.com]]
Phil Erlanger\nAug 10, 2006 12:45 pm\n \n \n \nThe story is far from over...\n \n \n \n \n\n\n\n\nGeoff Garbacz contributed to this article.\n\nIs a change in short selling intensity a factor that influences the direction of a stock’s price? From Erlanger Research's vantage point, the two best indicators to track stock moves are price action and sentiment. We created a classification system called the Erlanger Types that measures each day’s price action and sentiment. We track four types:\n\n * 1. Short Squeeze (Buy) Strong technicals and short position high.\n * 2. Recognized Strength (Hold) Strong technicals and average or low short positions.\n * 3. Shorts Are Correct (Sell) Weak technicals and short position high.\n * 4. Long Squeeze (Short) Weak technicals and low short position.\n\n\nThe reason we mention the Types is because CNBC’s lead story yesterday was that Bristol Myers Squibb’s (BMY) short position almost doubled last month. Then, several weeks after the release of short interest data the world has come unglued for Bristol-Myer. The July short interest data for NYSE names is collected between trade dates June 12 to July 11. The short position rose from 27,649,472 to 47,893,613. We often note that short sellers are sometimes correct.\n\nIn our work Bristol-Myers has been ranked a Type 3: Shorts Are Correct. The stock price on July 28 was $24.04; today it sits at $21.04. A generic version of BMY’s best selling drug, Plavix, has been released into the market place by Apotex. This news has come out in the past two days. Rite Aid (RAD) has noted that it will have the generic brand in 3,000 of its stores today. This is a bold move by Apotex because they decided not to wait for a court to rule on the Plavix patent held by Bristol Myers and Sanofi-Aventis (SNY). Bristol Myers told investors not to worry about a Plavix generic until late 2007 and now investors, like rats, are leaving the sinking ship.\n\nThe NYSE now wants to investigate the short sellers for potentially trading on inside information? Did short sellers have inside information from Apotex insiders, executives at Rite Aid, Bristol Myers, Sanofi-Aventis insiders, the lawyers involved in the patent dispute or some doctor hired by a hedge fund to consult on the outcome of the generic?\n\nShort sellers MUST be more timely because stocks gravitate higher 2/3 of the time. Smart investors and speculators constantly track and seek out catalysts that will move a stock price. In our review, we note that short sellers in BMY have been adding to positions since April:\n\n\nThe sudden increase in short interest from June to July in the short position of Bristol Myers seems unusual. However we note that during the period of May to June another stock hated by short sellers, Home Depot (HD), saw a dramatic increase in its short position:\n\n\n\nDid the NYSE call for an investigation of this change in short position? Short sellers were simply shorting the stock to voice their displeasure with the Chairman, Chief Executive and President Robert Nardelli of Home Depot. He held his annual meeting on May 25, which the Board of Directors did not attend. He did not answer any questions from shareholders present, and he avoided all issues related to the eight shareholder resolutions proposed. We thank Tom Brown of www.bankstocks.com for bringing this to light in May.\n\nA serious issue is that regulatory bodies have no control of the flow of information over the internet. Technical indicators in general and short interest in particular are measures of the action of people in the market place. As the information is disseminated and as market participants act on it (either legally or illegally) these indicators will reflect that flow of information. The observation that short sellers are taking positions draws attention to those fundamentally close to situations like Bristol-Myers.\n\nWe ran Google searches on these words: Plavix, generic and Apotex. The August 5, 2006 The New York Times reported that, “Apotex was known to have begun manufacturing a generic form of Plavix early this year after gaining FDA approval in January, despite the existence of the United States patent.†Analysts may have figured out that Apotex had started to produce generic Plavix. The approach by Apotex to launch in spite of a patent held by Bristol-Myers and Sanofi is called an “at-risk launch.†If the court upholds the patent, then they will pay three times Bristol-Myers sales losses. The huge short position would quickly go from a Type 3: Shorts are Correct type to a Type 1: Short Squeeze. This seems to be a big risk to the short sellers, which is why we avoid shorting Type 3s.\n\nWhat else could have caused the short position to move higher in April? We note that in March Bristol-Meyers and Sanofi-Aventis reached an agreement with Apotex to settle a patent dispute on generic Plavix. Then Bristol-Meyers announced on July 27 that the federal government was conducting a criminal antitrust probe of this potential settlement. On July 28, several news sources reported that FBI agents raided the office of Bristol-Myers chief executive as a part of their investigation to pay Apotex to hold off their generic launch until 2011 when the patent expires. Finally, the Southern District of New York and the U.S. Justice Department said “not so fast†on July 29 and killed any proposed deal.\n\nIn any situation there is often a plethora of fundamental considerations. We decided to poll several healthcare managers and ask them if they were aware months ago about the risk of Plavix. They all responded in the affirmative. Good managers do their homework to avoid the land mines; short sellers seek the land mine situations.\n\nThe conclusion is that changes to short positions are often a precursor to dramatic news or fundamental events… therefore short interest statistics must be followed closely by all investors. The BMY story is far from over. Currently the shorts are right. If they cover, BMY will become a long squeeze. If BMY rallies the shorts could be squeezed out in a short covering buying spree. The key is price action. Price action defines how we classify the relative correctness of short sellers.
Phil Erlanger\nAug 10, 2006 12:45 pm\n \n \n \nThe story is far from over...\n \n \n \n \n\n\n\n\nGeoff Garbacz contributed to this article.\n\nIs a change in short selling intensity a factor that influences the direction of a stock’s price? From Erlanger Research's vantage point, the two best indicators to track stock moves are price action and sentiment. We created a classification system called the Erlanger Types that measures each day’s price action and sentiment. We track four types:\n\n * 1. Short Squeeze (Buy) Strong technicals and short position high.\n * 2. Recognized Strength (Hold) Strong technicals and average or low short positions.\n * 3. Shorts Are Correct (Sell) Weak technicals and short position high.\n * 4. Long Squeeze (Short) Weak technicals and low short position.\n\n\nThe reason we mention the Types is because CNBC’s lead story yesterday was that Bristol Myers Squibb’s (BMY) short position almost doubled last month. Then, several weeks after the release of short interest data the world has come unglued for Bristol-Myer. The July short interest data for NYSE names is collected between trade dates June 12 to July 11. The short position rose from 27,649,472 to 47,893,613. We often note that short sellers are sometimes correct.\n\nIn our work Bristol-Myers has been ranked a Type 3: Shorts Are Correct. The stock price on July 28 was $24.04; today it sits at $21.04. A generic version of BMY’s best selling drug, Plavix, has been released into the market place by Apotex. This news has come out in the past two days. Rite Aid (RAD) has noted that it will have the generic brand in 3,000 of its stores today. This is a bold move by Apotex because they decided not to wait for a court to rule on the Plavix patent held by Bristol Myers and Sanofi-Aventis (SNY). Bristol Myers told investors not to worry about a Plavix generic until late 2007 and now investors, like rats, are leaving the sinking ship.\n\nThe NYSE now wants to investigate the short sellers for potentially trading on inside information? Did short sellers have inside information from Apotex insiders, executives at Rite Aid, Bristol Myers, Sanofi-Aventis insiders, the lawyers involved in the patent dispute or some doctor hired by a hedge fund to consult on the outcome of the generic?\n\nShort sellers MUST be more timely because stocks gravitate higher 2/3 of the time. Smart investors and speculators constantly track and seek out catalysts that will move a stock price. In our review, we note that short sellers in BMY have been adding to positions since April:\n\n\nThe sudden increase in short interest from June to July in the short position of Bristol Myers seems unusual. However we note that during the period of May to June another stock hated by short sellers, Home Depot (HD), saw a dramatic increase in its short position:\n\n\n\nDid the NYSE call for an investigation of this change in short position? Short sellers were simply shorting the stock to voice their displeasure with the Chairman, Chief Executive and President Robert Nardelli of Home Depot. He held his annual meeting on May 25, which the Board of Directors did not attend. He did not answer any questions from shareholders present, and he avoided all issues related to the eight shareholder resolutions proposed. We thank Tom Brown of www.bankstocks.com for bringing this to light in May.\n\nA serious issue is that regulatory bodies have no control of the flow of information over the internet. Technical indicators in general and short interest in particular are measures of the action of people in the market place. As the information is disseminated and as market participants act on it (either legally or illegally) these indicators will reflect that flow of information. The observation that short sellers are taking positions draws attention to those fundamentally close to situations like Bristol-Myers.\n\nWe ran Google searches on these words: Plavix, generic and Apotex. The August 5, 2006 The New York Times reported that, “Apotex was known to have begun manufacturing a generic form of Plavix early this year after gaining FDA approval in January, despite the existence of the United States patent.†Analysts may have figured out that Apotex had started to produce generic Plavix. The approach by Apotex to launch in spite of a patent held by Bristol-Myers and Sanofi is called an “at-risk launch.†If the court upholds the patent, then they will pay three times Bristol-Myers sales losses. The huge short position would quickly go from a Type 3: Shorts are Correct type to a Type 1: Short Squeeze. This seems to be a big risk to the short sellers, which is why we avoid shorting Type 3s.\n\nWhat else could have caused the short position to move higher in April? We note that in March Bristol-Meyers and Sanofi-Aventis reached an agreement with Apotex to settle a patent dispute on generic Plavix. Then Bristol-Meyers announced on July 27 that the federal government was conducting a criminal antitrust probe of this potential settlement. On July 28, several news sources reported that FBI agents raided the office of Bristol-Myers chief executive as a part of their investigation to pay Apotex to hold off their generic launch until 2011 when the patent expires. Finally, the Southern District of New York and the U.S. Justice Department said “not so fast†on July 29 and killed any proposed deal.\n\nIn any situation there is often a plethora of fundamental considerations. We decided to poll several healthcare managers and ask them if they were aware months ago about the risk of Plavix. They all responded in the affirmative. Good managers do their homework to avoid the land mines; short sellers seek the land mine situations.\n\nThe conclusion is that changes to short positions are often a precursor to dramatic news or fundamental events… therefore short interest statistics must be followed closely by all investors. The BMY story is far from over. Currently the shorts are right. If they cover, BMY will become a long squeeze. If BMY rallies the shorts could be squeezed out in a short covering buying spree. The key is price action. Price action defines how we classify the relative correctness of short sellers.
Bristol-Myers Shares Jump After Generic Plavix Ban (Update3)\nBloomberg - 7 hours ago\n... Sargent. Sept. 1 (Bloomberg) -- Shares of Bristol-Myers Squibb Co. rose as much as 6 percent after a court ordered Canada's Apotex Inc. ...\nBIOTECH STOCKS Bristol-Myers leads drug stocks higher MarketWatch\nPremarket Movers: Bristol-Myers jumps BusinessWeek\nAhead of the Bell: Bristol-Myers Houston Chronicle\nMSNBC - Crain's New York Business\nall 573 news articles »\nBEFORE THE BELL Intel, Bristol-Myers, Monster Worldwide in focus\nMarketWatch - 10 hours ago\n... Journal reported. A federal judge blocked sales of a generic version of blood thinner Plavix, made by Bristol-Myers Squibb Co. (BMY :\nWall St seen higher as investors mull jobs report MSNBC\nDJ US Stocks Open Higher After In-Line Jobs-Creation Numbers Wiadomosci onet.pl\nall 4 news articles »\nIntel, Bristol-Myers shares rise\nReuters - 11 hours ago\n... Nasdaq. Shares of Bristol-Myers Squibb Co. ... thinner. Bristol-Myers shares ended Thursday at $21.75 on the New York Stock Exchange.\nUS futures up before payrolls; Bristol-Myers climbs\nMarketWatch - 13 hours ago\n... market futures showed a touch of strength on Friday ahead of statistics likely to show accelerating jobs growth in August, with Bristol-Myers Squibb rallying ...\nBristol-Myers rises after Plavix ruling; Starbucks up MarketWatch\nUS stock futures gain as jobs growth meets expectations MarketWatch\nall 5 news articles »\nUS Stock-Index Futures Rise; Intel, Bristol-Myers Advances\nBloomberg - 11 hours ago\n... Bristol-Myers Squibb Co. ... Intel spokesman Chuck Mulloy declined to comment. Bristol-Myers climbed $1.65 to $23.40 after a US court ordered Canada's Apotex Inc. ...\nUS Stock-Index Futures Rise; Lockheed, Bristol-Myers Advance Bloomberg\nUS Stock-Index Futures Rise; Lockheed, Bristol-Myers Advance Bloomberg\nUS Stocks Rise as Job Growth Exceeds Forecast; Intel Gains Bloomberg\nall 29 news articles »\nBristol-Myers Gains 4.8%\n123Jump.com, FL - 9 hours ago\nIn corporate news Friday, Bristol-Myers Squibb (BMY: chart) rose 4.8% after a judge blocked sales of a generic form of the drug maker''s blood-thinning drug ...\nUS stocks rise after jobs data ease rate worry NDTV.com\nStocks Rise on August Jobs Data Houston Chronicle\nall 66 news articles »
\n7/29/2006: I've realized that there is significantly more work to do to get these transcriptions up to snuff. Most of this work involves removing literally encoded ornaments from the midi import, and lots and lots of slurring and beaming of notes to make reading easier. I've consulted original scores in the process to help.\n\nSo what you will see now in the links below are just a few variations that have been given more scrutiny.\n\nRosegarden scores are also available - contact me!\n\nNathan\n\n\nI've started the process of transcribing the Goldberg Variations for Celli. The transcription is based on the wonderful work of David J. Grossman (http://www.jsbach.net/midi/midi_goldbergvariations.html). The transcription also transposes serveral of the high lines of the variations one octave down to bring them into the range of a modestly capable cellist, and finally cleans up artifacts from the import of Dave's midi rendition into RoseGarden software. \n\nSo far I've completed transcriptions of the Aria and first 5 Variations. Encouragement welcomed! [[Contact Nathan]].aaaa\n\n11 July 2006 - aria plus 10 variations are now drafted. Also, I've created both cello trio and cello quartet parts for the aria.\n\n[[Folder of PDF Files|TWDoc/Goldberg-4Cello]]\n
*http://www.cottonpalace.com/ligkim.html nice waffle, not cheap. Long enough?\n\n
Beef Bourguignon\n Easy Affordable\nfrom Asia\n \n Preparation time: 25 min\nCooking time : 35 min\n\nIngredients\n1 3/4 lb (785 g) stewing steak; 5 slices streaky bacon; 5 tbsp (75ml) cooking oil; 2 onions (chopped); 1 pint (600ml) red wine; 1 clove crushed garlic (optional); 1 tsp (5ml) dried mixed herbs, salt and pepper; 6 oz (175 g) mushrooms; 1 1/2 oz (40 g) butter; chopped parsley.\n Cut the meat and bacon into 1 inch (2,5cm) pieces. Heat 4 tablespoons (60ml) of the oil in the open pan and brown the meat, together with the bacon. Add the onions and sprinkle with flour. Stir and allow to brown for a moment more. Pour on the red wine. Add the crushed garlic; mixed herbs, and seasoning. Use pressure level 2. Close the lid and bring to pressure. Cook for 35 minutes. Turn the pressure selector to the steam release position or place the pressure cooker under cold running water. Whilst the stew is cooking, wash the mushrooms and slice. Heat the oil and butter. Fry the mushrooms for about 3 minutes. Drain. Just before serving stir in the mushrooms. Thicken the stew with 3 tbsp (45ml) cornflour blended with a little water. To garnish the stew sprinkle with chopped parsley.
Where there's smoke, the old saying goes, there's fire.\n\nAnd something is certainly smoldering at Bristol-Myers Squibb, which the Financial Times reported yesterday has hired several investment banks in advance of an expected takeover offer from Sanofi Aventis.\nAdvertisement\n \n\n\n \n\nThe report, quoting unnamed bankers in Paris, said the drug maker hired Lehman Bros. to work alongside Citigroup and Morgan Stanley.\n\nThe idea, the report said, is to spark a bidding war for Bristol- Myers by attracting rival bids from GlaxoSmithKline, AstraZeneca, Pfizer, Schering-Plough or Merck.\n\nEarlier this week, a French newsletter reported Sanofi and Bristol-Myers were in negotiations and had signed a pre-merger agreement. The Financial Times report said French bankers denied the companies signed an agreement, but were in talks on merging the company.
THE drug maker Bristol-Myers Squibb brings to mind that vacant colonial for sale down the street. In real estate parlance, both are expensive and might seem to need too much tender loving care.\n\nThe company’s leaders all but announced it was for sale last September. Four months later, though, no potential suitor has emerged — at least not publicly.\n\nInstead, Bristol-Myers has entered several comparatively small deals, including one yesterday in which it announced a partnership with the British company AstraZeneca to develop two diabetes compounds.\n\nOne industry executive said recently that every large pharmaceutical company had looked at Bristol-Myers as a potential acquisition. But there are major deterrents to a quick sale: its price; two pending Justice Department investigations; and a looming patent trial involving the company’s blockbuster drug Plavix. That trial is set to begin Jan. 22 in Manhattan federal court.\n\n...
Bristol-Myers, Sanofi Win U.S. Bar to Generic Plavix (Update5)\n\nBy Jeff St.Onge and Lisa Rapaport\n\nAug. 31 (Bloomberg) -- Bristol-Myers Squibb Co. and Sanofi- Aventis SA won a bid to stop generic-drug maker Apotex Inc. from selling its cheaper copies of the Plavix heart pill, the world's second-biggest selling medicine. Both drugmakers' shares surged.\n\nU.S. District Court Judge Sidney H. Stein ruled today that New York-based Bristol-Myers and Paris-based Sanofi are likely to win their patent-infringement suit against Apotex and wouldn't be able to recoup losses if generic sales were allowed to continue.\n\n``The court finds Apotex's evidence insufficiently persuasive to establish a likelihood of proving invalidity'' of the companies' Plavix patent in a trial, Stein wrote in a 57-page ruling. At the same time, he denied the companies' request to force Apotex to recall the drugs it has sold to U.S. distributors and drugstores.\n\nApotex has captured more than half of U.S. prescriptions for Plavix since the closely held Weston, Ontario-based company began selling its copies Aug. 8, according to industry analysts. Bristol-Myers and Sanofi, which jointly market the drug to prevent heart attacks and strokes, had U.S. Plavix sales of $3.8 billion last year. The ruling will force Apotex to stop distributing additional supplies of its competing product.\n\n``This just buys them some time,'' said Jon Fisher, a portfolio manager with Fifth Third Asset Management in Minneapolis, in a phone interview. ``I'm still not sold that at the end of the day they are not going to see generic competition sooner than expected. This buys them some time, but I think the tides of change have gone too far.''\n
Irish Mum's Brown Bread\n\n 3 cups whole wheat bread flour (Ross says: this is best when the flour is coarse as opposed to the whole wheat flour you get here which is fully milled. Heidi says: I used a standard whole wheat bread flour which seemed to be pretty finely milled, because that's all I could find, even at Rainbow Foods.)\n\n 1 cup unbleached white bread flour (Heidi: I used King Arthur brand)\n Pinch of salt\n 1 teaspoon baking soda\n 1 3/4+ cups buttermilk\n 2 ounces butter (preferably Kerrygold)\n 1 egg\n\nMelt the butter over gentle heat.\nIn a medium-sized bowl lightly beat the egg and then gradually add the buttermilk all the while stirring to incorporate the egg. Beat in the butter.\n\nIn another bowl sift and mix the dry ingredients as best you can (not really a prob if you can't find the coarse flour), and then stir in the buttermilk mixture. If you are using a baking tin the mixture should be on the wetter side - (heidi: like a thick brownie mix, something you could pour into the tin, not scoopable by hand really). If your dough is too dry, mix in small splashes of buttermilk until it is the right consistency.\n\nCook at 400F for 50 minutes on the middle rack. You want to hear a sort of hollow sound when you knock on the bottom of the tin. Resist the urge to take the bread out too soon, or the middle of the bread won't get cooked through.\n
EMPLOYMENT\nJanuary 7, 2002\nVolume 80, Number 1\nCENEAR 80 01 pp. 47-53\nISSN 0009-2347\n\nCAREERS IN BIOINFORMATICS\nField is not significantly affected by economic downturn; qualified people are still hard to find\n\nCELIA M. HENRY, C&EN WASHINGTON\n\nWith the ever-expanding reach of genomics and proteomics and the large amounts of data that their associated techniques generate, biology is becoming an increasingly quantitative science. The need is growing for scientists--whether they be trained as molecular biologists, biochemists, or chemists--who can speak the languages of both the computational and biological sciences.\n 8001new_about\n \n\nThe field of bioinformatics is one way to deal with this explosion of data. Unfortunately for neophytes trying to understand the field, bioinformatics means different things to different people. At its core, however, the field is simply the intersection of biology and the computational sciences, which include mathematics, statistics, and computer science.\n\nNathan O. Siemers, associate director of applied genomics at Bristol-Myers Squibb in Hopewell, N.J., calls bioinformatics "a mixture of the mundane and the sublime." The mundane includes data integration, data formatting and conversion (also known as parsing), and automation--"doing a relatively straightforward analysis a million times over the course of a few days and then dealing with the volume of results you get and turning them into something useful," Siemers says.\n\nIt's when the useful parts start to emerge that the sublime aspects surface. "Some of the most exciting stuff is working with large bodies of sequence and gene-expression data," he says, "seeing the patterns that come out and how they reproduce biology, in some cases extremely well."\n\nFOR MANY PEOPLE, bioinformatics is focused on analyzing genomic data, but for others it's much broader. Originally confined to the early stages of drug discovery, bioinformatics is lending its power to all aspects of clinical development, a trend that will only continue. "In industry, I see bioinformatics evolving from primarily supporting early discovery to becoming more embedded in all stages of the drug discovery process," Siemers says. "We're already established in pharmacogenomics, trying to tie efficacy and side effects in a clinical setting back to underlying genetic variation in our patients."\n\nMuch bioinformatics work at Bristol-Myers currently focuses on RNA measurements, such as gene-expression profiling, Siemers says. However, proteomics is catching up. "It will probably take another couple of years before the volumes of data from those [proteomics] efforts really equal that of the RNA profiling chips," he says.\n\nAbgenix, located in Fremont, Calif., is also taking a broader view of bioinformatics. Its informatics group is subdivided into a software development group, a computational biology group, and even a library information science group. "We're involved in the same types of genomics data analysis that you have in a typical bioinformatics group, but we're also involved in lab automation and algorithm development for the various high-throughput assays, preclinical assays, and process development," says Keith Joho, director of bioinformatics. "We're putting together an integrated bioinformatics approach that not only encompasses that very beginning part--the genomics data analysis--but really covers the spectrum of drug discovery up to going into the clinic."\n\nRosetta Inpharmatics, a subsidiary of Merck located in Kirkland, Wash., takes a quantitative and computational biology approach to bioinformatics, according to Eric Schadt, a chief scientist and head of the computational genomics program.\n\nAt Rosetta, bioinformatics falls under the larger umbrella of informatics, headed by Roland Stoughton, and is divided into three groups. A custom data analysis group headed by Hongyue Dai and Yudong D. He develops solutions to process large sets of RNA expression array data and integrates these data with other sources of information. These individuals must take the data from thousands of arrays--millions of measurements--and "recognize the patterns within those millions of measurements that really elucidate the processes of interest in the system under study," Schadt says. The individuals in that group tend to have doctorates in mathematics or statistics.\n\nThe second group is the computational genomics program, which Schadt describes as being closer to classic bioinformatics. That group does sequence-based analyses, such as annotating genes and proteins, searching for motifs in proteins, or predicting genes in genomic sequence. However, that group is also "directly involved in driving the biology and thinking of innovative ways to integrate expression, genetics, genomic, and other data of interest for the purposes of discovery." Most of the people in that group have a Ph.D. in math, statistics, or biology. Schadt himself has a Ph.D. in biomathematics. The third group, headed by Mihai Margarint, focuses on software engineering and provides advanced software development support to the other two research teams.\n\nALTHOUGH BIOLOGISTS first come to mind when talking about bioinformatics, chemists are also welcome. "Chemists who are more biologically oriented, like biochemists, play a big role in helping us piece together pathways and understand protein function," Schadt says. "Also, their training, especially in areas like physical chemistry, tends to be more quantitative. They're more adept at the sort of analyses we do than a classically trained biologist, who typically doesn't get the math and statistical training that chemists often get."\n\nIn fact, the small number of biologists working within the informatics team at Rosetta "tend to be those biologists with strong programming, database, or quantitative skills, which are skills many graduate programs in biology haven't integrated into their curricula," Schadt says. In contrast, physical chemists and physicists tend to be more skilled in developing and applying numerical algorithms to mine data. "I think the need for people who are trained more quantitatively just grows and grows as more people in the biological sciences accept that biology is becoming more of a quantitative science. The quantitative training will continue to enable research in this field to be more competitive," he says.\n\nAt Large Scale Biology Corp. in Vacaville, Calif., Gary M. Wolfe, vice president of informatics systems, prefers to pull bioinformaticists from the physical sciences because they tend to have a "good mathematical foundation." They may be required to develop user interfaces for existing algorithms or to develop algorithms of their own. "I'd rather get individuals who are heavy-duty experienced scientists with a strong programming background," Wolfe says. "Then it's pretty straightforward to write a Web interface to the BLAST [sequence alignment] algorithm. But that individual on another day could put together a sophisticated algorithm to analyze mass spec data."\n\nWolfe believes strongly that a bioinformatics platform must effectively integrate laboratory information management systems with data analysis and discovery applications. The data generated must be stored and tracked in a relational database. "Once the data are in some ordered format, it becomes straightforward to write programs for analyzing the data, and generally speaking, this enables us to create a discovery platform," Wolfe says. "However, to create such a platform, it is necessary to have individuals with excellent systems analysis and programming skills."\n\nHowever, Wolfe says, it's not possible to take just any person with a programming background or mathematical background and have them program for bioinformatics applications. "They have to have an interest and experience in the life sciences. That can come from previous work they've done in a company or even their graduate or undergraduate training."\n"The need for people who are trained more quantitatively grows as more people in the biological sciences accept that biology is becoming more of a quantitative science." \n \nCOMPUTER SKILLS are very important for work in bioinformatics, especially UNIX and the programming languages C and PERL, Wolfe says. He focuses on these particular languages because most bioinformatics programs are written in C and because PERL is powerful for text processing and is flexible with Web applications.\n\nSchadt agrees that ideal bioinformaticists will be strongly grounded in math, statistics, and computer science. In addition, they will have at least some level of biological understanding. "The ones who are the most productive are the ones who can set up databases themselves, write scripts and programs themselves to process data or assemble data in a meaningful way, and then statistically summarize those data for the purposes of biological discovery. As the bar gets raised, I think a better understanding of biology, having the ability to identify the really pressing questions, is going to be required to be really competitive."\n\nJoho says the ideal preparation varies because bioinformatics requires a variety of people. "The key would be that you have to be very good in one area--for instance, an accomplished biologist or biomathematician--but you should also have some additional training in another area. For example, a mathematician who has a good biology background is very valuable, as is a biologist who has a computer science or mathematics background."\n\nAt Consensus Pharmaceuticals in Medford, Mass., the best candidates will have strong biology backgrounds, "because the computer skills are broadly available in a variety of candidates," says John L. Krstenansky, vice president of chemistry. "You have to know how to interpret the data and know what's really meaningful if you're generating algorithms."\n\nKrstenansky considers people with purely computer science backgrounds or who have been out of the science for a while not to have "the scientific strength" needed to build a strong bioinformatics program. "You need a strong chemistry or biology background that cannot be achieved without formal training. You must be able to be recognized as a contributing scientist in that area of science. That's the kind of depth of understanding and currency in the field that I think is essential."\n\nThe bioinformatics needs at Consensus lie outside the "mainstream bioinformatics" of genomic data, Krstenansky says. The company, which is based on a library-screening technology for identifying ligands to various enzymes or receptors, needs people who can assess information to identify "new biology." Therefore, Consensus is particularly interested in candidates with a strong background in biochemistry and an understanding of cellular biology.\n\nAlthough Krstenansky anticipates that the bioinformatics effort at Consensus will grow, he doesn't see it reaching the size of the company's biology and chemistry groups. "Your primary need is people generating the real materials and the raw data to be analyzed," he says. "If things are being done right, you should need fewer people proportionately to do the analysis of the data or to create the tools for the analysis of the data."\n \n \nSOME COMPANIES focus on providing bioinformatics software to other companies. One such company is Accelrys, located in San Diego. The "ideal profile" for someone in bioinformatics at Accelrys is someone who has at least a master's degree in biology in addition to a computer science degree, according to Judith M. Ohrn, vice president of human resources. "That's really nirvana," she says. If they can't find someone with training in both biology and computer science, they will hire a strong computer scientist who can pick up the biology on the job. "Normally you find with scientists who are good engineers or good computer scientists a certain fundamental knowledge about biology and an aptitude to learn what they need to learn."\n\nUniversities are grappling with the issue of what to include in a bioinformatics program. C. Fred Fox, a professor of microbiology and molecular genetics who is actively involved with the bioinformatics program at the University of California, Los Angeles, asks: "What training must these people have so they can sustain a career without going stale?" At UCLA, students must fulfill the requirements for a degree in one of the 13 participating departments--including math, statistics, and biochemistry--and then take additional courses to earn the bioinformatics certificate. Programs are being set up at both the master's and Ph.D. levels. The Ph.D. certificate program has already been training students for three years and should soon receive its final approval from the faculty senate.\n\nThe main issue in preparing for a career in bioinformatics isn't whether an individual is a biologist or computer scientist first, says Michael N. Liebman, director of computational biology at the Abramson Family Cancer Research Institute at the University of Pennsylvania. He spent 12 years working on bioinformatics in the pharmaceutical industry. "You can come in with a molecular biology background and learn computer science. You can come in with a computer science background and learn molecular biology. The issues that really need to be addressed are how do you solve complex problems and how do you work in teams."\n\nLiebman complains that students are not usually taught how to identify the right question about a problem. "They're taught how to apply methodologies if the question is presented to them," he says. "You don't need an algorithm to run faster. You first need to ask if it's the right algorithm and if it's solving the right problem."\n\nLiebman calls bioinformatics a "moving target." People who are training for a career should not expect that the qualifications for the jobs advertised today will also be what is needed in the future. "You really have to look for a training program that's looking ahead to see what the longer term issues are and not just turning somebody out for an industrial position."\n\nOpinions vary over the value of specialized bioinformatics programs. For example, Wolfe worries that such programs teach very little in each of the underlying areas. "I'm a real proponent of the fundamentals," he says. "The fundamentals are math, chemistry, and physics. With that, you've created a great foundation."\n\nSchadt believes that graduates of master's-level programs may find their career choices limited by not having a doctorate. "If you're at all passionate about the science, it's a very tough world to be in where you're at the low end of the totem pole, really servicing the scientific efforts," he says. "It's incredibly difficult to drive projects at the scientific level without having jumped through the Ph.D. hoop."\n\nNo matter what their educational background, people need to be nimble and willing to seize fast-moving opportunities. "If you're going to be in this field, it's a really dynamic field with small windows of opportunity," Wolfe says. "If you can't keep up with the Joneses and keep moving and keep learning new things, then it's not a good place to be. That's just the baggage that goes along with the fact that this field is progressing so fast and will be around for a long time."\n\nEVEN WITH THE downturn in the economy, the demand for bioinformaticists does not seem to have significantly diminished. "The field is somewhat insulated because there is still such a high demand for skilled bioinformaticists," Wolfe says. "The fact is that there is a lot of money going into genomics and proteomics these days; I assume that the demand for bioinformatics will only grow over the coming years."\n\nSchadt's experience has been that several bioinformatics companies have instituted hiring freezes. However, he says, "the bioinformatics-based groups are less affected" because "special allowances can be made to hire in hotshot types." In the short term, he says, lower level bioinformaticists will be the most affected, including people with master's or Ph.D. degrees with little or no experience.\n\n"But for any of these big companies that have a freeze on hiring, there are other big companies and smaller start-ups that are more eager than ever to pick up bioinformatics types," Schadt says. "The bottom line, I believe, is that the bioinformatics field will not feel any real pain unless the economy gets really bad."\n\nSchadt believes that the bioinformatics field will continue to be insulated from all but major economic shocks for several reasons. It is still a relatively new field, and there are not enough qualified people to fill all the positions. Plus, companies and academic centers continue to realize the need for bioinformaticists and thus create new positions.\n\nEven though the human genome has been sequenced, don't expect the need for bioinformaticists to vanish anytime soon. "I couldn't think of a better place to be in the next five to 10 years," Wolfe says. "Five years from now, people are going to look back at even the year 2000, give a little chuckle, and say, 'If these people had the data we're working with today, they could have done this, this, and this.' Ten years from now, they're going to be saying the same thing about the year 2005, let alone 2000."\n\n
Details from the Long-Term Extension of the AIM Trial\nIn an analysis of the AIM Long-Term Extension (LTE) (Kremer, et al) clinical outcomes were based on the percent of people achieving ACR 20, 50 and 70 scores (indicating a 20 percent, 50 percent and 70 percent improvement in signs and symptoms of rheumatoid arthritis, respectively) and the Disease Activity Score 28 (DAS28) based on C-Reactive Protein (CRP). Patient-reported outcomes using the Health Assessment Questionnaire Disability Index (HAQ-DI) and the Short-Form (SF-36) were also measured. The HAQ-DI was used to assess physical function. The SF-36, which measured health-related quality of life and the physical and mental component summary scores (PCS and MCS, respectively), were reported.\n\nIn the group treated with ORENCIA® (abatacept) plus MTX through two years, approximately 82 percent of patients achieved ACR 20 responses in Year 1 and 80 percent achieved ACR 20 responses in Year 2; 54 percent of patients achieved ACR 50 responses in Year 1 and 56 percent achieved ACR 50 responses in Year 2; 32 percent of patients achieved ACR 70 responses in Year 1 and 34 percent achieved ACR 70 responses in Year 2.\n\nThose who switched from placebo plus MTX to ORENCIA plus MTX at the start of the extension phase achieved similar ACR responses following one year of treatment compared with those receiving ORENCIA plus MTX for two years (ACR 20: 78 percent vs. 80 percent; ACR 50: 58 percent vs. 56 percent; and, ACR 70: 32 percent vs. 34 percent, for the 1-year of treatment vs 2-years of treatment, respectively).\n\nRates of DAS28 scores of less than 2.6 were similar at two years, regardless of initial randomization. At Year 1, 25.4 percent of patients in the ORENCIA plus MTX group achieved DAS28 scores of less than 2.6 compared to 2.5 percent in the placebo plus MTX group. By Year 2, 30.9 percent of those continuing to receive ORENCIA plus MTX achieved DAS28 scores of less than 2.6 versus 32.6 percent of patients who had been in the placebo group and then received ORENCIA plus MTX in the LTE.\n\nPatient-reported outcomes were measured using the SF-36. At Year 1 for PCS, patients in the ORENCIA plus MTX group had a mean change from baseline of 9.7 compared to 6.6 in the placebo plus MTX group. At Year 2 for PCS, patients in the ORENCIA plus MTX group had a mean change from baseline of 10.6 compared to 10.5 who had been in the placebo plus MTX group and then received ORENCIA plus MTX in the LTE.\n\nAt Year 1 for MCS, patients in the ORENCIA plus MTX group had a mean change from baseline of 7.3 compared to 6.4 in the placebo plus MTX group. At Year 2 for MCS, patients in the ORENCIA plus MTX group had a mean change from baseline of 7.2 compared to 8.3 who had been in the placebo plus MTX group and then received ORENCIA plus MTX in the LTE.\n\nImprovements in physical function of greater than or equal to 0.3 units using HAQ-DI were maintained through two years in the LTE.\n\nPatients in the initial double-blind phase of the trial received a fixed dose of ORENCIA® (abatacept) (based on weight range approximating 10mg/kg; n=433) or placebo (n=219) on Days 1, 15 and 29, and every 4 weeks thereafter, in addition to MTX, for one year. Of these enrollees, 539 individuals from both the group treated with ORENCIA and the group treated with placebo entered the open-label extension phase of the trial and were treated with a fixed dose of ORENCIA (based on weight range approximating 10 mg/kg every 4 weeks) while continuing treatment with MTX [after six months during the double-blind phase and in the long-term extension phase, adjustment of disease-modifying rheumatic drugs (DMARDs) and doses of DMARDs were allowed at the discretion of the investigator]. \n
try \nhttp://www.hiscoxcases.com/\n\nwell reviewed by \n\nhttp://www.stringsmagazine.com/issues/Strings108/cellocasesaroundtown.html\n\nHiscox\nFront and back arching give the Hhiscox Liteflite cases an extra level of protection. This British manufacturer also incorporates a specially designed aluminum valance into its cases adding notable rigidity to the outer shell. When open the case is not as malleable as many of the other ones tested—which was a welcomed trait. The bow holders are especially soft and protective, with extra padding for the tip. When closing the case, the top and bottom fit together perfectly without coaxing (again, not so with many of the cases reviewed). All of the catches, latches, and handles are riveted through the aluminum valance for enhanced longevity and durability. Hiscox promises on its website that all Hiscox Liteflite cases exhibit enough "crush strength" to support the weight of up to 90kg., or 198 lbs.—Strings tested up to 125 lbs. of pressure and found that the case withstood this weight with no damage.One of the three favorites in our online survey, the Hiscox case is a good example of lightweight durability and inventive case design at an affordable price.\nSpecifications: Hiscox Liteflite, $750 ($850 with wheels, shown at left). 12 lbs., full size. Available in charcoal, ivory, or burgundy exterior; wine or light olive interior. www.hiscoxcases.com.\n\n \n Deluxe Cello Case\n\nUsing the same world beating 'Liteflite' double moulded construction, the deluxe case has 148 sq ins of firmer cushion padding to give even greater shock absorption than our standard case. Upholstered in a luxury quality crush velour, the case is finished with 2 hand stitched leather shoulder handles.\n\nAs with the standard case, the Ivory shell is a higher specification than the Black, giving even greater impact resistance. The case includes 2 bow holders in the lid and 2 heavy duty carrying straps.\n\nInternal Dimensions\nBody Length: 787mm\nSpike Length: 80mm\nModels Available Catalogue No. Empty Weight\nBlack outer shell/wine interior OCO-LUX-W 5.6kg\nBlack outer shell/green interior OCO-LUX-G 5.6kg\nIvory outer shell/wine interior OCO-IVO-LUX-W 5.8kg\nIvory outer shell/green interior OCO-IVO-LUX-G 5.8kg\n\ngostrings has the standard case for $480.00 w/$50 coupon - really looking for the deluxe as the padding is better.\n\n\n \n\n
<html>\n<pre>\nWeekly Climatic Data for Trenton, New Jersey.\nMercer County. Elevation 95 feet. (See Bottom of Table)\n\nData is based on 1965-1995 averages. See the legend for an explanation of the table.\n\n Week Avg. Avg. Avg. Chance of Precipitation Avg. \n Beginning Max. Min. Prec. .01"+ .10"+ .50"+ 1.0"+ Snow Chance Snow\n Temp. Temp.\n ----- ---- ---- ---- ---- ---- ---- ---- ---- ----\n \n Jan 1 39 23 0.84 0.34 0.25 0.08 0.02 2.00 0.14\n Jan 8 36 20 0.78 0.31 0.23 0.07 0.03 1.44 0.12\n Jan 15 38 20 0.66 0.28 0.15 0.07 0.01 1.70 0.13\n Jan 22 40 22 0.87 0.29 0.22 0.08 0.03 1.41 0.12\n Jan 29 40 22 0.70 0.30 0.20 0.06 0.02 1.40 0.12\n Feb 5 36 19 0.56 0.25 0.17 0.06 0.01 3.40 0.16\n Feb 12 40 22 0.69 0.31 0.18 0.06 0.03 1.97 0.14\n Feb 19 45 27 0.85 0.34 0.24 0.08 0.03 2.17 0.10\n Feb 26 44 26 0.61 0.26 0.16 0.06 0.02 1.34 0.09\n March 5 47 29 0.91 0.33 0.22 0.09 0.03 1.18 0.06\n March 12 50 31 0.89 0.31 0.22 0.08 0.03 1.19 0.07\n March 19 51 32 0.87 0.32 0.24 0.08 0.03 0.65 0.05\n March 26 56 35 1.01 0.33 0.24 0.10 0.03 0.29 0.02\n April 2 57 37 1.10 0.41 0.25 0.10 0.05 0.33 0.02\n April 9 59 37 0.68 0.29 0.18 0.07 0.02 0.01 0.00\n April 16 64 42 0.83 0.30 0.21 0.09 0.02 0.03 0.00\n April 23 65 43 0.90 0.36 0.23 0.10 0.03 0.00 0.00\n April 30 67 45 0.75 0.31 0.20 0.08 0.02 0.00 0.00\n May 7 70 46 1.01 0.36 0.24 0.11 0.04 0.00 0.00\n May 14 72 50 1.10 0.44 0.28 0.10 0.04 0.00 0.00\n May 21 74 52 0.82 0.33 0.21 0.07 0.02 0.00 0.00\n May 28 77 55 1.11 0.34 0.23 0.10 0.04 0.00 0.00\n June 4 79 57 0.81 0.35 0.22 0.06 0.03 0.00 0.00\n June 11 81 58 0.77 0.29 0.18 0.06 0.04 0.00 0.00\n June 18 82 60 1.12 0.36 0.22 0.10 0.05 0.00 0.00\n June 25 83 61 0.80 0.31 0.22 0.09 0.02 0.00 0.00\n July 2 84 62 1.25 0.30 0.22 0.09 0.05 0.00 0.00\n July 9 86 64 1.00 0.30 0.21 0.10 0.04 0.00 0.00\n July 16 87 65 1.15 0.33 0.21 0.11 0.07 0.00 0.00\n July 23 85 64 1.10 0.33 0.24 0.12 0.06 0.00 0.00\n July 30 85 65 1.08 0.35 0.22 0.12 0.04 0.00 0.00\n Aug 6 84 63 1.61 0.32 0.25 0.14 0.08 0.00 0.00\n Aug 13 83 62 0.63 0.26 0.19 0.06 0.02 0.00 0.00\n Aug 20 82 59 0.94 0.28 0.21 0.08 0.04 0.00 0.00\n Aug 27 83 61 0.96 0.26 0.16 0.06 0.03 0.00 0.00\n Sept 3 80 58 0.67 0.22 0.12 0.07 0.03 0.00 0.00\n Sept 10 78 55 0.86 0.20 0.17 0.11 0.06 0.00 0.00\n Sept 17 75 54 1.25 0.34 0.26 0.11 0.03 0.00 0.00\n Sept 24 71 50 1.26 0.31 0.20 0.12 0.06 0.00 0.00\n Oct 1 70 48 0.81 0.30 0.21 0.07 0.04 0.00 0.00\n Oct 8 67 44 0.57 0.23 0.15 0.05 0.01 0.05 0.00\n Oct 15 65 42 0.93 0.27 0.17 0.09 0.04 0.03 0.00\n Oct 22 63 41 0.84 0.25 0.16 0.09 0.04 0.00 0.00\n Oct 29 61 40 0.56 0.21 0.14 0.05 0.01 0.00 0.00\n Nov 5 57 37 0.95 0.29 0.20 0.09 0.05 0.00 0.00\n Nov 12 53 35 0.97 0.30 0.18 0.09 0.04 0.01 0.01\n Nov 19 52 33 0.79 0.24 0.16 0.09 0.04 0.20 0.00\n Nov 26 50 32 1.04 0.35 0.25 0.09 0.06 0.45 0.04\n Dec 3 47 29 0.95 0.30 0.20 0.11 0.04 0.26 0.05\n Dec 10 44 28 1.03 0.33 0.23 0.10 0.04 0.83 0.06\n Dec 17 41 25 0.83 0.30 0.23 0.08 0.04 0.98 0.10\n Dec 24 40 24 0.65 0.30 0.18 0.06 0.03 1.46 0.10\n\nHightstown weather data used in the absence of data for Trenton. \n\n\n TABLE LEGEND\n\nAvg. Max. Temp. = Average Maximum Temperature for the week\nAvg. Min. Temp. = Average Minimum Temperature for the week\nAvg. Precip. = Average Precipitation for the week\nChance of Precipitation = The chance of the given amount of precipitation falling\n on a given day of the week ([VALUE] * 100 = percent)\nAvg. Snow = Average Snowfall for the week\nChance Snow = The chance of measurable snow (.1" or greater) on\n a given day of the week ([VALUE] * 100 = percent)\n\n\nThe information presented on this page was assembled by Morton Winsberg at \nFlorida State University's Department of Geography.\n\nBackHome\n\n</pre>\n</html>\n
Dead [[Motorola]] V551 phone - drops calls after 5 minutes, like clockwork.\nFirst one (brand new) did this out of the box.\nImmediately replaced with refurbished one, lasted 14 months (out of warranty) and does it again!\nCingular says too bad - will give discount on phone upgrade but restarts 2 year committment.\n\nCingular sucks.\n\ncustomer service 800 331 0500\nwarranty service 800 801 1101\n
After months of searching and about 6 months with the pieces, I think they may be the best modern leather sofas in the world.\n\nhttp://www.collezionedivani.com/index.html\n\nAlso take a look at [[Kler]]
/***\nJust some bits and pieces\n***/\n//{{{\nconfig.messages.messageClose.text = "X"; // default is "close"\nconfig.views.wikified.defaultText = ""; // default is "The tiddler '%0' doesn't yet exist. Double-click to create it"\nconfig.options.chkHttpReadOnly = false; // Enable editing so that visitors can experiment with it\n//}}}
You can reach me with username ''nosweb4'', at this domain, ''fiveprime.org''.
http://www.moderncollections.com/index.asp?PageAction=VIEWPROD&ProdID=51\n
Topics\nJournal\n
To Disable The Notification Area Balloon Tips\nWarning If you use Registry Editor incorrectly, you may cause serious problems that may require you to reinstall your operating system. Microsoft cannot guarantee that you can solve problems that result from using Registry Editor incorrectly. Use Registry Editor at your own risk.1. Click Start, click Run, type regedit, and then press ENTER. \n2. Navigate to the following subkey:\nHKEY_CURRENT_USER\sSoftware\sMicrosoft\sWindows\sCurrentVersion\sExplorer\sAdvanced \n3. Right-click the right pane, create a new DWORD value, and then name it EnableBalloonTips. \n4. Double-click this new entry, and then give it a hexadecimal value of 0. \n5. Quit Registry Editor. Log off Windows, and then log back on. \nThese steps disable all Notification Area balloon tips for this user. There is no way to disable balloon tips for specific programs only.\n\n\n
Bristol-Myers Squibb awarded its former chief executive, Peter R. Dolan, a $1.2 million severance payment plus enhanced pension benefits worth about $9.5 million in today’s dollars, the company disclosed yesterday to the Securities and Exchange Commission.\n\n
<!---\n| Name:|~TagglyTaggingEditTemplate |\n| Version:|1.1 (12-Jan-2006)|\n| Source:|http://simonbaird.com/mptw/#TagglyTaggingEditTemplate|\n| Purpose:|See TagglyTagging for more info|\n| Requires:|You need the CSS in TagglyTaggingStyles to make it look right|\n--->\n<!--{{{-->\n<div class="toolbar" macro="toolbar +saveTiddler closeOthers cancelTiddler deleteTiddler"></div>\n<div class="title" macro="view title"></div>\n<div class="editLabel">Title</div><div class="editor" macro="edit title"></div>\n<div class="editLabel">Tags</div><div class="editor" macro="edit tags"></div>\n<div class="editorFooter"><span macro="message views.editor.tagPrompt"></span><span macro="tagChooser"></span></div>\n<div class="editor" macro="edit text"></div>\n<br/>\n<!--}}}-->
Montgomery County - Charles Tilford has 40 years of experience as a physicist.\n\nBut even with his well above-average technical competency, the longtime Montgomery County resident says the electronic poll books — made so famous during September’s bungled primaries — are baffling and extremely complicated.\n\n“I was completely frustrated trying to get the cards out, and that was at the end of an 18-hour day,†he said. “ Even if you brought in a bunch of graduate students, they’d have trouble. They’ve made the system so complex that for anyone to use it is just impossible.â€\n\nTilford is just one a number of election judges who, in written correspondences obtained by The Examiner and in phone interviews, have expressed deep worry that — in spite of assurances from election officials — Tuesday’s voting will be far from smooth.\n\n“Expect near-death experiences†was the warning Tilford actually used in an Oct. 9 e-mail to Montgomery County elections administrators about the general election.\n\nAnd on Friday, he told The Examiner he’s sticking by his harsh prediction.\n\nHis anxieties notwithstanding, Tilford will be an election judge Tuesday. Yet in e-mail after e-mail, dozens of past poll workers expressed such distrust in the process and training that they quit.\n\nRetired United State Air Force Col. John Moser, of Rockville, an election judge since 1984, said in a letter to Elections Director Margaret Jurgensen that he refused to “continue my association with a program that is incapable of managing its mission.â€\n\n“I have just come home from an 18 1/2 hour day, due primarily to your staff and their incompetence ... You make a mockery of serving the community,†he wrote.\n\nEven weeks after Jurgensen released a corrective action plan, complaints from election workers were still coming in, as in a memorandum sent by chief judge Peter Hartogensis, who voiced a common complaint that election judges are being worked too hard.\n\n“It is no wonder you have such trouble recruiting judges,†he wrote. “We do not allow other workers in our society to work such hours.â€\n\nPart of the Washington DC Examiner's 2006 election coverage.\ndlevitz@dcexaminer.com
Election quote of the day\nFrom Warren Ellis's BAD SIGNAL mailing list: "Karl Rove is not Aleister Crowley, Severus Snape, Darth Vader or Satan. You can kill him by ensuring your vote is counted and being vigilant at your polling station."\n\n\n
The MainMenu on the left is now getting dynamically produced from a series of tiddlers. [[Log Entries]] has this behavior too, sorted by creation date of course. Check the source for details and the ForEachTiddlerPlugin.
2009 update - this has largely died down, I still see activity about once a month.\n\nSpam is getting sent over the internet with Fiveprime.org return addresses.\nBad!\nI am monitoring the situation using security tools and see no compromise of the domain nor any outgoing mail traffic due to bad relay configurations.\n\nThe mail is not coming from me, sorry.
[[Flickr|http://www.flickr.com]]
<html><iframe style="background-color:#ffffff; border-color:#ffffff; border:none;" width="113" height="151" frameborder="0" scrolling="no" src="http://www.flickr.com/apps/badge/badge_iframe.gne?zg_bg_color=ffffff&zg_person_id=77316550%40N00" title="Flickr Badge"></iframe> </html>
<html>Flickr Search:<b/><form action="http://www.fiveprime.org/flickr_hvmnd.cgi" target="flickrsearch"><input name=textinput><input type=hidden name="search_type" value="Text"><input name="search_type" type=submit value="Search"></form></html>\n
I've been working on a [[Flickr|http://www.flickr.com]] search tool - it's up and powerful in terms of minimizing web paging.\n\nGive it a try: [[Flickr Hive Mind|http://www.fiveprime.org/flickr_hvmnd.cgi]]\n\nUpdate - that little Flickr Search on the left menu column is now enabled to use the Flickr Hive Mind tool.\n
<html><a href="http://flickr.com/photos/77316550@N00/"><img src="http://bighugelabs.com/flickr/profilewidget/interesting/000000/ffffff/77316550@N00.jpg" border="0" alt="nosha. Get yours at bighugelabs.com/flickr" title="nosha. Get yours at bighugelabs.com/flickr" /></a></html>
/***\n|''Name:''|ForEachTiddlerPlugin|\n|''Version:''|1.0.5 (2006-02-05)|\n|''Source:''|http://tiddlywiki.abego-software.de/#ForEachTiddlerPlugin|\n|''Author:''|UdoBorkowski (ub [at] abego-software [dot] de)|\n|''Licence:''|[[BSD open source license]]|\n|''Macros:''|[[ForEachTiddlerMacro]] v1.0.5|\n|''TiddlyWiki:''|1.2.38+, 2.0|\n|''Browser:''|Firefox 1.0.4+; Firefox 1.5; InternetExplorer 6.0|\n!Description\n\nCreate customizable lists, tables etc. for your selections of tiddlers. Specify the tiddlers to include and their order through a powerful language.\n\n''Syntax:'' \n|>|{{{<<}}}''forEachTiddler'' [''in'' //tiddlyWikiPath//] [''where'' //whereCondition//] [''sortBy'' //sortExpression// [''ascending'' //or// ''descending'']] [''script'' //scriptText//] [//action// [//actionParameters//]]{{{>>}}}|\n|//tiddlyWikiPath//|The filepath to the TiddlyWiki the macro should work on. When missing the current TiddlyWiki is used.|\n|//whereCondition//|(quoted) JavaScript boolean expression. May refer to the build-in variables {{{tiddler}}} and {{{context}}}.|\n|//sortExpression//|(quoted) JavaScript expression returning "comparable" objects (using '{{{<}}}','{{{>}}}','{{{==}}}'. May refer to the build-in variables {{{tiddler}}} and {{{context}}}.|\n|//scriptText//|(quoted) JavaScript text. Typically defines JavaScript functions that are called by the various JavaScript expressions (whereClause, sortClause, action arguments,...)|\n|//action//|The action that should be performed on every selected tiddler, in the given order. By default the actions [[addToList|AddToListAction]] and [[write|WriteAction]] are supported. When no action is specified [[addToList|AddToListAction]] is used.|\n|//actionParameters//|(action specific) parameters the action may refer while processing the tiddlers (see action descriptions for details). <<tiddler [[JavaScript in actionParameters]]>>|\n|>|~~Syntax formatting: Keywords in ''bold'', optional parts in [...]. 'or' means that exactly one of the two alternatives must exist.~~|\n\nSee details see [[ForEachTiddlerMacro]] and [[ForEachTiddlerExamples]].\n\n!Revision history\n* v1.0.5\n** Pass tiddler containing the macro with wikify, context object also holds reference to tiddler containing the macro ("inTiddler"). Thanks to SimonBaird.\n** Support Firefox 1.5.0.1\n** Internal\n*** Make "JSLint" conform\n*** "Only install once"\n* v1.0.4 (2006-01-06)\n** Support TiddlyWiki 2.0\n* v1.0.3 (2005-12-22)\n** Features: \n*** Write output to a file supports multi-byte environments (Thanks to Bram Chen) \n*** Provide API to access the forEachTiddler functionality directly through JavaScript (see getTiddlers and performMacro)\n** Enhancements:\n*** Improved error messages on InternetExplorer.\n* v1.0.2 (2005-12-10)\n** Features: \n*** context object also holds reference to store (TiddlyWiki)\n** Fixed Bugs: \n*** ForEachTiddler 1.0.1 has broken support on win32 Opera 8.51 (Thanks to BrunoSabin for reporting)\n* v1.0.1 (2005-12-08)\n** Features: \n*** Access tiddlers stored in separated TiddlyWikis through the "in" option. I.e. you are no longer limited to only work on the "current TiddlyWiki".\n*** Write output to an external file using the "toFile" option of the "write" action. With this option you may write your customized tiddler exports.\n*** Use the "script" section to define "helper" JavaScript functions etc. to be used in the various JavaScript expressions (whereClause, sortClause, action arguments,...).\n*** Access and store context information for the current forEachTiddler invocation (through the build-in "context" object) .\n*** Improved script evaluation (for where/sort clause and write scripts).\n* v1.0.0 (2005-11-20)\n** initial version\n\n!Code\n***/\n//{{{\n\n \n//============================================================================\n//============================================================================\n// ForEachTiddlerPlugin\n//============================================================================\n//============================================================================\n\n// Only install once\nif (!version.extensions.ForEachTiddlerPlugin) {\n\nversion.extensions.ForEachTiddlerPlugin = {major: 1, minor: 0, revision: 5, date: new Date(2006,2,5), source: "http://tiddlywiki.abego-software.de/#ForEachTiddlergPlugin"};\n\n// For backward compatibility with TW 1.2.x\n//\nif (!TiddlyWiki.prototype.forEachTiddler) {\n TiddlyWiki.prototype.forEachTiddler = function(callback) {\n for(var t in this.tiddlers) {\n callback.call(this,t,this.tiddlers[t]);\n }\n };\n}\n\n//============================================================================\n// forEachTiddler Macro\n//============================================================================\n\nversion.extensions.forEachTiddler = {major: 1, minor: 0, revision: 5, date: new Date(2006,2,5), provider: "http://tiddlywiki.abego-software.de"};\n\n// ---------------------------------------------------------------------------\n// Configurations and constants \n// ---------------------------------------------------------------------------\n\nconfig.macros.forEachTiddler = {\n // Standard Properties\n label: "forEachTiddler",\n prompt: "Perform actions on a (sorted) selection of tiddlers",\n\n // actions\n actions: {\n addToList: {},\n write: {}\n }\n};\n\n// ---------------------------------------------------------------------------\n// The forEachTiddler Macro Handler \n// ---------------------------------------------------------------------------\n\nconfig.macros.forEachTiddler.getContainingTiddler = function(e) {\n while(e && !hasClass(e,"tiddler"))\n e = e.parentNode;\n var title = e ? e.getAttribute("tiddler") : null; \n return title ? store.getTiddler(title) : null;\n};\n\nconfig.macros.forEachTiddler.handler = function(place,macroName,params,wikifier,paramString,tiddler) {\n // config.macros.forEachTiddler.traceMacroCall(place,macroName,params,wikifier,paramString,tiddler);\n\n if (!tiddler) tiddler = config.macros.forEachTiddler.getContainingTiddler(place);\n // --- Parsing ------------------------------------------\n\n var i = 0; // index running over the params\n // Parse the "in" clause\n var tiddlyWikiPath = undefined;\n if ((i < params.length) && params[i] == "in") {\n i++;\n if (i >= params.length) {\n this.handleError(place, "TiddlyWiki path expected behind 'in'.");\n return;\n }\n tiddlyWikiPath = this.paramEncode((i < params.length) ? params[i] : "");\n i++;\n }\n\n // Parse the where clause\n var whereClause ="true";\n if ((i < params.length) && params[i] == "where") {\n i++;\n whereClause = this.paramEncode((i < params.length) ? params[i] : "");\n i++;\n }\n\n // Parse the sort stuff\n var sortClause = null;\n var sortAscending = true; \n if ((i < params.length) && params[i] == "sortBy") {\n i++;\n if (i >= params.length) {\n this.handleError(place, "sortClause missing behind 'sortBy'.");\n return;\n }\n sortClause = this.paramEncode(params[i]);\n i++;\n\n if ((i < params.length) && (params[i] == "ascending" || params[i] == "descending")) {\n sortAscending = params[i] == "ascending";\n i++;\n }\n }\n\n // Parse the script\n var scriptText = null;\n if ((i < params.length) && params[i] == "script") {\n i++;\n scriptText = this.paramEncode((i < params.length) ? params[i] : "");\n i++;\n }\n\n // Parse the action. \n // When we are already at the end use the default action\n var actionName = "addToList";\n if (i < params.length) {\n if (!config.macros.forEachTiddler.actions[params[i]]) {\n this.handleError(place, "Unknown action '"+params[i]+"'.");\n return;\n } else {\n actionName = params[i]; \n i++;\n }\n } \n \n // Get the action parameter\n // (the parsing is done inside the individual action implementation.)\n var actionParameter = params.slice(i);\n\n\n // --- Processing ------------------------------------------\n try {\n this.performMacro({\n place: place, \n inTiddler: tiddler,\n whereClause: whereClause, \n sortClause: sortClause, \n sortAscending: sortAscending, \n actionName: actionName, \n actionParameter: actionParameter, \n scriptText: scriptText, \n tiddlyWikiPath: tiddlyWikiPath});\n\n } catch (e) {\n this.handleError(place, e);\n }\n};\n\n// Returns an object with properties "tiddlers" and "context".\n// tiddlers holds the (sorted) tiddlers selected by the parameter,\n// context the context of the execution of the macro.\n//\n// The action is not yet performed.\n//\n// @parameter see performMacro\n//\nconfig.macros.forEachTiddler.getTiddlersAndContext = function(parameter) {\n\n var context = config.macros.forEachTiddler.createContext(parameter.place, parameter.whereClause, parameter.sortClause, parameter.sortAscending, parameter.actionName, parameter.actionParameter, parameter.scriptText, parameter.tiddlyWikiPath, parameter.inTiddler);\n\n var tiddlyWiki = parameter.tiddlyWikiPath ? this.loadTiddlyWiki(parameter.tiddlyWikiPath) : store;\n context["tiddlyWiki"] = tiddlyWiki;\n \n // Get the tiddlers, as defined by the whereClause\n var tiddlers = this.findTiddlers(parameter.whereClause, context, tiddlyWiki);\n context["tiddlers"] = tiddlers;\n\n // Sort the tiddlers, when sorting is required.\n if (parameter.sortClause) {\n this.sortTiddlers(tiddlers, parameter.sortClause, parameter.sortAscending, context);\n }\n\n return {tiddlers: tiddlers, context: context};\n};\n\n// Returns the (sorted) tiddlers selected by the parameter.\n//\n// The action is not yet performed.\n//\n// @parameter see performMacro\n//\nconfig.macros.forEachTiddler.getTiddlers = function(parameter) {\n return this.getTiddlersAndContext(parameter).tiddlers;\n};\n\n// Performs the macros with the given parameter.\n//\n// @param parameter holds the parameter of the macro as separate properties.\n// The following properties are supported:\n//\n// place\n// whereClause\n// sortClause\n// sortAscending\n// actionName\n// actionParameter\n// scriptText\n// tiddlyWikiPath\n//\n// All properties are optional. \n// For most actions the place property must be defined.\n//\nconfig.macros.forEachTiddler.performMacro = function(parameter) {\n var tiddlersAndContext = this.getTiddlersAndContext(parameter);\n\n // Perform the action\n var actionName = parameter.actionName ? parameter.actionName : "addToList";\n var action = config.macros.forEachTiddler.actions[actionName];\n if (!action) {\n this.handleError(parameter.place, "Unknown action '"+actionName+"'.");\n return;\n }\n\n var actionHandler = action.handler;\n actionHandler(parameter.place, tiddlersAndContext.tiddlers, parameter.actionParameter, tiddlersAndContext.context);\n};\n\n// ---------------------------------------------------------------------------\n// The actions \n// ---------------------------------------------------------------------------\n\n// Internal.\n//\n// --- The addToList Action -----------------------------------------------\n//\nconfig.macros.forEachTiddler.actions.addToList.handler = function(place, tiddlers, parameter, context) {\n // Parse the parameter\n var p = 0;\n\n // Check for extra parameters\n if (parameter.length > p) {\n config.macros.forEachTiddler.createExtraParameterErrorElement(place, "addToList", parameter, p);\n return;\n }\n\n // Perform the action.\n var list = document.createElement("ul");\n place.appendChild(list);\n for (var i = 0; i < tiddlers.length; i++) {\n var tiddler = tiddlers[i];\n var listItem = document.createElement("li");\n list.appendChild(listItem);\n createTiddlyLink(listItem, tiddler.title, true);\n }\n};\n\n// Internal.\n//\n// --- The write Action ---------------------------------------------------\n//\nconfig.macros.forEachTiddler.actions.write.handler = function(place, tiddlers, parameter, context) {\n // Parse the parameter\n var p = 0;\n if (p >= parameter.length) {\n this.handleError(place, "Missing expression behind 'write'.");\n return;\n }\n\n var textExpression = config.macros.forEachTiddler.paramEncode(parameter[p]);\n p++;\n\n // Parse the "toFile" option\n var filename = null;\n var lineSeparator = undefined;\n if ((p < parameter.length) && parameter[p] == "toFile") {\n p++;\n if (p >= parameter.length) {\n this.handleError(place, "Filename expected behind 'toFile' of 'write' action.");\n return;\n }\n \n filename = config.macros.forEachTiddler.getLocalPath(config.macros.forEachTiddler.paramEncode(parameter[p]));\n p++;\n if ((p < parameter.length) && parameter[p] == "withLineSeparator") {\n p++;\n if (p >= parameter.length) {\n this.handleError(place, "Line separator text expected behind 'withLineSeparator' of 'write' action.");\n return;\n }\n lineSeparator = config.macros.forEachTiddler.paramEncode(parameter[p]);\n p++;\n }\n }\n \n // Check for extra parameters\n if (parameter.length > p) {\n config.macros.forEachTiddler.createExtraParameterErrorElement(place, "write", parameter, p);\n return;\n }\n\n // Perform the action.\n var func = config.macros.forEachTiddler.getEvalTiddlerFunction(textExpression, context);\n var count = tiddlers.length;\n var text = "";\n for (var i = 0; i < count; i++) {\n var tiddler = tiddlers[i];\n text += func(tiddler, context, count, i);\n }\n \n if (filename) {\n if (lineSeparator !== undefined) {\n lineSeparator = lineSeparator.replace(/\s\sn/mg, "\sn").replace(/\s\sr/mg, "\sr");\n text = text.replace(/\sn/mg,lineSeparator);\n }\n saveFile(filename, convertUnicodeToUTF8(text));\n } else {\n var wrapper = createTiddlyElement(place, "span");\n wikify(text, wrapper, null/* highlightRegExp */, context.inTiddler);\n }\n};\n\n\n// ---------------------------------------------------------------------------\n// Helpers\n// ---------------------------------------------------------------------------\n\n// Internal.\n//\nconfig.macros.forEachTiddler.createContext = function(placeParam, whereClauseParam, sortClauseParam, sortAscendingParam, actionNameParam, actionParameterParam, scriptText, tiddlyWikiPathParam, inTiddlerParam) {\n return {\n place : placeParam, \n whereClause : whereClauseParam, \n sortClause : sortClauseParam, \n sortAscending : sortAscendingParam, \n script : scriptText,\n actionName : actionNameParam, \n actionParameter : actionParameterParam,\n tiddlyWikiPath : tiddlyWikiPathParam,\n inTiddler : inTiddlerParam\n };\n};\n\n// Internal.\n//\n// Returns a TiddlyWiki with the tiddlers loaded from the TiddlyWiki of \n// the given path.\n//\nconfig.macros.forEachTiddler.loadTiddlyWiki = function(path, idPrefix) {\n if (!idPrefix) {\n idPrefix = "store";\n }\n var lenPrefix = idPrefix.length;\n \n // Read the content of the given file\n var content = loadFile(this.getLocalPath(path));\n if(content === null) {\n throw "TiddlyWiki '"+path+"' not found.";\n }\n \n // Locate the storeArea div's\n var posOpeningDiv = content.indexOf(startSaveArea);\n var posClosingDiv = content.lastIndexOf(endSaveArea);\n if((posOpeningDiv == -1) || (posClosingDiv == -1)) {\n throw "File '"+path+"' is not a TiddlyWiki.";\n }\n var storageText = content.substr(posOpeningDiv + startSaveArea.length, posClosingDiv);\n \n // Create a "div" element that contains the storage text\n var myStorageDiv = document.createElement("div");\n myStorageDiv.innerHTML = storageText;\n myStorageDiv.normalize();\n \n // Create all tiddlers in a new TiddlyWiki\n // (following code is modified copy of TiddlyWiki.prototype.loadFromDiv)\n var tiddlyWiki = new TiddlyWiki();\n var store = myStorageDiv.childNodes;\n for(var t = 0; t < store.length; t++) {\n var e = store[t];\n var title = null;\n if(e.getAttribute)\n title = e.getAttribute("tiddler");\n if(!title && e.id && e.id.substr(0,lenPrefix) == idPrefix)\n title = e.id.substr(lenPrefix);\n if(title && title !== "") {\n var tiddler = tiddlyWiki.createTiddler(title);\n tiddler.loadFromDiv(e,title);\n }\n }\n tiddlyWiki.dirty = false;\n\n return tiddlyWiki;\n};\n\n\n \n// Internal.\n//\n// Returns a function that has a function body returning the given javaScriptExpression.\n// The function has the parameters:\n// \n// (tiddler, context, count, index)\n//\nconfig.macros.forEachTiddler.getEvalTiddlerFunction = function (javaScriptExpression, context) {\n var script = context["script"];\n var functionText = "var theFunction = function(tiddler, context, count, index) { return "+javaScriptExpression+"}";\n var fullText = (script ? script+";" : "")+functionText+";theFunction;";\n return eval(fullText);\n};\n\n// Internal.\n//\nconfig.macros.forEachTiddler.findTiddlers = function(whereClause, context, tiddlyWiki) {\n var result = [];\n var func = config.macros.forEachTiddler.getEvalTiddlerFunction(whereClause, context);\n tiddlyWiki.forEachTiddler(function(title,tiddler) {\n if (func(tiddler, context, undefined, undefined)) {\n result.push(tiddler);\n }\n });\n return result;\n};\n\n// Internal.\n//\nconfig.macros.forEachTiddler.createExtraParameterErrorElement = function(place, actionName, parameter, firstUnusedIndex) {\n var message = "Extra parameter behind '"+actionName+"':";\n for (var i = firstUnusedIndex; i < parameter.length; i++) {\n message += " "+parameter[i];\n }\n this.handleError(place, message);\n};\n\n// Internal.\n//\nconfig.macros.forEachTiddler.sortAscending = function(tiddlerA, tiddlerB) {\n var result = \n (tiddlerA.forEachTiddlerSortValue == tiddlerB.forEachTiddlerSortValue) \n ? 0\n : (tiddlerA.forEachTiddlerSortValue < tiddlerB.forEachTiddlerSortValue)\n ? -1 \n : +1; \n return result;\n};\n\n// Internal.\n//\nconfig.macros.forEachTiddler.sortDescending = function(tiddlerA, tiddlerB) {\n var result = \n (tiddlerA.forEachTiddlerSortValue == tiddlerB.forEachTiddlerSortValue) \n ? 0\n : (tiddlerA.forEachTiddlerSortValue < tiddlerB.forEachTiddlerSortValue)\n ? +1 \n : -1; \n return result;\n};\n\n// Internal.\n//\nconfig.macros.forEachTiddler.sortTiddlers = function(tiddlers, sortClause, ascending, context) {\n // To avoid evaluating the sortClause whenever two items are compared \n // we pre-calculate the sortValue for every item in the array and store it in a \n // temporary property ("forEachTiddlerSortValue") of the tiddlers.\n var func = config.macros.forEachTiddler.getEvalTiddlerFunction(sortClause, context);\n var count = tiddlers.length;\n var i;\n for (i = 0; i < count; i++) {\n var tiddler = tiddlers[i];\n tiddler.forEachTiddlerSortValue = func(tiddler,context, undefined, undefined);\n }\n\n // Do the sorting\n tiddlers.sort(ascending ? this.sortAscending : this.sortDescending);\n\n // Delete the temporary property that holds the sortValue. \n for (i = 0; i < tiddlers.length; i++) {\n delete tiddlers[i].forEachTiddlerSortValue;\n }\n};\n\n\n// Internal.\n//\nconfig.macros.forEachTiddler.trace = function(message) {\n displayMessage(message);\n};\n\n// Internal.\n//\nconfig.macros.forEachTiddler.traceMacroCall = function(place,macroName,params) {\n var message ="<<"+macroName;\n for (var i = 0; i < params.length; i++) {\n message += " "+params[i];\n }\n message += ">>";\n displayMessage(message);\n};\n\n\n// Internal.\n//\n// Creates an element that holds an error message\n// \nconfig.macros.forEachTiddler.createErrorElement = function(place, exception) {\n var message = (exception.description) ? exception.description : exception.toString();\n return createTiddlyElement(place,"span",null,"forEachTiddlerError","<<forEachTiddler ...>>: "+message);\n};\n\n// Internal.\n//\n// @param place [may be null]\n//\nconfig.macros.forEachTiddler.handleError = function(place, exception) {\n if (place) {\n this.createErrorElement(place, exception);\n } else {\n throw exception;\n }\n};\n\n// Internal.\n//\n// Encodes the given string.\n//\n// Replaces \n// "$))" to ">>"\n// "$)" to ">"\n//\nconfig.macros.forEachTiddler.paramEncode = function(s) {\n var reGTGT = new RegExp("\s\s$\s\s)\s\s)","mg");\n var reGT = new RegExp("\s\s$\s\s)","mg");\n return s.replace(reGTGT, ">>").replace(reGT, ">");\n};\n\n// Internal.\n//\n// Returns the given original path (that is a file path, starting with "file:")\n// as a path to a local file, in the systems native file format.\n//\n// Location information in the originalPath (i.e. the "#" and stuff following)\n// is stripped.\n// \nconfig.macros.forEachTiddler.getLocalPath = function(originalPath) {\n // Remove any location part of the URL\n var hashPos = originalPath.indexOf("#");\n if(hashPos != -1)\n originalPath = originalPath.substr(0,hashPos);\n // Convert to a native file format assuming\n // "file:///x:/path/path/path..." - pc local file --> "x:\spath\spath\spath..."\n // "file://///server/share/path/path/path..." - FireFox pc network file --> "\s\sserver\sshare\spath\spath\spath..."\n // "file:///path/path/path..." - mac/unix local file --> "/path/path/path..."\n // "file://server/share/path/path/path..." - pc network file --> "\s\sserver\sshare\spath\spath\spath..."\n var localPath;\n if(originalPath.charAt(9) == ":") // pc local file\n localPath = unescape(originalPath.substr(8)).replace(new RegExp("/","g"),"\s\s");\n else if(originalPath.indexOf("file://///") === 0) // FireFox pc network file\n localPath = "\s\s\s\s" + unescape(originalPath.substr(10)).replace(new RegExp("/","g"),"\s\s");\n else if(originalPath.indexOf("file:///") === 0) // mac/unix local file\n localPath = unescape(originalPath.substr(7));\n else if(originalPath.indexOf("file:/") === 0) // mac/unix local file\n localPath = unescape(originalPath.substr(5));\n else // pc network file\n localPath = "\s\s\s\s" + unescape(originalPath.substr(7)).replace(new RegExp("/","g"),"\s\s"); \n return localPath;\n};\n\n// ---------------------------------------------------------------------------\n// Stylesheet Extensions (may be overridden by local StyleSheet)\n// ---------------------------------------------------------------------------\n//\nsetStylesheet(\n ".forEachTiddlerError{color: #ffffff;background-color: #880000;}",\n "forEachTiddler");\n\n//============================================================================\n// End of forEachTiddler Macro\n//============================================================================\n\n\n//============================================================================\n// String.startsWith Function\n//============================================================================\n//\n// Returns true if the string starts with the given prefix, false otherwise.\n//\nversion.extensions["String.startsWith"] = {major: 1, minor: 0, revision: 0, date: new Date(2005,11,20), provider: "http://tiddlywiki.abego-software.de"};\n//\nString.prototype.startsWith = function(prefix) {\n var n = prefix.length;\n return (this.length >= n) && (this.slice(0, n) == prefix);\n};\n\n\n\n//============================================================================\n// String.endsWith Function\n//============================================================================\n//\n// Returns true if the string ends with the given suffix, false otherwise.\n//\nversion.extensions["String.endsWith"] = {major: 1, minor: 0, revision: 0, date: new Date(2005,11,20), provider: "http://tiddlywiki.abego-software.de"};\n//\nString.prototype.endsWith = function(suffix) {\n var n = suffix.length;\n return (this.length >= n) && (this.right(n) == suffix);\n};\n\n\n//============================================================================\n// String.contains Function\n//============================================================================\n//\n// Returns true when the string contains the given substring, false otherwise.\n//\nversion.extensions["String.contains"] = {major: 1, minor: 0, revision: 0, date: new Date(2005,11,20), provider: "http://tiddlywiki.abego-software.de"};\n//\nString.prototype.contains = function(substring) {\n return this.indexOf(substring) >= 0;\n};\n\n//============================================================================\n// Array.indexOf Function\n//============================================================================\n//\n// Returns the index of the first occurance of the given item in the array or \n// -1 when no such item exists.\n//\n// @param item [may be null]\n//\nversion.extensions["Array.indexOf"] = {major: 1, minor: 0, revision: 0, date: new Date(2005,11,20), provider: "http://tiddlywiki.abego-software.de"};\n//\nArray.prototype.indexOf = function(item) {\n for (var i = 0; i < this.length; i++) {\n if (this[i] == item) {\n return i;\n }\n }\n return -1;\n};\n\n//============================================================================\n// Array.contains Function\n//============================================================================\n//\n// Returns true when the array contains the given item, otherwise false. \n//\n// @param item [may be null]\n//\nversion.extensions["Array.contains"] = {major: 1, minor: 0, revision: 0, date: new Date(2005,11,20), provider: "http://tiddlywiki.abego-software.de"};\n//\nArray.prototype.contains = function(item) {\n return (this.indexOf(item) >= 0);\n};\n\n//============================================================================\n// Array.containsAny Function\n//============================================================================\n//\n// Returns true when the array contains at least one of the elements \n// of the item. Otherwise (or when items contains no elements) false is returned.\n//\nversion.extensions["Array.containsAny"] = {major: 1, minor: 0, revision: 0, date: new Date(2005,11,20), provider: "http://tiddlywiki.abego-software.de"};\n//\nArray.prototype.containsAny = function(items) {\n for(var i = 0; i < items.length; i++) {\n if (this.contains(items[i])) {\n return true;\n }\n }\n return false;\n};\n\n\n//============================================================================\n// Array.containsAll Function\n//============================================================================\n//\n// Returns true when the array contains all the items, otherwise false.\n// \n// When items is null false is returned (even if the array contains a null).\n//\n// @param items [may be null] \n//\nversion.extensions["Array.containsAll"] = {major: 1, minor: 0, revision: 0, date: new Date(2005,11,20), provider: "http://tiddlywiki.abego-software.de"};\n//\nArray.prototype.containsAll = function(items) {\n for(var i = 0; i < items.length; i++) {\n if (!this.contains(items[i])) {\n return false;\n }\n }\n return true;\n};\n\n\n} // of "install only once"\n\n// Used Globals (for JSLint) ==============\n// ... DOM\n/*global document */\n// ... TiddlyWiki Core\n/*global convertUnicodeToUTF8, createTiddlyElement, createTiddlyLink, \n displayMessage, endSaveArea, hasClass, loadFile, saveFile, \n startSaveArea, store, wikify */\n//}}}\n\n\n/***\n!Licence and Copyright\nCopyright (c) abego Software ~GmbH, 2005 ([[www.abego-software.de|http://www.abego-software.de]])\n\nRedistribution and use in source and binary forms, with or without modification,\nare permitted provided that the following conditions are met:\n\nRedistributions of source code must retain the above copyright notice, this\nlist of conditions and the following disclaimer.\n\nRedistributions in binary form must reproduce the above copyright notice, this\nlist of conditions and the following disclaimer in the documentation and/or other\nmaterials provided with the distribution.\n\nNeither the name of abego Software nor the names of its contributors may be\nused to endorse or promote products derived from this software without specific\nprior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY\nEXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\nOF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT\nSHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\nINCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED\nTO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR\nBUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\nCONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\nANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH\nDAMAGE.\n***/\n\n
\n\n[img[Fort Myers Beach|http://static.flickr.com/31/62019696_50726917ec.jpg?v=0][http://flickr.com/photos/nosha/62019696/in/set-1340174/]\n\n
Sally Ryan for The New York Times\nCulling Embryos to Halt Heritage of Cancer\n\nA growing number of couples are screening embryos to detect a predisposition to cancers. Chad Kingsbury and his wife used genetic testing when conceiving their daughter, Chloe. \n
[[Get Rid of That Idiot|http://www.getridofthatidiot.com]]
Welcome to your brand new [[MonkeyPirateTiddlyWiki|http://simonbaird.com/mptw/]]. This is the standard empty [[TiddlyWiki|http://www.tiddlywiki.com/]] (version <<version>>) preconfigured with a few bits and pieces from MPTW, in particular the layout, the colours, and the popular [[TagglyTagging|http://simonbaird.com/mptw/#TagglyTagging]]. If you're new to ~TagglyTagging then try the (slightly out-of-date) [[FAQ|http://simonbaird.com/mptw1/#TagglyTaggingFAQ]] and [[Tutorial|http://simonbaird.com/mptw1/#TagglyTaggingTutorial]].\n\nTo get started with this blank TiddlyWiki, you'll need to modify the following tiddlers:\n* SiteTitle & SiteSubtitle: The title and subtitle of the site, as shown above (after saving, they will also appear in the browser title bar)\n* MainMenu: The menu (usually on the left)\n* DefaultTiddlers: Contains the names of the tiddlers that you want to appear when the TiddlyWiki is opened\nYou'll also need to enter your username for signing your edits: <<option txtUserName>>\n\nTo create your own tiddlers, click 'new tiddler' in the right sidebar. To edit a tiddler click the 'edit' button in the tiddler's toolbar. To save all your tiddlers click 'save changes' in the right sidebar. If you're new to TiddlyWiki check out the formatting info [[here|http://www.tiddlywiki.com/#MainFeatures]].\n\nUse this to import tiddlers from another TiddlyWiki. You can use a local file (click Browse...) or type the url of an online TiddlyWiki.\n<<importTiddlers inline>>\nTo change your colour scheme you can edit the styles in StyleSheet. (Refer to StyleSheetColors and StyleSheetLayout for all styles used).\n\n
Hacker-Pschorr\nGerman\n[[Cheryl and John]] brought it over on 4 [[June]] [[2006]]\n
*What have they learned\n**Things are well and good in innovation world right now. Tech bubble...\n**Consumer tech world is innovating at an incredible pace: tivo, youtube, second life, skype.\n***slingbox is very easy to use.\n**For perhaps the first time ever, user satisfaction is going up - NOS-Expectations are going up.\n**Business space is lagging 2x graph of user satisfaction vs time.\n**"Enterprise IT is falling behind" - head of sales at google.\n**Flow is going backwards - now starts in consumer world and goes to business world.\n**Gartner: "On average $80 spent in IT is dead money, not contributing to business change and growth"\n*He reads "Business 2.0"\n**80% of startups are in conumer space.\n*Goal: Make applications that users love\n*Google enterprise: Search, Geospacial, Apps\n*Three lesson that enterprise IT can learn from Google.\n**Fast is better than slow\n***The world has sped up, how we deploy software hasn't changed\n****define requirements; buy vs build, rfi/rfp; select vendor; do bakeoff; define implementation plan, customize application, build end user training plan, deploy\n****users will give you a long list of requirement that they dont' need - YES\n****buy the time you are done it's obsolet. If it takes you two years to roll out an app you are dead meat.\n*IT projects have to be iterative and not big bank\n**launch and improve\n**fail quickly and learn\n*Technology must be much simpler to implement\n*Our platforms must be able to handle constant change.\n**early failures allow you to divert resource\n*SIMPLE IS BETTER THAN COMPLEX\n**the way we have chosen to deploy applications have become insanely complex. "delivery models have insane complexity.\n**new delivery models\n***Appliance - one box\n***SaaS "Software as a Service"\n***Minimize customization - this one is hard to learn\n*ASSUME CHAOS AND DEAL WITH IT \n**you will never settle down to the normal state.\n**in corporate IT, this means: Data has changed and it doesn't come in rows and columns. The world is now 80% unstructured i terms of data.\n**Categorization? you can't keep up with the pace. You can't even look at it all right now.\n*Manual categorization and hierarchies are dead - NOS - I don't agree.\n*H in yahoo stands for Hierarchical\n**Portal projects - no matter how he does them people hate them - how do we organize them? People don't agree with categorization.\n**two innovations in Gmail: unlimited storage and good search\n**categorizing email is biggest waste of time ever.\n***perhaps he is right in terms of email\n*LESSONS\n**don't throw anything away\n**encourage information to be published and Shared\n*Stop categorizing information into hierarchies\n**embrace search as a way of navigation\n*Google portal\n**hosted by goodle, but can be branded and domained.\n*FINANCIAL PROPOSITION\n**old world: 200-1000$ /per user for running email\n**new world: $50/user/year\n\n\n\n
<html><form action="http://www.google.com/search"><input name=q><input type=submit value=google></form></html>
Stoneyfield Orchards\n5 Orchard Street\nBelvidere, NJ 07823\n908 475 5209\nHarry Schnieber, Owner\n
Grundfos Comfort Series Pumps from PlumbingWorld\nThe Grundfos Comfort Series instant hot water system eliminates cold water runoff at the faucet, using a bypass valve and pump with a timer to control water ...\nhttp://www.plumbingworld.com/grundfoscomfort.html\n\nhttp://www.keidel.com/mech/pumps-recirculate-r.htm\n\nGrundfos site:\nhttp://www.grundfos.com/web/HomeUs.nsf/Webopslag/PAVA-56TMVA\n\nTrenton supplier:\n\nhttp://www.sidharvey.com/\n
/***\n''Import Tiddlers Plugin for TiddlyWiki version 1.2.x and 2.0''\n^^author: Eric Shulman - ELS Design Studios\nsource: http://www.TiddlyTools.com/#ImportTiddlersPlugin\nlicense: [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]^^\n\nWhen many people share and edit copies of the same TiddlyWiki document, the ability to quickly collect all these changes back into a single, updated document that can then be redistributed to the entire group is very important. This plugin lets you selectively combine tiddlers from any two TiddlyWiki documents. It can also be very useful when moving your own tiddlers from document to document (e.g., when upgrading to the latest version of TiddlyWiki, or 'pre-loading' your favorite stylesheets into a new 'empty' TiddlyWiki document.)\n\n!!!!!Inline interface (live)\n<<<\n<<importTiddlers inline>>\n<<<\n!!!!!Macro Syntax\n<<<\n{{{<<importTiddlers>>}}}\ncreates "import tiddlers" link. click to show/hide import control panel\n\n{{{<<importTiddlers inline>>}}}\ncreates import control panel directly in tiddler content\n\n{{{<<importTiddlers filter source quiet ask>>}}}\nnon-interactive 'automatic' import.\n''filter'' determines which tiddlers will be automatically selected for importing. Use one of the following keywords:\n>''"new"'' retrieves only tiddlers that are found in the import source document, but do not yet exist in the destination document\n>''"changes"'' retrieves only tiddlers that exist in both documents for which the import source tiddler is newer than the existing tiddler\n>''"updates"'' retrieves both ''new'' and ''changed'' tiddlers (this is the default action when none is specified)\n>''"all"'' retrieves ALL tiddlers from the import source document, even if they have not been changed.\n''source'' is the location of the imported document. It can be either a local document or an URL:\n>filename is any local path/file, in whatever format your system requires\n>URL is any remote web location that starts with "http://" or "https://"\n''"quiet"'' (optional)\n>supresses all status message during the import processing (e.g., "opening local file...", "found NN tiddlers..." etc). Note that if ANY tiddlers are actualy imported, a final information message will still be displayed (along with the ImportedTiddlers report), even when 'quiet' is specified. This ensures that changes to your document cannot occur without any visible indication at all.\n''"ask"'' (optional)\n>adds interactive confirmation. A browser message box (OK/Cancel) is displayed for each tiddler that will be imported, so that you can manually bypass any tiddlers that you do not want to import.\n\n''Special tag values: importReplace and importPublic''\n\nBy adding these special tags to an existing tiddler, you can precisely control whether or not to allow updates to that tiddler as well as decide which tiddlers in your document can be automatically imported by others.\n*''For maximum safety, the default action is to prevent existing tiddlers from being unintentionally overwritten by incoming tiddlers.'' To allow an existing tiddler to be overwritten by an imported tiddler, you must tag the existing tiddler with ''<<tag importReplace>>''\n*''For maximum privacy, the default action for //outgoing// tiddlers is to NOT automatically share your tiddlers with others.'' To allow a tiddler in your document to be shared via auto-import actions by others, you must tag it with ''<<tag importPublic>>''\n//Note: these tags are only applied when using the auto-import processing. When using the interactive control panel, all tiddlers in the imported document are available in the listbox, regardless of their tag values.//\n<<<\n!!!!!Interactive Usage\n<<<\nWhen used interactively, a control panel is displayed consisting of an "import source document" filename input (text field plus a ''[Browse...]'' button), a listbox of available tiddlers, a "differences only" checkbox, an "add tags" input field and four push buttons: ''[open]'', ''[select all]'', ''[import]'' and ''[close]''.\n\nPress ''[browse]'' to select a TiddlyWiki document file to import. You can also type in the path/filename or a remote document URL (starting with http://)and press ''[open]''. //Note: There may be some delay to permit the browser time to access and load the document before updating the listbox with the titles of all tiddlers that are available to be imported.//\n\nSelect one or more titles from the listbox (hold CTRL or SHIFT while clicking to add/remove the highlight from individual list items). You can press ''[select all]'' to quickly highlight all tiddler titles in the list. Use the ''[-]'', ''[+]'', or ''[=]'' links to adjust the listbox size so you can view more (or less) tiddler titles at one time. When you have chosen the tiddlers you want to import and entered any extra tags, press ''[import]'' to begin copying them to the current TiddlyWiki document.\n\n''select: all, new, changes, or differences''\n\nYou can click on ''all'', ''new'', ''changes'', or ''differences'' to automatically select a subset of tiddlers from the list. This makes it very quick and easy to find and import just the updated tiddlers you are interested in:\n>''"all"'' selects ALL tiddlers from the import source document, even if they have not been changed.\n>''"new"'' selects only tiddlers that are found in the import source document, but do not yet exist in the destination document\n>''"changes"'' selects only tiddlers that exist in both documents but that are newer in the source document\n>''"differences"'' selects all new and existing tiddlers that are different from the destination document (even if destination tiddler is newer)\n\n''Import Tagging:''\n\nTiddlers that have been imported can be automatically tagged, so they will be easier to find later on, after they have been added to your document. New tags are entered into the "add tags" input field, and then //added// to the existing tags for each tiddler as it is imported.\n\n''Skip, Rename, Merge, or Replace:''\n\nWhen importing a tiddler whose title is identical to one that already exists, the import process pauses and the tiddler title is displayed in an input field, along with four push buttons: ''[skip]'', ''[rename]'', ''[merge]'' and ''[replace]''.\n\nTo bypass importing this tiddler, press ''[skip]''. To import the tiddler with a different name (so that both the tiddlers will exist when the import is done), enter a new title in the input field and then press ''[rename]''. Press ''[merge]'' to combine the content from both tiddlers into a single tiddler. Press ''[replace]'' to overwrite the existing tiddler with the imported one, discarding the previous tiddler content.\n\n//Note: if both the title ''and'' modification date/////time match, the imported tiddler is assumed to be identical to the existing one, and will be automatically skipped (i.e., not imported) without asking.//\n\n''Import Report History''\n\nWhen tiddlers are imported, a report is generated into ImportedTiddlers, indicating when the latest import was performed, the number of tiddlers successfully imported, from what location, and by whom. It also includes a list with the title, date and author of each tiddler that was imported.\n\nWhen the import process is completed, the ImportedTiddlers report is automatically displayed for your review. If more tiddlers are subsequently imported, a new report is //added// to ImportedTiddlers, above the previous report (i.e., at the top of the tiddler), so that a reverse-chronological history of imports is maintained.\n\nIf a cumulative record is not desired, the ImportedTiddlers report may be deleted at any time. A new ImportedTiddlers report will be created the next time tiddlers are imported.\n\nNote: You can prevent the ImportedTiddlers report from being generated for any given import activity by clearing the "create a report" checkbox before beginning the import processing.\n\n<<<\n!!!!!Installation\n<<<\ncopy/paste the following tiddlers into your document:\n''ImportTiddlersPlugin'' (tagged with <<tag systemConfig>>)\n\ncreate/edit ''SideBarOptions'': (sidebar menu items) \n^^Add "< < ImportTiddlers > >" macro^^\n\n''Quick Installation Tip #1:''\nIf you are using an unmodified version of TiddlyWiki (core release version <<version>>), you can get a new, empty TiddlyWiki with the Import Tiddlers plugin pre-installed (''[[download from here|TW+ImportExport.html]]''), and then simply import all your content from your old document into this new, empty document.\n<<<\n!!!!!Revision History\n<<<\n''2006.02.17 [2.6.0]''\nRemoved "differences only" listbox display mode, replaced with selection filter 'presets': all/new/changes/differences. Also fixed initialization handling for "add new tags" so that checkbox state is correctly tracked when panel is first displayed.\n''2006.02.16 [2.5.4]''\nadded checkbox options to control "import remote tags" and "keep existing tags" behavior, in addition to existing "add new tags" functionality.\n''2006.02.14 [2.5.3]''\nFF1501 corrected unintended global 't' (loop index) in importReport() and autoImportTiddlers()\n''2006.02.10 [2.5.2]''\ncorrected unintended global variable in importReport().\n''2006.02.05 [2.5.1]''\nmoved globals from window.* to config.macros.importTiddlers.* to avoid FireFox 1.5.0.1 crash bug when referencing globals\n''2006.01.18 [2.5.0]''\nadded checkbox for "create a report". Default is to create/update the ImportedTiddlers report. Clear the checkbox to skip this step.\n''2006.01.15 [2.4.1]''\nadded "importPublic" tag and inverted default so that auto sharing is NOT done unless tagged with importPublic\n''2006.01.15 [2.4.0]''\nAdded support for tagging individual tiddlers with importSkip, importReplace, and/or importPrivate to control which tiddlers can be overwritten or shared with others when using auto-import macro syntax. Defaults are to SKIP overwriting existing tiddlers with imported tiddlers, and ALLOW your tiddlers to be auto-imported by others.\n''2006.01.15 [2.3.2]''\nAdded "ask" parameter to confirm each tiddler before importing (for use with auto-importing)\n''2006.01.15 [2.3.1]''\nStrip TW core scripts from import source content and load just the storeArea into the hidden IFRAME. Makes loading more efficient by reducing the document size and by preventing the import document from executing its TW initialization (including plugins). Seems to resolve the "Found 0 tiddlers" problem. Also, when importing local documents, use convertUTF8ToUnicode() to convert the file contents so support international characters sets.\n''2006.01.12 [2.3.0]''\nReorganized code to use callback function for loading import files to support event-driven I/O via an ASYNCHRONOUS XMLHttpRequest. Let's processing continue while waiting for remote hosts to respond to URL requests. Added non-interactive 'batch' macro mode, using parameters to specify which tiddlers to import, and from what document source. Improved error messages and diagnostics, plus an optional 'quiet' switch for batch mode to eliminate //most// feedback.\n''2006.01.11 [2.2.0]''\nAdded "[by tags]" to list of tiddlers, based on code submitted by BradleyMeck\n''2006.01.09 [2.1.1]''\nWhen a URL is typed in, and then the "open" button is pressed, it generates both an onChange event for the file input and a click event for open button. This results in multiple XMLHttpRequest()'s which seem to jam things up quite a bit. I removed the onChange handling for file input field. To open a file (local or URL), you must now explicitly press the "open" button in the control panel.\n''2006.01.08 [2.1.0]''\nIMPORT FROM ANYWHERE!!! re-write getImportedTiddlers() logic to either read a local file (using local I/O), OR... read a remote file, using a combination of XML and an iframe to permit cross-domain reading of DOM elements. Adapted from example code and techniques courtesy of Jonny LeRoy.\n''2006.01.06 [2.0.2]''\nWhen refreshing list contents, fixed check for tiddlerExists() when "show differences only" is selected, so that imported tiddlers that don't exist in the current file will be recognized as differences and included in the list.\n''2006.01.04 [2.0.1]''\nWhen "show differences only" is NOT checked, import all tiddlers that have been selected even when they have a matching title and date.\n''2005.12.27 [2.0.0]''\nUpdate for TW2.0\nDefer initial panel creation and only register a notification function when panel first is created\n''2005.12.22 [1.3.1]''\ntweak formatting in importReport() and add 'discard report' link to output\n''2005.12.03 [1.3.0]''\nDynamically create/remove importPanel as needed to ensure only one instance of interface elements exists, even if there are multiple instances of macro embedding. Also, dynamically create/recreate importFrame each time an external TW document is loaded for importation (reduces DOM overhead and ensures a 'fresh' frame for each document)\n''2005.11.29 [1.2.1]''\nfixed formatting of 'detail info' in importReport()\n''2005.11.11 [1.2.0]''\nadded 'inline' param to embed controls in a tiddler\n''2005.11.09 [1.1.0]''\nonly load HTML and CSS the first time the macro handler is called. Allows for redundant placement of the macro without creating multiple instances of controls with the same ID's.\n''2005.10.25 [1.0.5]''\nfixed typo in importReport() that prevented reports from being generated\n''2005.10.09 [1.0.4]''\ncombined documentation with plugin code instead of using separate tiddlers\n''2005.08.05 [1.0.3]''\nmoved CSS and HTML definitions into plugin code instead of using separate tiddlers\n''2005.07.27 [1.0.2]''\ncore update 1.2.29: custom overlayStyleSheet() replaced with new core setStylesheet()\n''2005.07.23 [1.0.1]''\nadded parameter checks and corrected addNotification() usage\n''2005.07.20 [1.0.0]''\nInitial Release\n<<<\n!!!!!Credits\n<<<\nThis feature was developed by EricShulman from [[ELS Design Studios|http:/www.elsdesign.com]]\n<<<\n!!!!!Code\n***/\n\n// // Version\n//{{{\nversion.extensions.importTiddlers = {major: 2, minor: 6, revision: 0, date: new Date(2006,2,17)};\n//}}}\n\n// // 1.2.x compatibility\n//{{{\nif (!window.story) window.story=window;\nif (!store.getTiddler) store.getTiddler=function(title){return store.tiddlers[title]}\nif (!store.addTiddler) store.addTiddler=function(tiddler){store.tiddlers[tiddler.title]=tiddler}\nif (!store.deleteTiddler) store.deleteTiddler=function(title){delete store.tiddlers[title]}\n//}}}\n\n// // IE needs explicit global scoping for functions/vars called from browser events\n//{{{\nwindow.onClickImportButton=onClickImportButton;\nwindow.loadImportFile=loadImportFile;\nwindow.refreshImportList=refreshImportList;\n//}}}\n\n// // default cookie/option values\n//{{{\nif (!config.options.chkImportReport) config.options.chkImportReport=true;\n//}}}\n\n\n// // ''MACRO DEFINITION''\n\n//{{{\nconfig.macros.importTiddlers = { };\nconfig.macros.importTiddlers = {\n label: "import tiddlers",\n prompt: "Copy tiddlers from another document",\n countMsg: "%0 tiddlers selected for import",\n src: "", // path/filename or URL of document to import\n inbound: null, // hash-indexed array of tiddlers from other document\n newTags: "", // text of tags added to imported tiddlers\n addTags: true, // add new tags to imported tiddlers\n listsize: 8, // # of lines to show in imported tiddler list\n importTags: true, // include tags from remote source document when importing a tiddler\n keepTags: true, // retain existing tags when replacing a tiddler\n index: 0, // current processing index in import list\n sort: "" // sort order for imported tiddler listbox\n};\n\nconfig.macros.importTiddlers.handler = function(place,macroName,params) {\n // LINK WITH FLOATING PANEL\n if (!params[0]) {\n createTiddlyButton(place,this.label,this.prompt,onClickImportMenu);\n return;\n }\n // INLINE TIDDLER CONTENT\n if (params[0]=="inline") {\n createImportPanel(place);\n document.getElementById("importPanel").style.position="static";\n document.getElementById("importPanel").style.display="block";\n return;\n }\n // NON-INTERACTIVE BATCH MODE\n switch (params[0]) {\n case 'all':\n case 'new':\n case 'changes':\n case 'updates':\n var filter=params.shift();\n break;\n default:\n var filter="updates";\n break;\n } \n if (!params[0]||!params[0].length) return; // filename is required\n config.macros.importTiddlers.src=params.shift();\n var quiet=(params[0]=="quiet"); if (quiet) params.shift();\n var ask=(params[0]=="ask"); if (ask) params.shift();\n config.macros.importTiddlers.inbound=null; // clear the imported tiddler buffer\n // load storeArea from a hidden IFRAME, then apply import rules and add/replace tiddlers\n loadImportFile(config.macros.importTiddlers.src,filter,quiet,ask,autoImportTiddlers);\n}\n//}}}\n\n// // ''READ TIDDLERS FROM ANOTHER DOCUMENT''\n\n//{{{\nfunction loadImportFile(src,filter,quiet,ask,callback) {\n if (!quiet) clearMessage();\n // LOCAL FILE\n if ((src.substr(0,7)!="http://")&&(src.substr(0,8)!="https://")) {\n if (!quiet) displayMessage("Opening local document: "+ src);\n var txt=loadFile(src);\n if(!txt) { if (!quiet) displayMessage("Could not open local document: "+src); }\n else {\n var s="<html><body>"+txt.substr(txt.indexOf('<div id="storeArea">'));\n if (!quiet) displayMessage(txt.length+" bytes in document. ("+s.length+" bytes used for tiddler storage)");\n config.macros.importTiddlers.inbound = readImportedTiddlers(convertUTF8ToUnicode(s));\n var count=config.macros.importTiddlers.inbound?config.macros.importTiddlers.inbound.length:0;\n if (!quiet) displayMessage("Found "+count+" tiddlers in "+src);\n if (callback) callback(src,filter,quiet,ask);\n }\n return;\n }\n // REMOTE FILE\n var x; // XML object\n try {x = new XMLHttpRequest()}\n catch(e) {\n try {x = new ActiveXObject("Msxml2.XMLHTTP")}\n catch (e) {\n try {x = new ActiveXObject("Microsoft.XMLHTTP")}\n catch (e) { return }\n }\n }\n x.onreadystatechange = function() {\n if (x.readyState == 4) {\n if (x.status == 200) {\n var sa="<html><body>"+x.responseText.substr(x.responseText.indexOf('<div id="storeArea">'));\n if (!quiet) displayMessage(x.responseText.length+" bytes in document. ("+sa.length+" bytes used for tiddler storage)");\n config.macros.importTiddlers.inbound = readImportedTiddlers(sa);\n var count=config.macros.importTiddlers.inbound?config.macros.importTiddlers.inbound.length:0;\n if (!quiet) displayMessage("Found "+count+" tiddlers in "+src);\n if (callback) callback(src,filter,quiet,ask);\n }\n else\n if (!quiet) displayMessage("Could not open remote document:"+ src+" (error="+x.status+")");\n }\n }\n if (document.location.protocol=="file:") { // UniversalBrowserRead only works from a local file context\n try {netscape.security.PrivilegeManager.enablePrivilege('UniversalBrowserRead')}\n catch (e) { if (!quiet) displayMessage(e.description?e.description:e.toString()); }\n }\n if (!quiet) displayMessage("Opening remote document: "+ src);\n try {\n var url=src+(src.indexOf('?')<0?'?':'&')+'nocache='+Math.random();\n x.open("GET",url,true);\n x.overrideMimeType('text/html');\n x.send(null);\n }\n catch (e) {\n if (!quiet) {\n displayMessage("Could not open remote document: "+src);\n displayMessage(e.description?e.description:e.toString());\n }\n }\n}\n\nfunction readImportedTiddlers(txt)\n{\n var importedTiddlers = [];\n // create frame\n var f=document.getElementById("importFrame");\n if (f) document.body.removeChild(f);\n f=document.createElement("iframe");\n f.id="importFrame";\n f.style.width="0px"; f.style.height="0px"; f.style.border="0px";\n document.body.appendChild(f);\n // get document\n var d=f.document;\n if (f.contentDocument) d=f.contentDocument; // For NS6\n else if (f.contentWindow) d=f.contentWindow.document; // For IE5.5 and IE6\n // load source into document\n d.open(); d.writeln(txt); d.close();\n // read tiddler DIVs from storeArea DOM element \n var importStore = [];\n var importStoreArea = d.getElementById("storeArea");\n if (!importStoreArea || !(importStore=importStoreArea.childNodes) || (importStore.length==0)) { return null; }\n importStoreArea.normalize();\n for(var t = 0; t < importStore.length; t++) {\n var e = importStore[t];\n var title = null;\n if(e.getAttribute)\n title = e.getAttribute("tiddler");\n if(!title && e.id && (e.id.substr(0,5) == "store"))\n title = e.id.substr(5);\n if(title && title != "") {\n var theImported = new Tiddler();\n theImported.loadFromDiv(e,title);\n importedTiddlers.push(theImported);\n }\n }\n return importedTiddlers;\n}\n//}}}\n\n// // ''NON-INTERACTIVE IMPORT''\n\n// // import all/new/changed tiddlers into store, replacing or adding tiddlers as needed\n//{{{\nfunction autoImportTiddlers(src,filter,quiet,ask)\n{\n var count=0;\n if (config.macros.importTiddlers.inbound) for (var t=0;t<config.macros.importTiddlers.inbound.length;t++) {\n var theImported = config.macros.importTiddlers.inbound[t];\n var theExisting = store.getTiddler(theImported.title);\n\n // only import tiddlers if tagged with "importPublic"\n if (theImported.tags && theImported.tags.find("importPublic")==null)\n { config.macros.importTiddlers.inbound[t].status=""; continue; } // status=="" means don't show in report\n\n // never import the "ImportedTiddlers" history from the other document...\n if (theImported.title=='ImportedTiddlers')\n { config.macros.importTiddlers.inbound[t].status=""; continue; } // status=="" means don't show in report\n\n // check existing tiddler for importReplace, or systemConfig tags\n config.macros.importTiddlers.inbound[t].status="added"; // default - add any tiddlers not filtered out\n if (store.tiddlerExists(theImported.title)) {\n config.macros.importTiddlers.inbound[t].status="replaced";\n if (!theExisting.tags||(theExisting.tags.find("importReplace")==null))\n { config.macros.importTiddlers.inbound[t].status="not imported - tiddler already exists (use importReplace to allow changes)"; continue; }\n if ((theExisting.tags.find("systemConfig")!=null)||(theImported.tags.find("systemConfig")!=null))\n config.macros.importTiddlers.inbound[t].status+=" - WARNING: an active systemConfig plugin has been added or updated";\n }\n\n // apply the all/new/changes/updates filter \n if (filter!="all") {\n if ((filter=="new") && store.tiddlerExists(theImported.title))\n { config.macros.importTiddlers.inbound[t].status="not imported - tiddler already exists"; continue; }\n if ((filter=="changes") && !store.tiddlerExists(theImported.title))\n { config.macros.importTiddlers.inbound[t].status="not imported - new tiddler"; continue; }\n if (store.tiddlerExists(theImported.title) && ((theExisting.modified.getTime()-theImported.modified.getTime())>=0))\n { config.macros.importTiddlers.inbound[t].status="not imported - tiddler is unchanged"; continue; }\n }\n\n // get confirmation if required\n if (ask && !confirm("Import "+(theExisting?"updated":"new")+" tiddler '"+theImported.title+"'\snfrom "+src))\n { config.macros.importTiddlers.inbound[t].status="skipped - cancelled by user"; continue; }\n\n // DO THE IMPORT!!\n store.addTiddler(theImported); count++;\n }\n importReport(quiet); // generate a report (as needed) and display it if not 'quiet'\n if (count) store.setDirty(true); \n // always show final message when tiddlers were actually imported\n if (!quiet||count) displayMessage("Imported "+count+" tiddler"+(count!=1?"s":"")+" from "+src);\n}\n//}}}\n\n// // ''REPORT GENERATOR''\n\n//{{{\nfunction importReport(quiet)\n{\n if (!config.macros.importTiddlers.inbound) return;\n // DEBUG alert('importReport: start');\n\n // if import was not completed, the Ask panel will still be open... close it now.\n var askpanel=document.getElementById('importAskPanel'); if (askpanel) askpanel.style.display='none'; \n // get the alphasorted list of tiddlers\n var tiddlers = config.macros.importTiddlers.inbound;\n tiddlers.sort(function (a,b) {if(a['title'] == b['title']) return(0); else return (a['title'] < b['title']) ? -1 : +1; });\n // gather the statistics\n var count=tiddlers.length;\n var added=0; var replaced=0; var renamed=0; var skipped=0; var merged=0;\n for (var t=0; t<count; t++)\n if (tiddlers[t].status)\n {\n if (tiddlers[t].status=='added') added++;\n if (tiddlers[t].status.substr(0,7)=='skipped') skipped++;\n if (tiddlers[t].status.substr(0,6)=='rename') renamed++;\n if (tiddlers[t].status.substr(0,7)=='replace') replaced++;\n if (tiddlers[t].status.substr(0,6)=='merged') merged++;\n }\n var omitted=count-(added+replaced+renamed+skipped+merged);\n // DEBUG alert('stats done: '+count+' total, '+added+' added, '+skipped+' skipped, '+renamed+' renamed, '+replaced+' replaced, '+merged+' merged');\n // skip the report if nothing was imported\n if (added+replaced+renamed+merged==0) return;\n // skip the report if not desired by user\n if (!config.options.chkImportReport) {\n // reset status flags\n for (var t=0; t<count; t++) config.macros.importTiddlers.inbound[t].status="";\n // refresh display since tiddlers have been imported\n store.notifyAll();\n // quick message area summary report\n var msg=(added+replaced+renamed+merged)+' of '+count+' tiddler'+((count!=1)?'s':"");\n msg+=' imported from '+config.macros.importTiddlers.src.replace(/\s\s/g,'/')\n displayMessage(msg);\n return;\n }\n // create the report tiddler (if not already present)\n var tiddler = store.getTiddler('ImportedTiddlers');\n if (!tiddler) // create new report tiddler if it doesn't exist\n {\n tiddler = new Tiddler();\n tiddler.title = 'ImportedTiddlers';\n tiddler.text = "";\n }\n // format the report header\n var now = new Date();\n var newText = "";\n newText += "On "+now.toLocaleString()+", "+config.options.txtUserName+" imported tiddlers from\sn";\n newText += "[["+config.macros.importTiddlers.src+"|"+config.macros.importTiddlers.src+"]]:\sn";\n newText += "<"+"<"+"<\sn";\n newText += "Out of "+count+" tiddler"+((count!=1)?"s ":" ")+" in {{{"+config.macros.importTiddlers.src.replace(/\s\s/g,'/')+"}}}:\sn";\n if (added+renamed>0)\n newText += (added+renamed)+" new tiddler"+(((added+renamed)!=1)?"s were":" was")+" added to your document.\sn";\n if (merged>0)\n newText += merged+" tiddler"+((merged!=1)?"s were":" was")+" merged with "+((merged!=1)?"":"an ")+"existing tiddler"+((merged!=1)?"s":"")+".\sn"; \n if (replaced>0)\n newText += replaced+" existing tiddler"+((replaced!=1)?"s were":" was")+" replaced.\sn"; \n if (skipped>0)\n newText += skipped+" tiddler"+((skipped!=1)?"s were":" was")+" skipped after asking.\sn"; \n if (omitted>0)\n newText += omitted+" tiddler"+((omitted!=1)?"s":"")+((omitted!=1)?" were":" was")+" not imported.\sn";\n if (config.macros.importTiddlers.addTags && config.macros.importTiddlers.newTags.trim().length)\n newText += "imported tiddlers were tagged with: \s""+config.macros.importTiddlers.newTags+"\s"\sn";\n // output the tiddler detail and reset status flags\n for (var t=0; t<count; t++)\n if (tiddlers[t].status!="")\n {\n newText += "#["+"["+tiddlers[t].title+"]"+"]";\n newText += ((tiddlers[t].status!="added")?("^^\sn"+tiddlers[t].status+"^^"):"")+"\sn";\n config.macros.importTiddlers.inbound[t].status="";\n }\n newText += "<"+"<"+"<\sn";\n // output 'discard report' link\n newText += "<html><input type=\s"button\s" href=\s"javascript:;\s" ";\n newText += "onclick=\s"story.closeTiddler('"+tiddler.title+"'); store.deleteTiddler('"+tiddler.title+"');\s" ";\n newText += "value=\s"discard report\s"></html>";\n // update the ImportedTiddlers content and show the tiddler\n tiddler.text = newText+((tiddler.text!="")?'\sn----\sn':"")+tiddler.text;\n tiddler.modifier = config.options.txtUserName;\n tiddler.modified = new Date();\n store.addTiddler(tiddler);\n if (!quiet) story.displayTiddler(null,"ImportedTiddlers",1,null,null,false);\n story.refreshTiddler("ImportedTiddlers",1,true);\n // refresh the display\n store.notifyAll();\n}\n//}}}\n\n// // ''INTERFACE DEFINITION''\n\n// // Handle link click to create/show/hide control panel\n//{{{\nfunction onClickImportMenu(e)\n{\n if (!e) var e = window.event;\n var parent=resolveTarget(e).parentNode;\n var panel = document.getElementById("importPanel");\n if (panel==undefined || panel.parentNode!=parent)\n panel=createImportPanel(parent);\n var isOpen = panel.style.display=="block";\n if(config.options.chkAnimate)\n anim.startAnimating(new Slider(panel,!isOpen,e.shiftKey || e.altKey,"none"));\n else\n panel.style.display = isOpen ? "none" : "block" ;\n e.cancelBubble = true;\n if (e.stopPropagation) e.stopPropagation();\n return(false);\n}\n//}}}\n\n// // Create control panel: HTML, CSS, register for notification\n//{{{\nfunction createImportPanel(place) {\n var panel=document.getElementById("importPanel");\n if (panel) { panel.parentNode.removeChild(panel); }\n setStylesheet(config.macros.importTiddlers.css,"importTiddlers");\n panel=createTiddlyElement(place,"span","importPanel",null,null)\n panel.innerHTML=config.macros.importTiddlers.html;\n store.addNotification(null,refreshImportList); // refresh listbox after every tiddler change\n refreshImportList();\n return panel;\n}\n//}}}\n\n// // CSS\n//{{{\nconfig.macros.importTiddlers.css = '\s\n#importPanel {\s\n display: none; position:absolute; z-index:11; width:35em; right:105%; top:3em;\s\n padding: 0.5em; margin:0em; text-align:left; font-size: 8pt;\s\n background-color: #eee; color:#000000; \s\n border:1px solid black; border-bottom-width: 3px; border-right-width: 3px; -moz-border-radius:1em;\s\n}\s\n#importPanel a { color:#009; }\s\n#importPanel input { width: 98%; margin: 1px; font-size:8pt; }\s\n#importPanel select { width: 98%; margin: 1px; font-size:8pt; }\s\n#importPanel .importButton { padding: 0em; margin: 0px; font-size:8pt; }\s\n#importPanel .importListButton { padding:0em 0.25em 0em 0.25em; color: #000000; display:inline }\s\n#importAskPanel { display:none; margin:0.5em 0em 0em 0em; }\s\n';\n//}}}\n\n// // HTML\n//{{{\nconfig.macros.importTiddlers.html = '\s\n<span style="float:left; padding:1px; white-space:nowrap">\s\n import from source document\s\n</span>\s\n<span style="float:right; padding:1px; white-space:nowrap">\s\n <input type=checkbox id="chkImportReport" checked style="height:1em; width:auto"\s\n onClick="config.options[\s'chkImportReport\s']=this.checked;">create a report\s\n</span>\s\n<input type="file" id="fileImportSource" size=56\s\n onKeyUp="config.macros.importTiddlers.src=this.value"\s\n onChange="config.macros.importTiddlers.src=this.value;">\s\n<span style="float:left; padding:1px; white-space:nowrap">\s\n select:\s\n <a href="JavaScript:;" id="importSelectAll"\s\n onclick="onClickImportButton(this)" title="select all tiddlers">\s\n all </a>\s\n <a href="JavaScript:;" id="importSelectNew"\s\n onclick="onClickImportButton(this)" title="select tiddlers not already in destination document">\s\n added </a> \s\n <a href="JavaScript:;" id="importSelectChanges"\s\n onclick="onClickImportButton(this)" title="select tiddlers that have been updated in source document">\s\n changes </a> \s\n <a href="JavaScript:;" id="importSelectDifferences"\s\n onclick="onClickImportButton(this)" title="select tiddlers that have been added or are different from existing tiddlers">\s\n differences </a> \s\n <a href="JavaScript:;" id="importToggleFilter"\s\n onclick="onClickImportButton(this)" title="show/hide selection filter">\s\n filter </a> \s\n</span>\s\n<span style="float:right; padding:1px; white-space:nowrap">\s\n <a href="JavaScript:;" id="importListSmaller"\s\n onclick="onClickImportButton(this)" title="reduce list size">\s\n – </a>\s\n <a href="JavaScript:;" id="importListLarger"\s\n onclick="onClickImportButton(this)" title="increase list size">\s\n + </a>\s\n <a href="JavaScript:;" id="importListMaximize"\s\n onclick="onClickImportButton(this)" title="maximize/restore list size">\s\n = </a>\s\n</span>\s\n<select id="importList" size=8 multiple\s\n onchange="setTimeout(\s'refreshImportList(\s'+this.selectedIndex+\s')\s',1)">\s\n <!-- NOTE: delay refresh so list is updated AFTER onchange event is handled -->\s\n</select>\s\n<input type=checkbox id="chkAddTags" checked style="height:1em; width:auto"\s\n onClick="config.macros.importTiddlers.addTags=this.checked;">add new tags \s\n<input type=checkbox id="chkImportTags" checked style="height:1em; width:auto"\s\n onClick="config.macros.importTiddlers.importTags=this.checked;">import source tags \s\n<input type=checkbox id="chkKeepTags" checked style="height:1em; width:auto"\s\n onClick="config.macros.importTiddlers.keepTags=this.checked;">keep existing tags\s\n<input type=text id="txtNewTags" size=15 onKeyUp="config.macros.importTiddlers.newTags=this.value" autocomplete=off>\s\n<div align=center>\s\n <input type=button id="importOpen" class="importButton" style="width:32%" value="open"\s\n onclick="onClickImportButton(this)">\s\n <input type=button id="importStart" class="importButton" style="width:32%" value="import"\s\n onclick="onClickImportButton(this)">\s\n <input type=button id="importClose" class="importButton" style="width:32%" value="close"\s\n onclick="onClickImportButton(this)">\s\n</div>\s\n<div id="importAskPanel">\s\n tiddler already exists:\s\n <input type=text id="importNewTitle" size=15 autocomplete=off">\s\n <div align=center>\s\n <input type=button id="importSkip" class="importButton" style="width:23%" value="skip"\s\n onclick="onClickImportButton(this)">\s\n <input type=button id="importRename" class="importButton" style="width:23%" value="rename"\s\n onclick="onClickImportButton(this)">\s\n <input type=button id="importMerge" class="importButton" style="width:23%" value="merge"\s\n onclick="onClickImportButton(this)">\s\n <input type=button id="importReplace" class="importButton" style="width:23%" value="replace"\s\n onclick="onClickImportButton(this)">\s\n </div>\s\n</div>\s\n';\n//}}}\n\n// // refresh listbox\n//{{{\nfunction refreshImportList(selectedIndex)\n{\n var theList = document.getElementById("importList");\n if (!theList) return;\n // if nothing to show, reset list content and size\n if (!config.macros.importTiddlers.inbound) \n {\n while (theList.length > 0) { theList.options[0] = null; }\n theList.options[0]=new Option('please open a document...',"",false,false);\n theList.size=config.macros.importTiddlers.listsize;\n return;\n }\n // get the sort order\n if (!selectedIndex) selectedIndex=0;\n if (selectedIndex==0) config.macros.importTiddlers.sort='title'; // heading\n if (selectedIndex==1) config.macros.importTiddlers.sort='title';\n if (selectedIndex==2) config.macros.importTiddlers.sort='modified';\n if (selectedIndex==3) config.macros.importTiddlers.sort='tags';\n if (selectedIndex>3) {\n // display selected tiddler count\n for (var t=0,count=0; t < theList.options.length; t++) count+=(theList.options[t].selected&&theList.options[t].value!="")?1:0;\n clearMessage(); displayMessage(config.macros.importTiddlers.countMsg.format([count]));\n return; // no refresh needed\n }\n\n // get the alphasorted list of tiddlers (optionally, filter out unchanged tiddlers)\n var tiddlers=config.macros.importTiddlers.inbound;\n tiddlers.sort(function (a,b) {if(a['title'] == b['title']) return(0); else return (a['title'] < b['title']) ? -1 : +1; });\n // clear current list contents\n while (theList.length > 0) { theList.options[0] = null; }\n // add heading and control items to list\n var i=0;\n var indent=String.fromCharCode(160)+String.fromCharCode(160);\n theList.options[i++]=new Option(tiddlers.length+' tiddler'+((tiddlers.length!=1)?'s are':' is')+' in the document',"",false,false);\n theList.options[i++]=new Option(((config.macros.importTiddlers.sort=="title" )?">":indent)+' [by title]',"",false,false);\n theList.options[i++]=new Option(((config.macros.importTiddlers.sort=="modified")?">":indent)+' [by date]',"",false,false);\n theList.options[i++]=new Option(((config.macros.importTiddlers.sort=="tags")?">":indent)+' [by tags]',"",false,false);\n // output the tiddler list\n switch(config.macros.importTiddlers.sort)\n {\n case "title":\n for(var t = 0; t < tiddlers.length; t++)\n theList.options[i++] = new Option(tiddlers[t].title,tiddlers[t].title,false,false);\n break;\n case "modified":\n // sort descending for newest date first\n tiddlers.sort(function (a,b) {if(a['modified'] == b['modified']) return(0); else return (a['modified'] > b['modified']) ? -1 : +1; });\n var lastSection = "";\n for(var t = 0; t < tiddlers.length; t++) {\n var tiddler = tiddlers[t];\n var theSection = tiddler.modified.toLocaleDateString();\n if (theSection != lastSection) {\n theList.options[i++] = new Option(theSection,"",false,false);\n lastSection = theSection;\n }\n theList.options[i++] = new Option(indent+indent+tiddler.title,tiddler.title,false,false);\n }\n break;\n case "tags":\n var theTitles = {}; // all tiddler titles, hash indexed by tag value\n var theTags = new Array();\n for(var t=0; t<tiddlers.length; t++) {\n var title=tiddlers[t].title;\n var tags=tiddlers[t].tags;\n for(var s=0; s<tags.length; s++) {\n if (theTitles[tags[s]]==undefined) { theTags.push(tags[s]); theTitles[tags[s]]=new Array(); }\n theTitles[tags[s]].push(title);\n }\n }\n theTags.sort();\n for(var tagindex=0; tagindex<theTags.length; tagindex++) {\n var theTag=theTags[tagindex];\n theList.options[i++]=new Option(theTag,"",false,false);\n for(var t=0; t<theTitles[theTag].length; t++)\n theList.options[i++]=new Option(indent+indent+theTitles[theTag][t],theTitles[theTag][t],false,false);\n }\n break;\n }\n theList.selectedIndex=selectedIndex; // select current control item\n if (theList.size<config.macros.importTiddlers.listsize) theList.size=config.macros.importTiddlers.listsize;\n if (theList.size>theList.options.length) theList.size=theList.options.length;\n}\n//}}}\n\n// // Control interactions\n//{{{\nfunction onClickImportButton(which)\n{\n // DEBUG alert(which.id);\n var theList = document.getElementById('importList');\n if (!theList) return;\n var thePanel = document.getElementById('importPanel');\n var theAskPanel = document.getElementById('importAskPanel');\n var theNewTitle = document.getElementById('importNewTitle');\n var count=0;\n switch (which.id)\n {\n case 'fileImportSource':\n case 'importOpen': // load import source into hidden frame\n importReport(); // if an import was in progress, generate a report\n config.macros.importTiddlers.inbound=null; // clear the imported tiddler buffer\n refreshImportList(); // reset/resize the listbox\n if (config.macros.importTiddlers.src=="") break;\n // Load document into hidden iframe so we can read it's DOM and fill the list\n loadImportFile(config.macros.importTiddlers.src,"all",null,null,function(src,filter,quiet,ask){window.refreshImportList(0);});\n break;\n case 'importSelectAll': // select all tiddler list items (i.e., not headings)\n importReport(); // if an import was in progress, generate a report\n for (var t=0,count=0; t < theList.options.length; t++) {\n if (theList.options[t].value=="") continue;\n theList.options[t].selected=true;\n count++;\n }\n clearMessage(); displayMessage(config.macros.importTiddlers.countMsg.format([count]));\n break;\n case 'importSelectNew': // select tiddlers not in current document\n importReport(); // if an import was in progress, generate a report\n for (var t=0,count=0; t < theList.options.length; t++) {\n theList.options[t].selected=false;\n if (theList.options[t].value=="") continue;\n theList.options[t].selected=!store.tiddlerExists(theList.options[t].value);\n count+=theList.options[t].selected?1:0;\n }\n clearMessage(); displayMessage(config.macros.importTiddlers.countMsg.format([count]));\n break;\n case 'importSelectChanges': // select tiddlers that are updated from existing tiddlers\n importReport(); // if an import was in progress, generate a report\n for (var t=0,count=0; t < theList.options.length; t++) {\n theList.options[t].selected=false;\n if (theList.options[t].value==""||!store.tiddlerExists(theList.options[t].value)) continue;\n for (var i=0; i<config.macros.importTiddlers.inbound.length; i++) // find matching inbound tiddler\n { var inbound=config.macros.importTiddlers.inbound[i]; if (inbound.title==theList.options[t].value) break; }\n theList.options[t].selected=(inbound.modified-store.getTiddler(theList.options[t].value).modified>0); // updated tiddler\n count+=theList.options[t].selected?1:0;\n }\n clearMessage(); displayMessage(config.macros.importTiddlers.countMsg.format([count]));\n break;\n case 'importSelectDifferences': // select tiddlers that are new or different from existing tiddlers\n importReport(); // if an import was in progress, generate a report\n for (var t=0,count=0; t < theList.options.length; t++) {\n theList.options[t].selected=false;\n if (theList.options[t].value=="") continue;\n if (!store.tiddlerExists(theList.options[t].value)) { theList.options[t].selected=true; count++; continue; }\n for (var i=0; i<config.macros.importTiddlers.inbound.length; i++) // find matching inbound tiddler\n { var inbound=config.macros.importTiddlers.inbound[i]; if (inbound.title==theList.options[t].value) break; }\n theList.options[t].selected=(inbound.modified-store.getTiddler(theList.options[t].value).modified!=0); // changed tiddler\n count+=theList.options[t].selected?1:0;\n }\n clearMessage(); displayMessage(config.macros.importTiddlers.countMsg.format([count]));\n break;\n case 'importToggleFilter': // show/hide filter\n case 'importFilter': // apply filter\n alert("coming soon!");\n break;\n case 'importStart': // initiate the import processing\n importReport(); // if an import was in progress, generate a report\n config.macros.importTiddlers.index=0;\n config.macros.importTiddlers.index=importTiddlers(0);\n importStopped();\n break;\n case 'importClose': // unload imported tiddlers or hide the import control panel\n // if imported tiddlers not loaded, close the import control panel\n if (!config.macros.importTiddlers.inbound) { thePanel.style.display='none'; break; }\n importReport(); // if an import was in progress, generate a report\n config.macros.importTiddlers.inbound=null; // clear the imported tiddler buffer\n refreshImportList(); // reset/resize the listbox\n break;\n case 'importSkip': // don't import the tiddler\n var theItem = theList.options[config.macros.importTiddlers.index];\n for (var j=0;j<config.macros.importTiddlers.inbound.length;j++)\n if (config.macros.importTiddlers.inbound[j].title==theItem.value) break;\n var theImported = config.macros.importTiddlers.inbound[j];\n theImported.status='skipped after asking'; // mark item as skipped\n theAskPanel.style.display='none';\n config.macros.importTiddlers.index=importTiddlers(config.macros.importTiddlers.index+1); // resume with NEXT item\n importStopped();\n break;\n case 'importRename': // change name of imported tiddler\n var theItem = theList.options[config.macros.importTiddlers.index];\n for (var j=0;j<config.macros.importTiddlers.inbound.length;j++)\n if (config.macros.importTiddlers.inbound[j].title==theItem.value) break;\n var theImported = config.macros.importTiddlers.inbound[j];\n theImported.status = 'renamed from '+theImported.title; // mark item as renamed\n theImported.set(theNewTitle.value,null,null,null,null); // change the tiddler title\n theItem.value = theNewTitle.value; // change the listbox item text\n theItem.text = theNewTitle.value; // change the listbox item text\n theAskPanel.style.display='none';\n config.macros.importTiddlers.index=importTiddlers(config.macros.importTiddlers.index); // resume with THIS item\n importStopped();\n break;\n case 'importMerge': // join existing and imported tiddler content\n var theItem = theList.options[config.macros.importTiddlers.index];\n for (var j=0;j<config.macros.importTiddlers.inbound.length;j++)\n if (config.macros.importTiddlers.inbound[j].title==theItem.value) break;\n var theImported = config.macros.importTiddlers.inbound[j];\n var theExisting = store.getTiddler(theItem.value);\n var theText = theExisting.text+'\sn----\sn^^merged from: [['+config.macros.importTiddlers.src+'#'+theItem.value+'|'+config.macros.importTiddlers.src+'#'+theItem.value+']]^^\sn^^'+theImported.modified.toLocaleString()+' by '+theImported.modifier+'^^\sn'+theImported.text;\n var theDate = new Date();\n var theTags = theExisting.getTags()+' '+theImported.getTags();\n theImported.set(null,theText,null,theDate,theTags);\n theImported.status = 'merged with '+theExisting.title; // mark item as merged\n theImported.status += ' - '+theExisting.modified.formatString("MM/DD/YYYY hh:mm:ss");\n theImported.status += ' by '+theExisting.modifier;\n theAskPanel.style.display='none';\n config.macros.importTiddlers.index=importTiddlers(config.macros.importTiddlers.index); // resume with this item\n importStopped();\n break;\n case 'importReplace': // substitute imported tiddler for existing tiddler\n var theItem = theList.options[config.macros.importTiddlers.index];\n for (var j=0;j<config.macros.importTiddlers.inbound.length;j++)\n if (config.macros.importTiddlers.inbound[j].title==theItem.value) break;\n var theImported = config.macros.importTiddlers.inbound[j];\n var theExisting = store.getTiddler(theItem.value);\n theImported.status = 'replaces '+theExisting.title; // mark item for replace\n theImported.status += ' - '+theExisting.modified.formatString("MM/DD/YYYY hh:mm:ss");\n theImported.status += ' by '+theExisting.modifier;\n theAskPanel.style.display='none';\n config.macros.importTiddlers.index=importTiddlers(config.macros.importTiddlers.index); // resume with THIS item\n importStopped();\n break;\n case 'importListSmaller': // decrease current listbox size, minimum=5\n if (theList.options.length==1) break;\n theList.size-=(theList.size>5)?1:0;\n config.macros.importTiddlers.listsize=theList.size;\n break;\n case 'importListLarger': // increase current listbox size, maximum=number of items in list\n if (theList.options.length==1) break;\n theList.size+=(theList.size<theList.options.length)?1:0;\n config.macros.importTiddlers.listsize=theList.size;\n break;\n case 'importListMaximize': // toggle listbox size between current and maximum\n if (theList.options.length==1) break;\n theList.size=(theList.size==theList.options.length)?config.macros.importTiddlers.listsize:theList.options.length;\n break;\n }\n}\n//}}}\n\n// // re-entrant processing for handling import with interactive collision prompting\n//{{{\nfunction importTiddlers(startIndex)\n{\n if (!config.macros.importTiddlers.inbound) return -1;\n\n var theList = document.getElementById('importList');\n if (!theList) return;\n var t;\n // if starting new import, reset import status flags\n if (startIndex==0)\n for (var t=0;t<config.macros.importTiddlers.inbound.length;t++)\n config.macros.importTiddlers.inbound[t].status="";\n for (var i=startIndex; i<theList.options.length; i++)\n {\n // if list item is not selected or is a heading (i.e., has no value), skip it\n if ((!theList.options[i].selected) || ((t=theList.options[i].value)==""))\n continue;\n for (var j=0;j<config.macros.importTiddlers.inbound.length;j++)\n if (config.macros.importTiddlers.inbound[j].title==t) break;\n var theImported = config.macros.importTiddlers.inbound[j];\n var theExisting = store.getTiddler(theImported.title);\n // avoid redundant import for tiddlers that are listed multiple times (when 'by tags')\n if (theImported.status=="added")\n continue;\n // don't import the "ImportedTiddlers" history from the other document...\n if (theImported.title=='ImportedTiddlers')\n continue;\n // if tiddler exists and import not marked for replace or merge, stop importing\n if (theExisting && (theImported.status.substr(0,7)!="replace") && (theImported.status.substr(0,5)!="merge"))\n return i;\n // assemble tags (remote + existing + added)\n var newTags = "";\n if (config.macros.importTiddlers.importTags)\n newTags+=theImported.getTags() // import remote tags\n if (config.macros.importTiddlers.keepTags && theExisting)\n newTags+=" "+theExisting.getTags(); // keep existing tags\n if (config.macros.importTiddlers.addTags && config.macros.importTiddlers.newTags.trim().length)\n newTags+=" "+config.macros.importTiddlers.newTags; // add new tags\n theImported.set(null,null,null,null,newTags.trim());\n // set the status to 'added' (if not already set by the 'ask the user' UI)\n theImported.status=(theImported.status=="")?'added':theImported.status;\n // do the import!\n store.addTiddler(theImported);\n store.setDirty(true);\n }\n return(-1); // signals that we really finished the entire list\n}\n//}}}\n\n//{{{\nfunction importStopped()\n{\n var theList = document.getElementById('importList');\n var theNewTitle = document.getElementById('importNewTitle');\n if (!theList) return;\n if (config.macros.importTiddlers.index==-1)\n importReport(); // import finished... generate the report\n else\n {\n // DEBUG alert('import stopped at: '+config.macros.importTiddlers.index);\n // import collision... show the ask panel and set the title edit field\n document.getElementById('importAskPanel').style.display='block';\n theNewTitle.value=theList.options[config.macros.importTiddlers.index].value;\n }\n}\n//}}}\n
A corporate attorney sent the following out to the employees in his company.\n \n1. The next time you order checks have only your initials (instead of first name) and last name put on them. If someone takes your checkbook, they will not k now if you sign your checks with just your initials or your first name, but your bank will know how you sign your checks.\n\n2. Do not sign the back of your credit cards. Instead, put "PHOTO ID REQUIRED".\n\n3 When you are writing checks to pay on your credit card accounts, DO NOT put the complete account number on the "For" line. Instead, just put the last four numbers. The credit card company knows the rest of the number, and anyone who might be handling your check as it passes through all the check processing channels won't have access to it.\n\n4. Put your work phone # on your checks instead of your home phone. If you have a P.O. Box, use that instead of your home address. If you do not have a P.O. Box, use your work address. Never have your SS# printed on your checks.(DUH!) You can add it if it is necessary. But if you have it printed, anyone can get it.\n \n5. Place the contents of your wallet on a photocopy machine. Do both sides of each license, credit card, etc. You will know what you had in your wallet and all of the account numbers and phone numbers to call and cancel. Keep the photocopy in a safe place. I also carry a photocopy of my passport when travel either here or abroad. We've all heard horror stories about fraud that's committed on us in stealing a name, address, Social Security number, credit cards.\n\nUnfortunately I, an attorney, have firsthand knowledge because my wallet was stolen last month. Within a week, the thieve(s) ordered an expensive monthly cell phone package, applied for a VISA credit card, had a credit line approved to buy a Gateway computer, received a PIN number from DMV to change my driving record information online, and more. But here's some critical information to limit the damage in case this happens to you or someone you know:\n\n1. We have been told we should cancel our credit cards immediately. But the key is having the toll free numbers and your card numbers handy so you know whom to call. Keep those where you can find them.\n\n2. File a police report immediately in the jurisdiction where your credit cards, etc., were stolen. This proves to credit providers you were diligent, and this is a first step toward an investigation (if there ever is one) .\n\nBut here's what is perhaps most important of all: (I never even thought to do this.)\n\n3. Call the 3 national credit reporting organizations immediately to place a fraud alert on your name and Social Security number. I had never heard of doing that until advised by a bank that called to tell me an application for credit was made over the Internet in my name. The alert means any company that checks your credit knows your information was stolen, and they have to contact you by phone to authorize new credit.\n\nBy the time I was advised to do this, almost two weeks after the theft, all the damage had been done. There are records of all the credit checks initiated by the thieves' purchases, none of which I knew about before placing the alert. Since then, no additional damage has been done, and the thieves threw my wallet away. This weekend (someone turned it in).\nIt seems to have stopped them dead in their tracks.\n\nNow, here are the numbers you always need to contact about your wallet, etc., has been stolen:\n1.) Equifax: 1-800-525-6285\n2.) Experian (formerly TRW): 1-888-397-3742\n3.) Trans Union: 1-800-680-7289\n4.) Social Security Administration (fraud line): 1-800-269-0271\n
"Java is more suitable to developing apps that require a few dozen people to build and keep running after it takes you too long to make it and the requirements have become irrelevant in the meantime but your sponsor has invested so much money in the damned thing that they can't pull the plug on it without looking like fools."\n
<<timeline>>\n
Good Polish maker of fine leather furniture.\n\nhttp://www.kler.pl/?pid=home&language=en
16 1/2 31 3/4\nLarge return grills\nsome extruded aluminum:\nhttp://www.hartandcooley.com/classics/products/sidewall%20and%20baseboard.htm\nhttp://www.hartandcooley.com/grd/all_grd.htm\n\n\n\n
Justice Is Dead, If You’re Born an Arab\nLubna Hussain, lubna@arabnews.com\n \n\nI still feel a shudder of deja-vu at the irony with which I wrote last week about the ‘generosity’ of the US government’s gift of 2,000 rolls of plastic sheeting to the Lebanese as it rushed precision guided missiles to its henchmen in Israel. Never in my wildest dreams did I imagine that my macabre analogy would become a self-fulfilling prophecy. But there it was right before my eyes. A picture of a series of tiny bodies wrapped in plastic sheets so magnanimously donated by Uncle George and Aunti Condi, callously murdered by the very weapons they had so eagerly equipped the Israelis with. The names of little Mehdi aged seven and Abbas aged one were scrawled in black ink on labels identifying the victims of the US-sponsored Israeli genocide of innocent Lebanese civilians. (I wonder if the felt tip pens and labels were included in the humanitarian aid packages as a gesture of thoughtfulness? What a touching detail!)\n\nThe obscene slaughter in Qana (and yes, for the hundreds of detractors who accused me of being ‘bias’, ‘obscene slaughter’ is a pathetically gross understatement for this wholesale annihilation that defies definition) of 62 people, 34 of whom were children, made my blood boil with anger. I read in absolute horror how the Israelis had, with ‘surgical precision’, bombed the house where these terrified souls had been hiding in the basement. Some of the children were awake playing when their lives were so cruelly cut short. Children. Babies. Murdered in cold blood.\n\nBut according to Israeli Prime Minister Ehud Olmert they had time to make a quick getaway. It was one o’clock in the morning for God’s sake! Who would have warned them and where would they have gone considering his air force had already bombed the roads and gas stations in the vicinity? In whose footsteps were they expected to follow? All those others who had foolishly heeded Israeli warnings to evacuate and then were deliberately murdered as they fled? Perhaps they should have been more considerate and departed in an ambulance so that the big red cross on top would have made it easier for the Israeli fighter pilots to spot and hit?\n\nAnd how absolutely awful that Fuad Siniora, the spoilsport prime minister of Lebanon, ordered Aunti Condi to call off her peace-making trip even though she had just been to the hairdresser’s and ordered a new black suit especially for the occasion. And to add insult to injury he even insisted that she call a cease-fire! What on earth could he have been thinking? But that is of course yesterday’s news. It seems that no massacre of civilians in Lebanon is worthy enough to secure a lull in the vicious and illegal Israeli onslaught that continues unabated with the full blessings of its American and British consorts. (Uncle George and Aunti Condi were enjoying a quiet dinner together as Tony Blair schmoozed with the rich and the beautiful in California and embarked on the more pressing campaign of sympathizing with Chelsea football players on the ‘pressures of taking penalties’.) Even Israel’s promise to halt the bombing for 48 hours after the Qana tragedy was yet another lie.\n\nWithin a few days the repeated cycle of shellings, killings and destruction will bore the already-jaded TV viewers and this tragedy will all too quickly be forgotten like its Iraqi, Palestinian and Afghani predecessors.\n\nBut we will never forget. Even though the so-called ‘civilized world’ may have its selective bouts of amnesia we will remember the people of Qana, like we remember the 106 refugees who were killed there by the Israelis as they sheltered in a UN base a decade ago. And what’s more is we will recall with clarity what started this all in the first place.\n\nThe media circus would like us all to believe that this crisis has proliferated solely because of Hezbollah’s irresponsible capture of Israeli soldiers. There is some truth to this. But I wonder how it is that statements by the Israeli government about threatening to take Lebanon back 20 years and putting the whole population of Gaza ‘on a diet’ are mysteriously seen as pacifist, uninflammatory and unprovocative? Does it not strike the intelligent reader as a bit strange that the kidnapping is considered such a heinous crime and an outrage whereas the illegal occupation of the Shebaa Farms and Tela Kafr Shooba in the South of Lebanon as well as the entire West Bank and the continuous build-up of illegal Israeli settlements is not?\n\nBut who talks of the Israeli abduction of a Palestinian doctor and his brother from Gaza that led to the eventual capture of these soldiers? Who even bothers to mention the fact that 10,000 Palestinian prisoners languish in Israeli jails? What about the Israeli bombing of a power station that condemns the already wretched Palestinians to a life without water or sewage? Or the wall of apartheid that has been constructed to strangle the Palestinians of their basic human rights?\n\nDoes anyone remember the failed illegal assassination attempt by Israel that not only missed its target, but left three Palestinian children dead and 15 civilians wounded on June 20? Or how about on June 13 when in a similar feat, the Israelis missed again (pinpoint accuracy, remember?) and killed nine? Or June 9 (perhaps that’s pushing history a bit too far) when Israel shelled a beach in Beit Lahiya killing eight and injuring several others?\n\nOops! Silly me! I forgot that the dead I mentioned are Palestinians, the new millennium equivalent of the World War I term ‘cannon fodder’. Am I mistaken or was it not the same Uncle George who warmly welcomed Prime Minister Siniora in the White House three months ago (now we’re getting into pre-historic times!) praising the ‘hundreds of thousands of people who took to the streets to express their desire to be free’? And now Uncle George leaves them ‘free’ to hang by allowing the Israelis a little bit more rope?\n\nAnd, pardon me for asking, but if there was just such a huge threat to Israeli security by the crude missiles and rockets fired into it by Hezbollah why is it that the massive evacuation of foreigners that was so urgently carried out from Lebanon has not been deemed necessary from Israel?\n\nThe world is a sick place afflicted with a malaise of hypocrisy, deceit and treachery that has made it rotten to its core. The United Nations, perhaps one of the only bastions of remaining hope, was left neutered by the Israeli attack on its observation post leaving four of its personnel dead. How utterly bizarre that there was no expression of remorse or regret from either the US or British governments? A confirmation perhaps of the UN’s increasing impotence on the global stage and yet another superfluous green light that Israel hardly needed to continue to run amok. It comes as no surprise that Aunti Condi is flogging the dead UN horse to pretend to seek a new resolution and international force to stall for time so that the carnage can continue giving Israel the all-clear to inflict more civilian casualties and obliterate the infrastructure of an entire country.\n\nAnd if the EU was our last realistic hope for a diplomatic push, then here too we have been bitterly disappointed. Britain’s and Germany’s block of a call for an immediate cease-fire has taught us in the uncivilized world that the only lesson that is valuable to note is that justice is dead. At least if you’re born an Arab.\n\nIf Bush, Blair and Olmert truly believe that their war crimes in Lebanon are going to crush the influence of Hezbollah they not only suffer from all of the aforementioned ailments but are, in addition to those, utterly delusional. The terrorists of tomorrow are being created by the failed politicians of today. And for those of you who are about to fill up my inbox with justification for these atrocities, just remember: you wouldn’t try so hard to convince me if you didn’t think I was right.\n\n* * *\n\n(Lubna Hussain is a Saudi writer. She is based in Riyadh.)\n\n
<<forEachTiddler\n where\n 'tiddler.tags.contains("MainMenuLinks")'\n script\n '\n function getFirstLine(s) {\n var m = s.match(/\ss*(.*)/);\n return m != null && m.length >= 1 ? m[1] : "";\n }\n '\n write\n '"*"+getFirstLine(tiddler.text)+"\sn"' \n>>\n
[[Links]]
Resolution: custom code in 2.6.14-rc5 and beyond to correct flaky motherboard. Move to later linux kernels. \n\nOriginal Post: 21 October 2005\n\nSymptoms:\n\n\nfast clock wreaks havoc on amd64 dual core - hp1250n\n\n * To: debian-amd64@lists.debian.org\n * Subject: fast clock wreaks havoc on amd64 dual core - hp1250n\n * From: "Nathan O. Siemers"\n * Date: Fri, 21 Oct 2005 21:52:05 -0400\n \nHello all,\n\nI've spent the last 5 days trying to fix an issue with a brand new hp a1250n dual core athlon64 machine. ATI motherboard with embedded radeon xpress 200 graphics. I've installed the pure64 sarge distribution. This is my first 64 bit debian attempt, although I am running a 2 cpu opteron workstation with suse at work.\n\nThe system in many ways okay, but there is a serious problem with interrupts and clock speed which wreaks general havoc on the machine. The clock is running about 2x speed - I think perhaps two clock ticks (from each core?) are happening for each one that should. X windows keyboard behavior is quite erratic, I often get 2-4 chars repeated for each key typed. I believe this is consistent with lots of interrupt activity?\n\nSummary of my experiments so far:\n\n2.6.13.4 kernel\n\n1. turning off smp in kernel compile configuration does not correct the problem.\n\n2. no_timer_check and/or notsc does not reliably correct the problem - I have seen some help for periods of time.\n\n3. moving from athlon64 to generic x86_64 during kernel compile does nothing\n\n4. no_timer_check pci=noacpi pci=routeirq kernel boot option corrects the 2x clock speed problem, but breaks at lot of other things - I am running this at the moment so I can use the computer (but my firewire drive is not recognized, for example).\n\n5. PM_timer kernel compile option does nothing\n\n6. Changing timer frequency does nothing.\n\nI wanted to check with older 2.6 kernels but experience a failed boot on stock debian 2.6.8 amd64-smp kernel, I don't this is indicative of a problem other than misconfiguration of grub or devfs subsystems (there is a pivot_root at boot time that fails)...\n\nsome interesting log entries:\n\nkern.log:\nOct 18 14:57:48 localhost kernel: Losing some ticks... checking if CPU frequency changed.\n\nOct 18 23:36:50 line kernel: Your time source seems to be instable or some driver is hogging interupts\nOct 19 05:40:05 line kernel: rtc: lost some interrupts at 2048Hz.\nOct 19 05:49:33 line kernel: rtc: lost some interrupts at 2048Hz.\n\nThis seems like it could be related to kernel bug 3927:\n\nhttp://bugzilla.kernel.org/show_bug.cgi?id=3927\n\nwhich has been marked as "resolved" but my reading suggest that a sufficient number of people found workarounds to let the bug subside rather than fixing it...\n\nIn any case, my deep appreciation to anyone who has a solution after days of kernel recompiles and rebooting with various boot options. Happy to send more detailed logs and kernel compile options if there is interest.\n\nNathan\n
''This simple script is used in combination with [[wget]], where I have [[cron]] download satellite photos several times an hour and even though the name of the file is always the same, I need to store all images as files, sortable by time:''\n\n//updatingfiles foo.gif//\n\nwill rename //foo.gif// to //<UTS>.gif//, preserving the path, where <UTS> is the unix ctime for the file in seconds.\nSince [[wget]] seems to honor the ctime on the NOAA web sites, this works for the job at hand.\n\n{{{\n### updatingfiles ###\n#!/bin/tcsh\n\n# wget seems to be able to modify mtime when copying from the web - we can exploit this to eliminate redundant copies of files that are updating...\n\nsetenv FILE_EXTENSION $1:e\nsetenv FILE_PATH $1:h\nsetenv FILE_ROOT $1:r\nsetenv FILE_TAIL $1:t\nsetenv TIMESTAMP `ls -lt --time-style=+%s $1 | awk '{print $6}'`\nif ( $FILE_PATH == $FILE_TAIL ) then\n # this means no leading path was given\n mv $1 $TIMESTAMP.$FILE_EXTENSION\nelse\n # preserve the path\n mv $1 $FILE_PATH/$TIMESTAMP.$FILE_EXTENSION\nendif\n}}}\n\n
<<forEachTiddler \n where\n'tiddler.tags.contains("Logs")'\n sortBy\n 'tiddler.created'\n descending\n>>\n
Blog entries, random Stuff.
[[Logs|#tag:Logs]]
martin mcdonnagh "six shooter" short film\n
mail messages from my treo and have them processed as tiddlers for import into TiddlyWiki
Link on CNN web site today:\n\n!Watch Israeli warships shell Tyre live on CNN Pipeline now.\n\n\nThirty-one days of fighting have killed 123 Israelis, including 40 civilians, and 861 Lebanese.\n
<<forEachTiddler\n where\n 'tiddler.tags.contains("FlickrBadge")'\n script\n '\n function getFirstLine(s) {\n var m = s.match(/\ss*(.*)/);\n return m != null && m.length >= 1 ? m[1] : "";\n }\n '\n write\n 'getFirstLine(tiddler.text)' \n>>\n*[[Welcome]]\n*[[Topics]]\n*[[Flickr Search Tool]]\n*[[Fiveprime.org is getting JoeBobbed]]\n*[[Propaganda Desktop Enhancements now archived on Fiveprime]]\n*[[Contact Nathan|Nathan Siemers]]\n*[[Bach Goldberg Variations: Transcription for 4 Cellos]]\n*[[X::Tiddlywikify - A simple Perl Module for writing Tiddlywikis]] \n<<forEachTiddler\n where\n 'tiddler.tags.contains("MainMenuLinks")'\n script\n '\n function getFirstLine(s) {\n var m = s.match(/\ss*(.*)/);\n return m != null && m.length >= 1 ? m[1] : "";\n }\n '\n write\n '"*"+getFirstLine(tiddler.text)+"\sn"' \n>><<forEachTiddler\n where\n 'tiddler.tags.contains("MainMenuForms")'\n script\n '\n function getFirstLine(s) {\n var m = s.match(/\ss*(.*)/);\n return m != null && m.length >= 1 ? m[1] : "";\n }\n '\n write\n '"*"+getFirstLine(tiddler.text)+"\sn"' \n>>
Type the text for 'MainMenuLinks'
[[Novelist Malcolm MacDonald|http://www.malcolmmacdonald.org]]
[[Malcolm's Macdonald's Research Library Sale|http://www.malcolmmacdonald.org/cgi-bin/shopwrap]]
Type the text for 'MalcolmMacdonald'
<link rel='alternate' type='application/rss+xml' title='RSS' href='index.xml'>\n <link rel="icon" href="http://www.fiveprime.org/favicon.ico" type="image/x-icon">\n <link rel="shortcut icon" href="http://www.fiveprime.org/favicon.ico" type="image/x-icon"> \n\n
From SFO take 101 South and take Half Moon Bay West exit.\nDon't stay in Room 1151 - nice suite but right next to some noisy pump.\nNot great rooms, but well located for SanFran stuff (actually centrally isolated, there's not a lot right close by)\n
He won't take my StanleyKiernoziak [[cello]] in for repairs. Very lame.\n\n2039 Locust Street, Philadelphia PA 19103 | moennig@juno.com\ntel: 800-523-4051 or 215-567-4198 | fax: 215-567-4175
Louis Morizot\nGreat French bow maker (1874-1957). He worked in Mirecourt in France.\n
Seems lcdtvs.com, bestbuyplasma.com, and perhaps plasmabay.com are all the same people with different fronts! Weird reviews of the place have kept me from purchasing from them so far!
<html>\n<center><h1>Nathan Siemers</h1>\n\n<img src="nathan/nathan_siemers.jpg">\n<br/>\n<img src="nosweb3s.gif">\n</center>\n\n<p>\n</html>\nI am Webmaster for novelist Malcolm MacDonald's website, \n[[http://www.malcolmmacdonald.org|http://www.malcolmmacdonald.org]]. In my spare\ntime I also function as Director, Applied Genomics, Bristol-Myers Squibb.\n[[Here|nathan/Siemers_CV.pdf]] is a current C.V. \n\nYou can also check out some older recordings of music\nperformances with the [[Polter String Quartet]].\n
Shop of Andras Post, Mozartkade, Amsterdam\nC. (or L.) Bausch Bow, Dresden ca 1870. very nice e4500\n\nShop of Matthieu Besseling\nBerman bow circa 1800, school of Knopf e2200\n\nGold mounted bow german circa 1870 e2600\n\nMatthiew Besseling's cello was nice but a bit tight sounding - he says he has the sound post tight to increase the consistency of the instrument in all ranges - it was indeed consistent and there was essentially no wolf at all to the instrument! e20,000\n\n
When I bought the foaming hand soap bottle I didn't need to sign any EULA saying you couldn't refill them. I believe that glycerine adds a bit of lubrication to the mechanism that seems to do the trick. Sorry, I did this at home and didn't have any metric pipettes ;)\n\n1 tablespoon glycerine\n5 tablespoons Ivory liquid hand soap\n1/2 cup water\n\nIt's a crime to pay for composition that's mostly water, but I guess we do that all the time. We ourselves might fall under that definition.\n\nWith unit conversions, the ratio of all ingredients is:\n\n1 glycerine : 5 liquid soap : 8 water\n\nNote: for a foaming Dawn dishwashing soap experience, you have to go to about 50:50 glycerine:Dawn, something like:\n\n3 glycerine: 3 Dawn : 8 water\n\nas dawn seriously fights the lubrication of the foam dispenser.\n\n-Nathan \n\n\n\n
National Character Counts Week, 2006 A Proclamation by the President of the United States of America\n\nAmerica's strength is found in the spirit and character of our people. During National Character Counts Week, we renew our commitment to instilling values in our young people and to encouraging all Americans to remember the importance of good character.\n\nAs the primary teachers and examples of character, parents help create a more compassionate and decent society. And as individuals, we all have an obligation to help our children become responsible citizens and realize their full potential. By demonstrating values such as integrity, courage, honesty, and patriotism, all Americans can help our children develop strength and character.\n\nCountless individuals throughout our country demonstrate character by volunteering their time and energy to help neighbors in need. The men and women of our Armed Forces set an example of character by bravely putting the security of our Nation before their own lives. We also see character in the family members, teachers, coaches, and other dedicated individuals whose hearts are invested in the future of our children.\n\nOur changing world requires virtues that sustain our democracy, make self-government possible, and help build a more hopeful future. National Character Counts Week is an opportunity to recognize the depth of America's character and appreciate those who pass on our values to future generations.\n\nNOW, THEREFORE, I, GEORGE W. BUSH, President of the United States of America, by virtue of the authority vested in me by the Constitution and laws of the United States, do hereby proclaim October 15 through October 21, 2006, as National Character Counts Week. I call upon public officials, educators, librarians, parents, students, and all Americans to observe this week with appropriate ceremonies, activities, and programs.\n\nIN WITNESS WHEREOF, I have hereunto set my hand this thirteenth day of October, in the year of our Lord two thousand six, and of the Independence of the United States of America the two hundred and thirty-first.\n\nGEORGE W. BUSH
National Security and Homeland Security Presidential Directive\n\nNATIONAL SECURITY PRESIDENTIAL DIRECTIVE/NSPD 51\n\nHOMELAND SECURITY PRESIDENTIAL DIRECTIVE/HSPD-20\n\nSubject: National Continuity Policy\n\nPurpose\n\n(1) This directive establishes a comprehensive national policy on the continuity of Federal Government structures and operations and a single National Continuity Coordinator responsible for coordinating the development and implementation of Federal continuity policies. This policy establishes "National Essential Functions," prescribes continuity requirements for all executive departments and agencies, and provides guidance for State, local, territorial, and tribal governments, and private sector organizations in order to ensure a comprehensive and integrated national continuity program that will enhance the credibility of our national security posture and enable a more rapid and effective response to and recovery from a national emergency.\n\nDefinitions\n\n(2) In this directive:\n\n(a) "Category" refers to the categories of executive departments and agencies listed in Annex A to this directive;\n\n(b) "Catastrophic Emergency" means any incident, regardless of location, that results in extraordinary levels of mass casualties, damage, or disruption severely affecting the U.S. population, infrastructure, environment, economy, or government functions;\n\n(c) "Continuity of Government," or "COG," means a coordinated effort within the Federal Government's executive branch to ensure that National Essential Functions continue to be performed during a Catastrophic Emergency;\n\n(d) "Continuity of Operations," or "COOP," means an effort within individual executive departments and agencies to ensure that Primary Mission-Essential Functions continue to be performed during a wide range of emergencies, including localized acts of nature, accidents, and technological or attack-related emergencies;\n\n(e) "Enduring Constitutional Government," or "ECG," means a cooperative effort among the executive, legislative, and judicial branches of the Federal Government, coordinated by the President, as a matter of comity with respect to the legislative and judicial branches and with proper respect for the constitutional separation of powers among the branches, to preserve the constitutional framework under which the Nation is governed and the capability of all three branches of government to execute constitutional responsibilities and provide for orderly succession, appropriate transition of leadership, and interoperability and support of the National Essential Functions during a catastrophic emergency;\n\n(f) "Executive Departments and Agencies" means the executive departments enumerated in 5 U.S.C. 101, independent establishments as defined by 5 U.S.C. 104(1), Government corporations as defined by 5 U.S.C. 103(1), and the United States Postal Service;\n\n(g) "Government Functions" means the collective functions of the heads of executive departments and agencies as defined by statute, regulation, presidential direction, or other legal authority, and the functions of the legislative and judicial branches;\n\n(h) "National Essential Functions," or "NEFs," means that subset of Government Functions that are necessary to lead and sustain the Nation during a catastrophic emergency and that, therefore, must be supported through COOP and COG capabilities; and\n\n(i) "Primary Mission Essential Functions," or "PMEFs," means those Government Functions that must be performed in order to support or implement the performance of NEFs before, during, and in the aftermath of an emergency.\n\nPolicy\n\n(3) It is the policy of the United States to maintain a comprehensive and effective continuity capability composed of Continuity of Operations and Continuity of Government programs in order to ensure the preservation of our form of government under the Constitution and the continuing performance of National Essential Functions under all conditions.\n\nImplementation Actions\n\n(4) Continuity requirements shall be incorporated into daily operations of all executive departments and agencies. As a result of the asymmetric threat environment, adequate warning of potential emergencies that could pose a significant risk to the homeland might not be available, and therefore all continuity planning shall be based on the assumption that no such warning will be received. Emphasis will be placed upon geographic dispersion of leadership, staff, and infrastructure in order to increase survivability and maintain uninterrupted Government Functions. Risk management principles shall be applied to ensure that appropriate operational readiness decisions are based on the probability of an attack or other incident and its consequences.\n\n(5) The following NEFs are the foundation for all continuity programs and capabilities and represent the overarching responsibilities of the Federal Government to lead and sustain the Nation during a crisis, and therefore sustaining the following NEFs shall be the primary focus of\n\nthe Federal Government leadership during and in the aftermath of an emergency that adversely affects the performance of Government Functions:\n\n(a) Ensuring the continued functioning of our form of government under the Constitution, including the functioning of the three separate branches of government;\n\n(b) Providing leadership visible to the Nation and the world and maintaining the trust and confidence of the American people;\n\n(c) Defending the Constitution of the United States against all enemies, foreign and domestic, and preventing or interdicting attacks against the United States or its people, property, or interests;\n\n(d) Maintaining and fostering effective relationships with foreign nations;\n\n(e) Protecting against threats to the homeland and bringing to justice perpetrators of crimes or attacks against the United States or its people, property, or interests;\n\n(f) Providing rapid and effective response to and recovery from the domestic consequences of an attack or other incident;\n\n(g) Protecting and stabilizing the Nation's economy and ensuring public confidence in its financial systems; and\n\n(h) Providing for critical Federal Government services that address the national health, safety, and welfare needs of the United States.\n\n(6) The President shall lead the activities of the Federal Government for ensuring constitutional government. In order to advise and assist the President in that function, the Assistant to the President for Homeland Security and Counterterrorism (APHS/CT) is hereby designated as the National Continuity Coordinator. The National Continuity Coordinator, in coordination with the Assistant to the President for National\n\nSecurity Affairs (APNSA), without exercising directive authority, shall coordinate the development and implementation of continuity policy for executive departments and agencies. The Continuity Policy Coordination Committee (CPCC), chaired by a Senior Director from the Homeland Security Council staff, designated by the National Continuity Coordinator, shall be the main day-to-day forum for such policy coordination.\n\n(7) For continuity purposes, each executive department and agency is assigned to a category in accordance with the nature and characteristics of its national security roles and\n\nresponsibilities in support of the Federal Government's ability to sustain the NEFs. The Secretary of Homeland Security shall serve as the President's lead agent for coordinating overall\n\ncontinuity operations and activities of executive departments and agencies, and in such role shall perform the responsibilities set forth for the Secretary in sections 10 and 16 of this directive.\n\n(8) The National Continuity Coordinator, in consultation with the heads of appropriate executive departments and agencies, will lead the development of a National Continuity Implementation Plan (Plan), which shall include prioritized goals and objectives, a concept of operations, performance metrics by which to measure continuity readiness, procedures for continuity and incident management activities, and clear direction to executive department and agency continuity coordinators, as well as guidance to promote interoperability of Federal Government continuity programs and procedures with State, local, territorial, and tribal governments, and private sector owners and operators of critical infrastructure, as appropriate. The Plan shall be submitted to the President for approval not later than 90 days after the date of this directive.\n\n(9) Recognizing that each branch of the Federal Government is responsible for its own continuity programs, an official designated by the Chief of Staff to the President shall ensure that the executive branch's COOP and COG policies in support of ECG efforts are appropriately coordinated with those of\n\nthe legislative and judicial branches in order to ensure interoperability and allocate national assets efficiently to maintain a functioning Federal Government.\n\n(10) Federal Government COOP, COG, and ECG plans and operations shall be appropriately integrated with the emergency plans and capabilities of State, local, territorial, and tribal governments, and private sector owners and operators of critical infrastructure, as appropriate, in order to promote interoperability and to prevent redundancies and conflicting lines of authority. The Secretary of Homeland Security shall coordinate the integration of Federal continuity plans and operations with State, local, territorial, and tribal governments, and private sector owners and operators of critical infrastructure, as appropriate, in order to provide for the delivery of essential services during an emergency.\n\n(11) Continuity requirements for the Executive Office of the President (EOP) and executive departments and agencies shall include the following:\n\n(a) The continuation of the performance of PMEFs during any emergency must be for a period up to 30 days or until normal operations can be resumed, and the capability to be fully operational at alternate sites as soon as possible after the occurrence of an emergency, but not later than 12 hours after COOP activation;\n\n(b) Succession orders and pre-planned devolution of authorities that ensure the emergency delegation of authority must be planned and documented in advance in accordance with applicable law;\n\n(c) Vital resources, facilities, and records must be safeguarded, and official access to them must be provided;\n\n(d) Provision must be made for the acquisition of the resources necessary for continuity operations on an emergency basis;\n\n(e) Provision must be made for the availability and redundancy of critical communications capabilities at alternate sites in order to support connectivity between\n\nand among key government leadership, internal elements, other executive departments and agencies, critical partners, and the public;\n\n(f) Provision must be made for reconstitution capabilities that allow for recovery from a catastrophic emergency and resumption of normal operations; and\n\n(g) Provision must be made for the identification, training, and preparedness of personnel capable of relocating to alternate facilities to support the continuation of the performance of PMEFs.\n\n(12) In order to provide a coordinated response to escalating threat levels or actual emergencies, the Continuity of Government Readiness Conditions (COGCON) system establishes executive branch continuity program readiness levels, focusing\n\non possible threats to the National Capital Region. The President will determine and issue the COGCON Level. Executive departments and agencies shall comply with the requirements and\n\nassigned responsibilities under the COGCON program. During COOP activation, executive departments and agencies shall report their readiness status to the Secretary of Homeland Security or the Secretary's designee.\n\n(13) The Director of the Office of Management and Budget shall:\n\n(a) Conduct an annual assessment of executive department and agency continuity funding requests and performance data that are submitted by executive departments and agencies as part of the annual budget request process, in order to monitor progress in the implementation of the Plan and the execution of continuity budgets;\n\n(b) In coordination with the National Continuity Coordinator, issue annual continuity planning guidance for the development of continuity budget requests; and\n\n(c) Ensure that heads of executive departments and agencies prioritize budget resources for continuity capabilities, consistent with this directive.\n\n(14) The Director of the Office of Science and Technology Policy shall:\n\n(a) Define and issue minimum requirements for continuity communications for executive departments and agencies, in consultation with the APHS/CT, the APNSA, the Director of the Office of Management and Budget, and the Chief of Staff to the President;\n\n(b) Establish requirements for, and monitor the development, implementation, and maintenance of, a comprehensive communications architecture to integrate continuity components, in consultation with the APHS/CT, the APNSA, the Director of the Office of Management and Budget, and the Chief of Staff to the President; and\n\n(c) Review quarterly and annual assessments of continuity communications capabilities, as prepared pursuant to section 16(d) of this directive or otherwise, and report the results and recommended remedial actions to the National Continuity Coordinator.\n\n(15) An official designated by the Chief of Staff to the President shall:\n\n(a) Advise the President, the Chief of Staff to the President, the APHS/CT, and the APNSA on COGCON operational execution options; and\n\n(b) Consult with the Secretary of Homeland Security in order to ensure synchronization and integration of continuity activities among the four categories of executive departments and agencies.\n\n(16) The Secretary of Homeland Security shall:\n\n(a) Coordinate the implementation, execution, and assessment of continuity operations and activities;\n\n(b) Develop and promulgate Federal Continuity Directives in order to establish continuity planning requirements for executive departments and agencies;\n\n(c) Conduct biennial assessments of individual department and agency continuity capabilities as prescribed by the Plan and report the results to the President through the APHS/CT;\n\n(d) Conduct quarterly and annual assessments of continuity communications capabilities in consultation with an official designated by the Chief of Staff to the President;\n\n(e) Develop, lead, and conduct a Federal continuity training and exercise program, which shall be incorporated into the National Exercise Program developed pursuant to Homeland Security Presidential Directive-8 of December 17, 2003 ("National Preparedness"), in consultation with an\n\nofficial designated by the Chief of Staff to the President;\n\n(f) Develop and promulgate continuity planning guidance to State, local, territorial, and tribal governments, and private sector critical infrastructure owners and operators;\n\n(g) Make available continuity planning and exercise funding, in the form of grants as provided by law, to State, local, territorial, and tribal governments, and private sector critical infrastructure owners and operators; and\n\n(h) As Executive Agent of the National Communications System, develop, implement, and maintain a comprehensive continuity communications architecture.\n\n(17) The Director of National Intelligence, in coordination with the Attorney General and the Secretary of Homeland Security, shall produce a biennial assessment of the foreign and domestic threats to the Nation's continuity of government.\n\n(18) The Secretary of Defense, in coordination with the Secretary of Homeland Security, shall provide secure, integrated, Continuity of Government communications to the President, the Vice President, and, at a minimum, Category I executive departments and agencies.\n\n(19) Heads of executive departments and agencies shall execute their respective department or agency COOP plans in response to a localized emergency and shall:\n\n(a) Appoint a senior accountable official, at the Assistant Secretary level, as the Continuity Coordinator for the department or agency;\n\n(b) Identify and submit to the National Continuity Coordinator the list of PMEFs for the department or agency and develop continuity plans in support of the NEFs and the continuation of essential functions under all conditions;\n\n(c) Plan, program, and budget for continuity capabilities consistent with this directive;\n\n(d) Plan, conduct, and support annual tests and training, in consultation with the Secretary of Homeland Security, in order to evaluate program readiness and ensure adequacy and viability of continuity plans and communications systems; and\n\n(e) Support other continuity requirements, as assigned by category, in accordance with the nature and characteristics of its national security roles and responsibilities\n\nGeneral Provisions\n\n(20) This directive shall be implemented in a manner that is consistent with, and facilitates effective implementation of, provisions of the Constitution concerning succession to the Presidency or the exercise of its powers, and the Presidential Succession Act of 1947 (3 U.S.C. 19), with consultation of the Vice President and, as appropriate, others involved. Heads of executive departments and agencies shall ensure that appropriate\n\nsupport is available to the Vice President and others involved as necessary to be prepared at all times to implement those provisions.\n\n(21) This directive:\n\n(a) Shall be implemented consistent with applicable law and the authorities of agencies, or heads of agencies, vested by law, and subject to the availability of appropriations;\n\n(b) Shall not be construed to impair or otherwise affect (i) the functions of the Director of the Office of Management and Budget relating to budget, administrative, and legislative proposals, or (ii) the authority of the Secretary of Defense over the Department of Defense, including the chain of command for military forces from the President, to the Secretary of Defense, to the commander of military forces, or military command and control procedures; and\n\n(c) Is not intended to, and does not, create any rights or benefits, substantive or procedural, enforceable at law or in equity by a party against the United States, its\n\nagencies, instrumentalities, or entities, its officers, employees, or agents, or any other person.\n\n(22) Revocation. Presidential Decision Directive 67 of October 21, 1998 ("Enduring Constitutional Government and Continuity of Government Operations"), including all Annexes thereto, is hereby revoked.\n\n(23) Annex A and the classified Continuity Annexes, attached hereto, are hereby incorporated into and made a part of this directive.\n\n(24) Security. This directive and the information contained herein shall be protected from unauthorized disclosure, provided that, except for Annex A, the Annexes attached to this directive are classified and shall be accorded appropriate handling, consistent with applicable Executive Orders.\n\nGEORGE W. BUSH\n\n
From: Marc Roussel - view profile\nDate: Mon, Mar 1 1993 1:00 am\nEmail: mrous...@alchemy.chem.utoronto.ca (Marc Roussel)\nGroups: sci.math, sci.chem\nNot yet rated\nRating: \nshow options\nReply | Reply to Author | Forward | Print | Individual Message | Show original | Report Abuse | Find messages by this author\n\nIn article <1mpsbcINN...@gap.caltech.edu> r...@cco.caltech.edu\n\n(Roger Ethan Moore) writes:\n>It is entirely possible that, at some point in the future, some\n>inconsitencies will develop within quantum mechanics, and necessitate the\n>development of a theory to superceed it.\n[...]\n>In its time, classical mechanics seemed so\n>perfect that nobody could imagine it having flaws.\n[...]\n>Even when QM has been superceded, it is likely that students will be taught\n>QM before they learn the theory which replaces it. Nonetheless, they\n>will be taught about how it is flawed, and about the problems which it\n>can't quite explain. As such, it seems reasonable that they will complain\n>about having to learn about the "lies" of QM.\n\n Does anyone complain about learning classical mechanics before\nquantum mechanics? No. Why? Because classical mechanics is a complete\nphysical theory without logical gaps; it gives the right answers within\nits range of validity.\n Contrast that to the situation with Lewis diagrams. There are no\nrules for writing down a complete set of Lewis diagrams for a given\nmolecule. There is no way to verify that a given set is either complete\nor (in whatever sense you care to attribute to the adjective) correct.\n Comparing quantum mechanics to Lewis diagrams makes no sense. They\nare just not the same sorts of intellectual constructs.\n\n Marc R. Roussel\n mrous...@alchemy.chem.utoronto.ca\n\nReply\n \n \n2\nFrom: Nathan Otto Siemers - view profile\nDate: Mon, Mar 1 1993 3:02 am\nEmail: n...@crux3.cit.cornell.edu (Nathan Otto Siemers)\nGroups: sci.math, sci.chem\nNot yet rated\nRating: \nshow options\nReply | Reply to Author | Forward | Print | Individual Message | Show original | Report Abuse | Find messages by this author\n\n...........\n\n Contrast that to the situation with Lewis diagrams. There are no\nrules for writing down a complete set of Lewis diagrams for a given\nmolecule. There is no way to verify that a given set is either complete\nor (in whatever sense you care to attribute to the adjective) correct.\n Comparing quantum mechanics to Lewis diagrams makes no sense. They\nare just not the same sorts of intellectual constructs.\n\n Contrast that to the situation with Quantum Mechanics. There are no\nrules for writing down a complete set of *basis sets* for a given\nmolecule. There is no way to verify that a given set is either complete\nor (in whatever sense you care to attribute to the adjective) correct.\n Comparing quantum mechanics to Lewis diagrams makes no sense. They\nare just not the same sorts of intellectual constructs.\n\n Or are they? You fiddle with them until you get the answer\nyou want. (hopefully humorous)\n\nNathan Siemers\n\n-- \nMy loathings are simple:\nstupidity, oppression, crime, cruelty, soft music. -Vladimir Nabokov\n/ | / /__| / /---/ /__| / | / nat...@chemres.tn.cornell.edu\n\nReply\n \n \n3\nFrom: Marc Roussel - view profile\nDate: Mon, Mar 1 1993 9:54 pm\nEmail: mrous...@alchemy.chem.utoronto.ca (Marc Roussel)\nGroups: sci.math, sci.chem\nNot yet rated\nRating: \nshow options\nReply | Reply to Author | Forward | Print | Individual Message | Show original | Report Abuse | Find messages by this author\n\nIn article <NS14.93Feb28140...@crux3.cit.cornell.edu>\nn...@crux3.cit.cornell.edu (Nathan Otto Siemers) writes:\n\n> Contrast that to the situation with Quantum Mechanics. There are no\n>rules for writing down a complete set of *basis sets* for a given\n>molecule. There is no way to verify that a given set is either complete\n>or (in whatever sense you care to attribute to the adjective) correct.\n\n That's neither right nor relevant. It is easy to verify whether a\ngiven basis set is complete. Besides, there is no real reason to solve\nSchrodinger's equation by basis set expansions. We just do it that way\nbecause it seems (for the moment) convenient. There are plenty of\npeople working on fully numerical solutions of Schrodinger's equation.\n\n>(hopefully humorous)\n\n I appreciate the humour, but I didn't want your posting to go\nunchallenged anyway. I wouldn't want silence to pass for acquiescence.\n\n Marc R. Roussel\n mrous...@alchemy.chem.utoronto.ca\n\nReply\n \n \n4\nFrom: Marc Roussel - view profile\nDate: Tues, Mar 2 1993 7:37 am\nEmail: mrous...@alchemy.chem.utoronto.ca (Marc Roussel)\nGroups: sci.math, sci.chem\nNot yet rated\nRating: \nshow options\nReply | Reply to Author | Forward | Print | Individual Message | Show original | Report Abuse | Find messages by this author\n\nIn article <NS14.93Mar1141...@crux3.cit.cornell.edu>\nn...@crux3.cit.cornell.edu (Nathan Otto Siemers) writes:\n\n>>>>>> On Mon, 1 Mar 1993 13:54:41 GMT, mrous...@alchemy.chem.utoronto.ca\n>(Marc Roussel) said:\n> | That's neither right nor relevant. It is easy to verify whether a\n> | given basis set is complete.\n\n> Limiting the subject to basis set expansions, it it *really*\n>easy to verify whether or not expansion is complete? In my limited\n>understanding of the subject, higher and higher levels of theory are\n>applied until the results become relatively invariant.\n\n I think you have confused two questions:\n\n 1) Completeness of the basis;\n 2) The necessary truncation of the basis to make computation\n tractable.\n\nEvery complete basis for the solutions of interesting problems contains an\ninfinite number of functions. It is (relatively) easy to prove that a given\nclass of functions is a complete basis for the solutions of a given\nHamiltonian (or often of a given class of Hamiltonians). We can't compute\nwith a complete basis however so we only use a part of it to do computations.\n Unfortunately, specialized work breeds specialized vocabularies\nthat often have significantly different meanings in different\nsubdisciplines. Such is the case with the word basis and there lies the\nroot of Nathan's confusion: Most computational chemists use the word\n"basis" loosely to mean the subset of the complete basis which they used\nin their calculation (e.g. the "3-21G basis"); they know the difference\nbut they haven't created a word to specifically denote the subset. That\ncauses a small culture clash with applied mathematicians (and people\nwith cross-disciplinary training like me) who use "basis" almost\nexclusively to mean "complete basis" and who say things like "truncated"\nor "partial basis" to describe the computationally useful subsets.\n I'll shut up now before I cause more confusion.\n\n Marc R. Roussel\n mrous...@alchemy.chem.utoronto.ca\n\nReply\n \n[Click the star to watch this topic] QM & basis sets (was organic chemistry lies) \n \n5\nFrom: Raul Valdes-Perez - view profile\nDate: Wed, Mar 3 1993 10:09 pm\nEmail: vald...@CS.CMU.EDU (Raul Valdes-Perez)\nGroups: sci.math, sci.chem\nNot yet rated\nRating: \nshow options\nReply | Reply to Author | Forward | Print | Individual Message | Show original | Report Abuse | Find messages by this author\n\n|> In article <NS14.93Feb28140...@crux3.cit.cornell.edu>\n|> n...@crux3.cit.cornell.edu (Nathan Otto Siemers) writes:\n|> > Contrast that to the situation with Quantum Mechanics. There are no\n|> >rules for writing down a complete set of *basis sets* for a given\n|> >molecule.\n\nIs there consensus that there exists no automatic procedure (e.g.,\nalgorithm) for accomplishing this task? How significant would it be\nif one came up with an algorithm?\n\nCan somebody sketch the steps involved in carrying out this task?\n\n-- \nRaul E. Valdes-Perez val...@cs.cmu.edu\nCarnegie Mellon University (412) 268-7127\n\nReply\n \n[Click the star to watch this topic] organic texts lie \n \n6\nFrom: john baez - view profile\nDate: Tues, Mar 2 1993 6:42 am\nEmail: b...@ucrmath.ucr.edu (john baez)\nGroups: sci.math, sci.chem\nFollowup-To: sci.math\nNot yet rated\nRating: \nshow options\nReply | Reply to Author | Forward | Print | Individual Message | Show original | Report Abuse | Find messages by this author\n\nIn article <NS14.93Feb28140...@crux3.cit.cornell.edu> n...@crux3.cit.cornell.edu (Nathan Otto Siemers) writes:\n\n> Contrast that to the situation with Quantum Mechanics. There are no\n>rules for writing down a complete set of *basis sets* for a given\n>molecule. There is no way to verify that a given set is either complete\n>or (in whatever sense you care to attribute to the adjective) correct.\n\nWell, it's certainly possible to tell whether one has a complete\northonormal basis for your Hilbert space or not, but I guess in practice\nyou often work with a finite orthonormal set and hope that the\nwavefunction you're looking for can be approximated "well enough" by a\nlinear combination of elements of that set. I wouldn't say there's NO\nWAY to tell whether you are right, but it is indeed a tough problem.\n\nIt's tough, for example, to compute upper bounds on the lowest\neigenvalue of a Hamiltonian. If you had one, and also a lower bound on\nthe second eigenvalue, and the latter was bigger than the former, you\ncould estimate how far off any guess at the ground state was. \n\nReply\n \n \n7\nFrom: Galen F Gawboy - view profile\nDate: Wed, Mar 3 1993 4:25 am\nEmail: ggaw...@magnus.acs.ohio-state.edu (Galen F Gawboy)\nGroups: sci.math\nNot yet rated\nRating: \nshow options\nReply | Reply to Author | Forward | Print | Individual Message | Show original | Report Abuse | Find messages by this author\n\nIn article <2...@galaxy.ucr.edu> b...@ucrmath.ucr.edu (john baez) writes:\n>In article <NS14.93Feb28140...@crux3.cit.cornell.edu> n...@crux3.cit.cornell.edu (Nathan Otto Siemers) writes:\n\n>> Contrast that to the situation with Quantum Mechanics. There are no\n>>rules for writing down a complete set of *basis sets* for a given\n>>molecule. There is no way to verify that a given set is either complete\n>>or (in whatever sense you care to attribute to the adjective) correct.\n\n Actually, there are the so called universal basis sets proposed by\nSteven Wilson and others. These basis sets are a systematic way of\ngenerating a complete basis set. They receive little use in that they\ntend to be too large to be of practical use. The basis sets currently\nused are not generated systematically. Instead they are either energy\nor property optimised. This allows a better basis set to be developed\nwith fewer functions than one would get via the "systematic" approaches.\n\n>Well, it's certainly possible to tell whether one has a complete\n>orthonormal basis for your Hilbert space or not, but I guess in practice\n>you often work with a finite orthonormal set and hope that the\n>wavefunction you're looking for can be approximated "well enough" by a\n>linear combination of elements of that set. I wouldn't say there's NO\n>WAY to tell whether you are right, but it is indeed a tough problem.\n\n>It's tough, for example, to compute upper bounds on the lowest\n>eigenvalue of a Hamiltonian. If you had one, and also a lower bound on\n>the second eigenvalue, and the latter was bigger than the former, you\n>could estimate how far off any guess at the ground state was. \n\n Actually it is relatively easy to compute an upper bound on the lowest\neigenvalue of a Hamiltonian within a given basis set expansion. All CI based\nmethods all do this, (SCF and MCSCF methods are a subset of CI based\nmethodologies). The killer is calculating a lower bound on the\nsecond eigenvalue. Of course if you were refering to the true upper\nbound which one would obtain with an infinite basis, then I am in full\nagreement on your point.\n\n-Regards\n\nGalen\n\nReply\n \n \n8\nFrom: john baez - view profile\nDate: Thurs, Mar 4 1993 3:45 am\nEmail: b...@ucrmath.ucr.edu (john baez)\nGroups: sci.math\nNot yet rated\nRating: \nshow options\nReply | Reply to Author | Forward | Print | Individual Message | Show original | Report Abuse | Find messages by this author\n\nIn article <1993Mar2.202546.14...@magnus.acs.ohio-state.edu> ggaw...@magnus.acs.ohio-state.edu (Galen F Gawboy) writes:\n\n> Actually it is relatively easy to compute an upper bound on the lowest\n>eigenvalue of a Hamiltonian within a given basis set expansion. All CI based\n>methods all do this, (SCF and MCSCF methods are a subset of CI based\n>methodologies). The killer is calculating a lower bound on the\n>second eigenvalue.\n\nSorry, this was a slip of the tongue, or brain. The point being (for\nthose not in the know) that the expectation value <psi,H psi> for\nany unit vector psi (aka "trial wavefunction") gives an upper bound\non the lowest eigenvalue of H. What's harder is getting a lower bound\non the first eigenvalue, and (as mentioned) a lower bound on the second\neigenvalue. \n
[img[New Jersey Radar|http://sirocco.accuweather.com/nx_mosaic_640x480c/sir/inmasirpa_.gif]]\n
Bristol-Myers, Sanofi-Aventis Submit New Agreement With Apotex\n\nJune 24 (Bloomberg) -- Bristol-Myers Squibb Co. and Sanofi- Aventis SA submitted a revised legal settlement with Apotex Inc. over the blood thinner Plavix, the world's second-biggest drug, after state attorneys general rejected the initial offer.\n\n``The states did reject the initial agreement which we have been reviewing for several months,'' said Maryland Assistant Attorney General Meredyth Smith Andrus said today, declining to give details of the settlement proposal. ``They have submitted a revised agreement.''\n\nThe rejected settlement would have prevented Apotex from selling a generic version of Plavix until 2011. Bristol-Myers and Sanofi also would have made undisclosed payments to Apotex until the licensing became effective. Once Apotex could sell the drugs, the Weston-Ontario company would have paid a royalty.\n\nTony Plohoros, a spokesman for Bristol-Myers, declined to comment today. Elie Betito, director of public affairs for Apotex, didn't answer his cell phone or return a voice message left at his office after hours. Jean-Marc Podvin, a spokesman for Sanofi-Aventis, didn't return a call or e-mail to his office.\n\nPlavix lags behind Pfizer Inc.'s cholesterol treatment Lipitor in global drug sales, generating $6.2 billion a year as a treatment for patients in the midst of a heart attack or undergoing artery-clearing procedures. Paris-based Sanofi and New York-based Bristol-Myers, which jointly developed Plavix, are seeking to squeeze more profit from the product as they develop more drugs.\n\nAntitrust Review\n\nThe proposal was made to settle a patent infringement lawsuit that was scheduled to go to trial in June in U.S. District Court for the Southern District of New York.\n\nBristol-Myers Squibb, the fourth-biggest U.S. drugmaker, is under a 10-year court decree until 2013 to submit any legal agreement on a patent-infringement case for approval, Andrus said. The order was issued following lawsuits that accused Bristol-Myers of using patents to thwart low-cost rivals for the cancer medicine Taxol and anti-anxiety drug BuSpar.\n\nBristol-Myers paid $135 million to settle the Taxol case and $535 million to settle the BuSpar allegations.\n\nThe agreement with Apotex must pass an antitrust review as well as approval by the Federal Trade Commission and state attorneys general of the 50 U.S. states as well as the District of Columbia, and territories American Samoa, Guam, Northern Mariana Islands, Puerto Rico and the Virgin Islands.\n\nNews of the revised agreement was reported earlier by The Wall Street Journal.\n
/***\n|Name|NewHereCommand|\n|Source|http://simonbaird.com/mptw/#NewHereCommand|\n|Version|1.0|\n\nCode originally by ArphenLin. Small tweak by SimonBaird\nhttp://aiddlywiki.sourceforge.net/NewHere_demo.html#NewHereCommand\nTo use this you must edit your ViewTemplate and add newHere to the toolbar div, eg\n{{{<div class='toolbar' macro='toolbar ... newHere'></div>}}}\n***/\n\n//{{{\n\nconfig.commands.newHere = {\n text: 'new here',\n tooltip: 'Create a new tiddler tagged as this tiddler',\n handler: function(e,src,title) {\n if (!readOnly) {\n clearMessage();\n var t=document.getElementById('tiddler'+title);\n story.displayTiddler(t,config.macros.newTiddler.title,DEFAULT_EDIT_TEMPLATE);\n story.setTiddlerTag(config.macros.newTiddler.title, title, 0);\n story.focusTiddler(config.macros.newTiddler.title,"title");\n return false;\n }\n }\n};\n\n//}}}
This is the TiddlyWiki of NathanSiemers \nRelevant links:\n\n[[Fiveprime|http://www.fiveprime.org]]\n
[[Nosha Flickr|http://www.flickr.com/photos/nosha]]
http://www.discordia-music.com/Arpeggione_Project/sonata_revisited1.htm\n\nDeveloped in 1823 by the Viennese guitar luthier Johann Georg Staufer (1778-1853), the arpeggione (also known as the bowed guitar/bogen-guitarre, guitarre d'amour, and guitarre-violoncell) was a bowed, six-stringed, fretted instrument, which was tuned exactly like a classical guitar. Its body shape was also similar to a guitar, with smooth rather than pointed violin corners. Because the instrument lacked an endpin, it was held between the knees like a viola da gamba. Presumably, Staufer used a thread of logic similar to the 15th century creators of the viol family when he envisioned the arpeggione: a bowed version of an existing plucked instrument (in the case of the viol family, the lute) that could easily be learned by players of the existing instrument after only a few simple bowing exercises.1\n\nStaufer was arguably the most important figure of the Viennese guitar luthierie in the early 19th century. He introduced several critical innovations to the shape and structure of the guitar, many of which are still in use today. The "Persian slipper" shape of the headstocks—a defining design element instigated by Staufer—is currently brandished on all Fender Stratocaster electric guitars. The most striking of his innovations, however, was the "flying fingerboard," which allowed the performer to set the action of the instrument according to his taste by raising or lowering the height of the fingerboard. Refinements such as sloping, violin-style backs, pronounced upper and lower bouts (like those of modern guitars), and range-increasing 22-fret fingerboards are also attributed to Staufer's shop in Vienna.\n\nThe arpeggione itself, though not well received generally, did breed a small group of players and enthusiasts. According to the preface of the sonata's first edition, it was for one of these enthusiasts—Vincenz Schuster—that Schubert wrote the piece. In addition to being the first person to perform the sonata, Schuster also published the only method book for the instrument in 1825 (Anleitung zur Erlernung des von Herrn Georg Staufer neu erfundenen Guitarre-Violoncells—Diablelli). But despite his and others' better efforts, the arpeggione only remained in use for just over 10 years.2\n\nThe arpeggione's rapid extinction could have occurred for many reasons. Any luthier who has attempted to design, build, and then introduce a new instrument to classical performers will tell you that it is an uphill battle; the likelihood of failure is extremely high. In the case of the arpeggione, Staufer's miscalculation was twofold, both of mechanics and aesthetics. Like the viola da gamba3 and other fretted stringed instruments with more than four strings, the arpeggione was a delicate instrument, whose bridge curvature was very slight, making it difficult to apply pressure on a single string without touching off adjacent strings. The late 18th century proliferation of the brighter (and louder) pianoforte as the keyboard instrument of choice4 (surpassing plectrum-based keyboard instruments like the harpsichord) demanded more volume from solo instruments in order to achieve the appropriate balance between the instruments. The absence of an endpin also made it awkward to play and hold.\n\nIf the mechanical shortcomings contributed to the arpeggione's quick demise, then the evolving aesthetics of this era in music history sealed its fate. The fretted members of the string family (such as the viola da gamba) were regarded as musical archaisms5 in the 18th century and were long out of fashion by the early 19th century6. The sound of the viola da gamba and its odd cousin, the baryton, was described in the most pejorative terms, as evidenced by this statement by Burney in the late 1760s:\n\n [The baryton] was practised longer in Germany than elsewhere; but since the death of the late Elector of Bavaria… the instrument seems laid aside. […] The tone of the instrument will do nothing for itself, and it seems with Music as with agriculture, the more barren and ungrateful the soil, the more art is necessary in its cultivation. And the tones of the viola da gamba are radically so crude and nasal, that nothing but the greatest skill and refinement can make them bearable. A human voice of the same quality would be intolerable.7\n\nIf the viola da gamba was held in such low esteem in the latter half of the 18th century, then one can only imagine the chilly reception the arpeggione must have received in 1823. Much had happened in the intervening years, and the sound of the viol became more and more anachronistic. Musical expressiveness—as represented by an expanded and more colorful palette of markings and dynamics, the changing nature and function of vibrato, and so on—had been redefined by Beethoven, which established a forward-moving course that presumed itself uninterested in the reserved aesthetic of the Baroque and pre-Baroque periods. Unfortunately for its maker and devotees, the arpeggione was anathema before it was even built....
\nPresident Saparmurat Niyazov\n\nThe authoritarian president of Turkmenistan, Saparmurat Niyazov, who has died aged 66, created a cult of personality during his two decades in power.\n\nStatues and portraits of the self-styled Turkmenbashi, Father of the Turkmen, were erected everywhere. Cities, airports and even a meteorite were named after him.\n\nHe introduced increasingly personal laws, and a book he wrote to be a "spiritual guide" for the nation was made required reading.\n\nIt was, say analysts, one of the most authoritarian regimes in the world.\n\nPresident Niyazov tolerated no dissent, and there is no political opposition and free media. Many opponents fled abroad to highlight the abuses.\n\nAn alleged assassination attempt in 2002 was used by the president to crush his few remaining opponents, drawing condemnation from human rights groups and the US government.\n\nPresident Niyazov had long suffered from heart problems, publicly acknowledging for the first time in November 2006 that he had heart disease.\n\nSaparmurat Niyazov was born in 1940 but orphaned at an early age, growing up in a state orphanage. His father died in WWII and his mother was killed in the earthquake that devastated Turkmenistan's capital in 1948.\n\nTurkmen propaganda was later to make much of these humble beginnings.\n\n\nThe young Niyazov rose quickly up the Communist party ladder, becoming first secretary of then Soviet Turkmenistan at the age of 45.\n\nHe became president after the transition to independence in 1991, adopting the title Turkmenbashi. He became president for life in 1999.\n\nHis influence spilled over into every sphere of Turkmen life. Even the months and days of the week were named after himself and his family.\n\nWhen he gave up smoking after major heart surgery in 1997, he ordered all his ministers to do the same and banned smoking in public places.\n\nHe later declared a ban on young men wearing beards and long hair.\n\nOpera, ballet, listening to car radios and the playing of recorded music on television and at public events was forbidden.\n\nHis book, the Ruhnama - a collection of his thoughts on Turkmen identity, history and destiny - was put on the curriculum of schools and universities.\n\nPresident Niyazov was accused of spending more money on his grandiose projects - such as a huge man-made lake in the Kara Kum desert, and an ice palace in the capital Ashgabat - than on social welfare.\n\nHis legacy is grim, say analysts. Despite the Central Asian's state rich energy resources, the country is mired in poverty - with crumbling education, health and social systems.\n\n
I've just posted to SourceForge a Web-based tool I've developed and\nhave been using for a few years to browse data in tables and views on\nOracle servers. I'm calling it Oracle Table Browser (OTB):\n\n http://otb.sourceforge.net\n\nOTB is very rich in functionality, including:\n\n - Browsing of schemas, tables, views and dynamic SQL queries\n - Filtering, sorting, etc.\n - Editing of tables and table/view comments\n - Automatic generation of schema diagrams\n - Automatic linking of columns based on Oracle foreign keys\n - Simple data profiling (column histograms, % null, etc.)\n - Very advanced query plan display and analysis page\n - Upload files into table from Web \n - Download table/view/query to spreadsheet (Excel)\n - Ability to save/recall SQL queries\n - Access control for read/write at any combination of\n server, schema and table/view levels\n\nThe interface is entirely Web-based, so that once installed, its\nfunctions are available to all users on your network who have a Web\nbrowser, i. e., all users on your network. ;) OTB works with your Web\nserver's existing authentication mechanism to map user permissions to\ndatabase objects.\n\nI am interested in having interested users download and attempt to\nbuild this first beta release. I can provide assistance to the early\nadopters and would appreciate any feedback on the installation\ninstructions. This tool has proved very popular in the place I've\ndeployed in industry so far in the past couple years, and I'm please\nto make it available to everyone via the GNU General Public License\n(GPL) going forward.\n\nCheers,\n\n John Hinsdale
<!---\nI've just tweaked my gradient colours and the topMenu bit. See HorizontalMainMenu.\n--->\n<!--{{{-->\n<div class='header' macro='gradient vert #000 #069'>\n<div class='headerShadow'>\n<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span> \n<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>\n</div>\n<div class='headerForeground'>\n<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span> \n<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>\n</div>\n</div>\n<div id='mainMenu' refresh='content' tiddler='MainMenu'></div>\n<div id='sidebar'>\n<div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>\n<div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>\n</div>\n<div id='displayArea'>\n<div id='tiddlerDisplay'></div>\n</div>\n<!--}}}-->\n
[[Pandora|http://www.pandora.com]]\n
\n\nModerated by Adrienne Burke, Editor-in-Chief of Genome Technology magazine, panelists included: NathanSiemers, Group Leader Bioinformatics/Applied Genomics, Bristol-Myers Squibb Pharmaceutical Research Institute; Christian Stoekert, Jr., Senior Research Investigator, Center for Bioinformatics, University of Pennsylvania; Neil Winegarden, M.Sc., Manager of Commercialization and External Contracts, Ontario Cancer Institute Microarray Centre; and Jeffrey Paul Woessner, Director, DNA Technologies, Paradigm Genetics.\n\nAt the beginning of the hour-long discussion, each panelist presented his perspectives on problems encountered while analyzing disparate gene sequence and expression data and explored approaches currently on the drawing boards of vendors and standards consortiums such as the National Center for Genome Resources (NCGR).\n\nThere was general agreement between panelists with Nathan Siemers' assertion that a "Tower of Babel" exists within the research community. However, Chris Stoeckert cautioned that while many organizations were working on standards, no single approach to "data normalization" would be a desired since "there is currently no one best way" to normalize data. At best, Stoeckert asserted, many obstacles to sharing expression data could be overcome with a controlled vocabulary and "repository of research methods" defined in a commonly understood language.\n\nNeil Winegarden recommended that a way should be found to link or couple processed expression data with raw data to permit researchers to check the validity of analysis methods or results by referring back to expression data contained in original TIF files. Although network bandwidths do not yet support the increased volume of data transfer this idea suggests, Winegarden expects this to become feasible as bandwidth grows and computing capabilities evolve. Jeff Woessner suggested that a "common-error model" not yet developed could be used to judge data quality. Presently, error-models tend to treat all data as equally significant and that saturation, or results beyond a measurement tool's range, was a big problem.\n\nThe panelists generally agreed that the industry is still immature and expected that progress will be made over time towards inexpensive, off-the-shelf solutions.\n\n
Parkour (pron. IPA /paÊ.'kuÊ/, often abreviated to PK) is a physical discipline of French origin in which participants attempt to pass obstacles in the fastest and most direct manner possible, using skills such as jumping and climbing, or the more specific parkour moves. The obstacles can be anything in one's environment, so parkour is often seen practiced in urban areas because of many suitable public structures that are accessible to most people, such as buildings, rails and walls.\n\nA traceur (/tÊa.'sÅ“Ê/) is a participant of parkour.\n
"You can't cost cut your way to prosperity," said Les Funtleyder, an analyst at Miller Tabak & Co.\n\n
[img[file:///D:/temp/download/131885531_003eb93938_o.jpg]]\n
Bristol, Sanofi Misplayed Plavix Defense, Apotex Says (Update3)\n\nAug. 9 (Bloomberg) -- Bristol-Myers Squibb Co. and Sanofi- Aventis SA misplayed the defense of their patent on the top- selling heart pill Plavix, says Barry Sherman, chief executive officer of their generic competitor, Apotex Inc.\n\nThe closely held Canadian drug company yesterday started selling cheaper versions of Plavix, even though Bristol-Myers and Sanofi say they have a patent that protects the drug against copycats. The drug, a blood thinner prescribed to prevent heart attacks and strokes that had $6.3 billion in sales last year, is New York-based Bristol-Myers's best-seller and Paris-based Sanofi's second-biggest product.\n\nBristol-Myers and Sanofi earlier this year settled a lawsuit they brought against Apotex, agreeing to pay Sherman's company at least $40 million to keep discounted versions of Plavix off the market until 2011. Last week, the companies' agreement was rejected by the U.S. authorities. Sherman says aspects of the agreement still in place protect Apotex should the larger drugmakers revive their lawsuit.\n\nBristol-Myers and Sanofi were ``so blinded by the desire to extend their monopoly'' until 2011 that they made too many concessions to settle patent litigation, Sherman said yesterday in a telephone interview.\n\nThe accord blocked Bristol-Myers and Sanofi from preventing Apotex's introduction of the generic drug and also reduces the Canadian company's potential liability if the bigger drugmakers prevail in their lawsuit, he said.\n\nReviewing Options\n\nBristol-Myers spokesman Jeff Macdonald said he couldn't comment on Sherman's remarks, and Sanofi spokesman Jean Marc Podvin didn't return calls or e-mails seeking comment.\n\n``The companies are evaluating their legal and commercial options, as well as possible remedies under the agreement with Apotex,'' Sanofi said yesterday in a statement. The partners ``intend to vigorously pursue enforcement of their patent rights in Plavix.'' Bristol-Myers spokesman Macdonald said the same thing in a telephone interview yesterday.\n\nWithin the next three months, Apotex's less expensive version of Plavix may grab as much as 90 percent of the larger companies' sales. That is the typical loss that occurs when a generic competitor enters the market, according to IMS Health Inc., a Fairfield, Connecticut, provider of pharmaceutical data.\n\nApotex, based in the Toronto suburb of Weston, Ontario, wouldn't say what it will charge for its version -- only that it will be less than the current price of $4 for the once-daily pill.\n\nShare Prices\n\nThe loss of Plavix revenue has already pulled down the shares of the bigger drugmakers. Bristol-Myers shares lost 6.9 percent yesterday, bringing their cumulative decline to 18 percent since July 26, the day before the drugmaker said the U.S. Justice Department was starting an antitrust investigation into the agreement to settle the lawsuit with Apotex. Today the stock rose 20 cents, or 1 percent, to $21.41 at 12:34 p.m. in New York Stock Exchange composite trading.\n\nSanofi shares dropped 0.7 euro, or 1 percent, to 68.85 euros at the close of trading in Paris and are down 12 percent since July 26.\n\nMoody's Investors Service placed Bristol-Myers under review for a possible downgrade of its A1/Prime-1 rating on $8 billion in long- and short-term debt. ``Moody's cannot rule out the possibility of a multi-notch downgrade because of the importance of Plavix to Bristol's cash flow,'' said Patrick Finnegan, managing director of Moody's in New York, in a note today.\n\n`This Debacle'\n\n``The next step in this debacle is the imminent decrease in Bristol-Myers's dividend by what we estimate will be an approximate 50 percent cut -- given the expected softening in earnings per share performance once Plavix goes generic,'' A.G. Edwards analyst Albert Rauch said in a note to clients. Rauch downgraded Bristol-Myers to ``sell'' from ``hold.''\n\nBristol-Myers pays 28 cents quarterly for a 12-month yield of 5.24 percent.\n\nSherman, 64, founded Apotex in 1974, seven years after he completed a doctorate at Massachusetts Institute of Technology in Cambridge. After starting with two employees, he now has 6,000. He wouldn't disclose revenue or profit or discuss earnings from specific medications. Generic Plavix ``is going to be the biggest seller in the history of our company,'' Sherman said.\n\nSherman has a history of challenging big drugmakers by selling generic copies of their drugs before patents expire. In 2001, Apotex made copies of Bayer AG's antibiotic Cipro, the most potent treatment for Anthrax. In 2004, Sherman sold a low-cost version of the antidepressant Paxil before GlaxoSmithKline Plc's patent expired. In both cases, he avoided legal judgments.\n\nBristol-Myers's Settlement\n\nIn the Plavix case, Sherman said Apotex could benefit from Bristol-Myers's previous run-ins with antitrust authorities over generic competition. In 2003, Bristol-Myers resolved allegations that it misused its patents to thwart generic competition to the cancer drug Taxol and the anti-anxiety drug Buspar by agreeing to a settlement with the U.S. Federal Trade Commission.\n\nAmong the terms was a 10-year limit on Bristol-Myers's ability to settle patent suits if the generic-drug company received ``anything of value'' and agreed not to sell a copycat drug for any period of time. Patent settlements would have to be reviewed by the FTC and attorneys general of U.S. states, who had also sued Bristol-Myers over Buspar and Taxol.\n\nTo keep Apotex from competing with Plavix until June 2011, Bristol-Myers and Sanofi agreed this year to pay as much as $40 million to reimburse Apotex for its stock of Plavix copies.\n\nSherman said the accord was anticompetitive and a violation of the 2003 agreement and wouldn't win approval from the FTC or the states. He set out to obtain concessions that would ease the way for Apotex to sell its copies once the accord was rejected.\n\n`Quite Surprised'\n\n``I was quite surprised that Sanofi and Bristol were under the impression that we could get a deal through the Federal Trade Commission that delayed the launch for five years,'' Sherman said. ``I never thought it would happen. They were foolish.''\n\nBristol-Myers and Sanofi agreed they wouldn't seek a court order to prevent Apotex from selling the drug and would give Apotex five days' notice before they sought a court ruling to halt sales once they started.\n\nThat means Apotex is free to sell its Plavix copies without interference until Aug. 15, when Bristol-Myers and Sanofi can file their request for a court order blocking sales until the patent suit is resolved. U.S. District Judge Sidney Stein said Aug. 7 that he would probably set a hearing during the week of Aug. 21. Bristol-Myers asked for a hearing Aug. 16.\n\nThe companies also agreed to limit how much Apotex would have to pay if it began selling the generic drug and then lost the patent suit. Normally under U.S. law, drugmakers can seek up to three times their lost profits.\n\nAt an Aug. 4 court hearing, Bristol-Myers lawyer Evan Chesler said Apotex had ``a clear strategy'' to ``derail this settlement negotiation.'' Chesler said Apotex had told regulators the companies had reached a ``secret side agreement'' in which Bristol-Myers pledged not to introduce its own ``authorized generic'' of Plavix in competition with Apotex, even though it had removed such a promise from the accord.\n
Drug Makers Try to Block Generic Plavix\nMonday August 14, 5:02 pm ET\nBy Theresa Agovino, AP Business Writer\nBristol-Myers, Sanofi-Aventis Try to Block Sales of Generic Plavix by Canada's Apotex\n\nNEW YORK (AP) -- Bristol-Myers Squibb Co. and Sanofi-Aventis SA said Monday they filed an injunction against Apotex Corp. to stop the Canadian drug maker from selling a less expensive, generic version of the blood thinner Plavix. They also said they have begun discounting Plavix to stem the loss of the drug's market share.\n
France's Sanofi-Aventis SA (SNY) and its U.S. marketing partner Bristol-Myers Squibb Co. (BMY) Thursday clinched a second legal victory in a month against Apotex Inc., preventing the Canadian generic drugmaker from launching cheaper copies of blood-thinner Plavix in Canada.\n
Feb. 15 (Bloomberg) -- Bristol-Myers Squibb Co. and Sanofi- Aventis SA's bid to protect the blood-thinning drug Plavix from generic competition moved closer to resolution with the end of a patent trial over the medicine.\n\nApotex Inc., a generic-drug maker, spent the past four weeks trying to convince U.S. District Judge Sidney Stein in New York that the patent is invalid and unenforceable. Stein today told both sides to submit written arguments to him, putting off a ruling for at least six weeks, said Evan Chesler, lead lawyer for Bristol-Myers and Sanofi.\n\n``Apotex is confident in its position,'' Robert Silver, a lawyer for the Weston, Ontario-based company, said today in an e-mail. ``We believe there is overwhelming evidence to support our defenses and look forward to a favorable decision.''\n\nNew York-based Bristol and Paris-based Sanofi want to prevent the erosion of profits from Plavix, the world's second- best selling drug in 2005 behind Pfizer Inc.'s Lipitor cholesterol pill. The companies are still trying to recover from closely held Apotex's flooding of the market with a six-month supply of generic Plavix during a three-week period in August.\n\nStein today told Apotex's attorneys to submit post-trial arguments within two weeks from tomorrow. Bristol-Myers will have two weeks to present its argument and Apotex will get two more weeks to prepare a rebuttal, said Chesler, a partner with New York-based law firm Cravath, Swaine & Moore. He declined to comment on the case.\n\nCompound Patent\n\nInvestors are betting Bristol-Myers and Sanofi will win the case, since the patent covers the main compound in Plavix, clopidogrel bisulfate. Eli Lilly & Co. and Pfizer have successfully fended off challenges to compound patents on their top medicines.\n\nRobert Breisblatt, a lawyer for Apotex, claimed the key ingredient in Plavix was covered by a patent that expired in 2003. Chesler maintained that the earlier patent covered a whole class of compounds, and the discovery of clopidogrel bisulfate was a surprise.\n\nBolstering Sanofi and Bristol-Myers was an earlier ruling by Stein that Apotex hadn't raised a ``substantial question'' of the validity of the patent. That ruling, which was upheld by an appeals court that specializes in U.S. patent law, forced Apotex to stop shipping generic Plavix until the trial's completion.\n\n``We obtained the preliminary injunction and we won the appeal,'' Sanofi Chief Executive Officer Gerard Le Fur said at a Feb. 13 press conference. ``For these reasons, we remain very optimistic about events surrounding the Plavix suit.''\n\nTop Seller\n\nBristol-Myers spokesman Tony Plohoros said his company also is confident of victory. Plavix is the second-biggest drug for Sanofi and the top seller for Bristol-Myers, accounting for a third of its 2005 revenue. The companies share the profits.\n
These are my notes - not for general consumption nor publication. Read at your own peril.
[[Polter String Quartet]]\n<html>\n<div class="content">\n <h1>Polter String Quartet</h1>\n\n <p>The Polter String Quartet performed in the Ithaca, New York\n area from 1991-1992. A collection of undergradate, graduate,\n and post-doctoral students in the sciences, they embraced a\n challenging repetoire of Shostakovich, Janacek, Barber, and\n other composers. They were awarded the Blackmore Prize for\n Music performance at Cornell University in 1992. This site\n offers several recordings of live performances in Barnes Hall,\n Cornell University, during that time.</p>\n</div>\n</html>\nRecordings (mp3 format), may take some time to download:\n\n*[[Shostakovich String Quartet 8|http://fiveprime.org/Polter/Shostakovich_Quartet_8.mp3]]\n*[[Janacek String Quartet 1|http://fiveprime.org/Polter/Janacek_Quartet_1.mp3]]\n\n\nQuestions? Contact [[Nathan Siemers]].
This photo is up on fiveprime only because I noticed that Elena Cucci has started using Flickr and a previous portrait of her (on a different Flickr account) is one of my favorite portraits:\n\n[[Elena's flickr site| http://flickr.com/photos/67695599@N00/]]\n\nnathan\n\n[img[elena|portrait-elena--23.jpg]]\n\n
With a little help from ImageMagick, the [[Propaganda]] backgrounds have all been converted to 320x240 format, suitable for a modern (2007) Blackberry. These retain the GPL license of the original, of course.\n\n\n[[Directory|./PropagandaBB]]\n[[Zipped Collection|./PropagandaBB.zip]]\n\nUpdate: I've also made 4x3 montage versions (80x80 tiles) that capture the ability of these backgrounds to seamlessly tile, even if the tiles are a bit small. Some may prefer this.\n\n[[Tiled Versions (Directory)|./PropagandaBBM]]\n\n\n
[[Available Here|Propaganda]]\n\nIf you are impatient and trust my GoodTaste, you can look at my [[personal favorites|Propaganda/Nosha]]. \n\nP R O P A G A N D A Desktop Enhancements For Linux by Bowie J.Poag\n\nCopyright (C) 1998,1999 Bowie J. Poag / PROPAGANDA \n\nThanks to [[letzte.com|http://www.letzte.com]] for archiving these and making them available.\n\nThe materials contained within this archive are free software; you can\nredistribute it and/or modify them under the terms of the GNU General\nPublic License as published by the Free Software Foundation; either\nversion 2 of the License, or (at your option) any later version.
http://www.princetonoccasion.org/quarkpark/Site%20Plan%20SE.html
/***\n| Name:|QuickOpenTagPlugin|\n| Purpose:|Makes tag links into a Taggly style open tag plus a normal style drop down menu|\n| Creator:|SimonBaird|\n| Source:|http://simonbaird.com/mptw/#QuickOpenTagPlugin|\n| Requires:|TW 2.x|\n| Version|1.1 (7-Feb-06)|\n\n!History\n* Version 1.1 (07/02/2006)\n** Fix Firefox 1.5.0.1 crashes\n** Updated by ~BidiX[at]~BidiX.info\n* Version 1.0 (?/01/2006)\n** First release\n\n***/\n//{{{\n\n//⊻ ⊽ â‹ â–¼ \n\nwindow.createTagButton_orig_mptw = createTagButton;\nwindow.createTagButton = function(place,tag,excludeTiddler) {\n var sp = createTiddlyElement(place,"span",null,"quickopentag");\n createTiddlyLink(sp,tag,true,"button");\n var theTag = createTiddlyButton(sp,config.macros.miniTag.dropdownchar,config.views.wikified.tag.tooltip.format([tag]),onClickTag);\n theTag.setAttribute("tag",tag);\n if(excludeTiddler)\n theTag.setAttribute("tiddler",excludeTiddler);\n return(theTag);\n};\n\nconfig.macros.miniTag = {handler:function(place,macroName,params,wikifier,paramString,tiddler) {\n var tagged = store.getTaggedTiddlers(tiddler.title);\n if (tagged.length > 0) {\n var theTag = createTiddlyButton(place,config.macros.miniTag.dropdownchar,config.views.wikified.tag.tooltip.format([tiddler.title]),onClickTag);\n theTag.setAttribute("tag",tiddler.title);\n theTag.className = "miniTag";\n }\n}};\n\nconfig.macros.miniTag.dropdownchar = (document.all?"â–¼":"â–¾"); // the fat one is the only one that works in IE\n\nconfig.macros.allTags.handler = function(place,macroName,params)\n{\n var tags = store.getTags();\n var theDateList = createTiddlyElement(place,"ul",null,null,null);\n if(tags.length === 0)\n createTiddlyElement(theDateList,"li",null,"listTitle",this.noTags);\n for (var t=0; t<tags.length; t++)\n {\n var theListItem =createTiddlyElement(theDateList,"li",null,null,null);\n var theLink = createTiddlyLink(theListItem,tags[t][0],true);\n var theCount = " (" + tags[t][1] + ")";\n theLink.appendChild(document.createTextNode(theCount));\n\n var theDropDownBtn = createTiddlyButton(theListItem," "+config.macros.miniTag.dropdownchar,this.tooltip.format([tags[t][0]]),onClickTag);\n theDropDownBtn.setAttribute("tag",tags[t][0]);\n }\n};\n\n\nsetStylesheet(\n ".quickopentag { margin-right:1.2em; border:1px solid #eee; padding:2px; padding-right:0px; padding-left:1px; }\sn"+\n ".quickopentag .tiddlyLink { padding:2px; padding-left:3px; }\sn"+\n ".quickopentag a.button { padding:1px; padding-left:2px; padding-right:2px;}\sn"+\n "a.miniTag {font-size:150%;}\sn"+\n "",\n"QuickOpenTagStyles");\n\n//}}}\n\n/***\n<html>⊻ ⊽ ⋁ ▼ ▾</html>\n***/\n
/***\n| Name:|RenameTagsPlugin|\n| Purpose:|Allows you to easily rename tags|\n| Creator:|SimonBaird|\n| Source:|http://simonbaird.com/mptw/#RenameTagsPlugin|\n| Version:|1.0.1 (5-Mar-06)|\n\n!Description\nIf you rename a tiddler/tag that is tagging other tiddlers this plugin will ask you if you want to rename the tag in each tiddler where it is used. This is essential if you use tags and ever want to rename them. To use it, open the tag you want to rename as a tiddler (it's the last option in the tag popup menu), edit it, rename it and click done. You will asked if you want to rename the tag. Click OK to rename the tag in the tiddlers that use it. Click Cancel to not rename the tag.\n\n!Example\nTry renaming [[Plugins]] or [[CSS]] on this site.\n\n!History\n* 1.0.1 (5-Mar-06) - Added feature to allow renaming of tags without side-effect of creating a tiddler\n* 1.0.0 (5-Mar-06) - First working version\n\n!Code\n***/\n//{{{\n\nversion.extensions.RenameTagsPlugin = {\n major: 1, minor: 0, revision: 0,\n date: new Date(2006,3,5),\n source: "http://simonbaird.com/mptw/#RenameTagsPlugin"\n};\n\nconfig.macros.RenameTagsPlugin = {};\nconfig.macros.RenameTagsPlugin.prompt = "Rename the tag '%0' to '%1' in %2 tidder%3?";\n\n// these are very useful, perhaps they should be in the core\nif (!store.addTag) {\n store.addTag = function(title,tag) {\n var t=this.getTiddler(title); if (!t || !t.tags) return;\n t.tags.push(tag);\n };\n};\n\nif (!store.removeTag) {\n store.removeTag = function(title,tag) {\n var t=this.getTiddler(title); if (!t || !t.tags) return;\n if (t.tags.find(tag)!=null) t.tags.splice(t.tags.find(tag),1);\n };\n};\n\nstore.saveTiddler_orig_tagrename = store.saveTiddler;\nstore.saveTiddler = function(title,newTitle,newBody,modifier,modified,tags) {\n if (title != newTitle && this.getTaggedTiddlers(title).length > 0) {\n // then we are renaming a tag\n var tagged = this.getTaggedTiddlers(title);\n if (confirm(config.macros.RenameTagsPlugin.prompt.format([title,newTitle,tagged.length,tagged.length>1?"s":""]))) {\n for (var i=0;i<tagged.length;i++) {\n store.removeTag(tagged[i].title,title);\n store.addTag(tagged[i].title,newTitle);\n // if tiddler is visible refresh it to show updated tag\n story.refreshTiddler(tagged[i].title,false,true);\n }\n }\n if (!this.tiddlerExists(title) && newBody == "") {\n // dont create unwanted tiddler\n return null;\n }\n }\n return this.saveTiddler_orig_tagrename(title,newTitle,newBody,modifier,modified,tags);\n}\n\n//}}}\n\n
Seems there is a real association between treament for BreastCancer and rheumatoid pain afterwards.\n\nhttp://www.ncbi.nlm.nih.gov/entrez/query.fcgi?cmd=Retrieve&db=PubMed&list_uids=10484855&dopt=Abstract\n\n J Pain Symptom Manage. 1999 Aug;18(2):85-94. Related Articles, Links\n Click here to read \n Rheumatoid symptoms following breast cancer treatment: a controlled comparison.\n\n Andrykowski MA, Curran SL, Carpenter JS, Studts JL, Cunningham L, McGrath PC, Sloan DA, Kenady DE.\n\n Department of Behavioral Science, University of Kentucky College of Medicine, Lexington 40536-0086, USA.\n\n The prevalence of rheumatoid symptoms following breast cancer (BC) treatment was examined. Breast cancer patients (n = 111) who were a mean of 27.6 months postcompletion of BC treatment and 99 otherwise healthy women with benign breast problems (BBP) completed a self-report measure that assessed current joint pain, swelling, and stiffness, as well as measures of quality of life. Results supported a hypothesized link between BC and rheumatoid symptoms: (1) the BC group was more likely to report joint stiffness lasting more than 60 min following morning waking; (2) the prevalence of unilateral or bilateral joint point or swelling was greater (P < 0.10) in the BC group for four of 10 joint-symptom combinations examined, with differences between the BC and BBP groups in upper extremity joint swelling particularly pronounced; and (3) 41% of the BC group reported that current rheumatoid symptoms exceeded those experienced prior to diagnosis. Within the BC group, the data did not support postchemotherapy rheumatism as an explanation for rheumatoid symptoms. Rather, data suggested that symptoms were associated with surgical management of BC. Finally, among women in the BC group with the most severe joint pain, only a minority were receiving medication for these symptoms. Given the relationship between rheumatoid symptoms and quality of life, more systematic research examining potential contributing factors such as menopausal status, concurrent lymphedema, and weight gain is warranted.\n\n PMID: 10484855 [PubMed - indexed for MEDLINE]\n
a GPL SFTP client (graphical) seems to work well so far.\nMuch welcomed\n\nhttp://winscp.net/eng/index.php
\n!Purpose / But\n\nI wrote this Search Engine Optimization plugin to improve ~TiddlyWiki website's ranking on Google, Yahoo, etc. Basically, it does two things:\n1) For each tiddler and each tag of this one, it creates a html file with the tiddler's content and named according to the tiddler's title. The html file is written in a way that it can be easily crawled by a search engine (short and with html format, not ~TiddlyWiki's format), but if it is opened (which will be the case if it appears in the results of a search engine), it redirects to the ~TiddlyWiki with the corresponding tiddler opened.\n2) It creates the sitemap.xml and urllist.txt files for Google and Yahoo which included generated html files.\n\nJ'ai écrit ce plugin d'optimisation pour les moteurs de recherche pour améliorer l'indexation d'un ~TiddlyWiki par Google, Yahoo, etc.\nLe plugin fait deux choses :\n1) Pour chaque tiddler et chaque tag de celui-ci, il créé un fichier html avec le contenu du tiddler et nommé selon le titre du tiddler. Le fichier html est écrit de sorte qu'il soit facilement indexable par un moteur de recherche (court et avec un balisage html et non un balisage ~TiddlyWiki), mais que s'il est ouvert (ce qui sera le cas s'il apparaît dans les résultats d'un moteur de recherche), il redirige vers le ~TiddlyWiki avec le tiddler correspondant ouvert.\n2) Il créé les fichiers sitemap.xml et urllist.txt pour Google et Yahoo, qui inclue les fichiers html générés.\n\n!How to install / Comment l'installer\n\n1) Create two tiddlers like these one (same name and content):\n[[SEOTiddlyWikiPlugin]] [[SEOTiddlyWikiConfig]]\nNB: double-clic on each tiddler to get edit mode and copy-paste their content.\n2) Fill in shadow tiddlers SiteUrl, SiteTitle and SiteSubtitle.\n3) Edit this tiddler and see the code behind the following link to understand how to launch the process, once the plugin installed: <html><a href="javascript:generateSEOFiles();">Generate SEO files</a></html>.\n4) See http://www.google.com/webmasters/sitemaps/ to register your sitemap.xml file.\n\nTips\n1) Feel free to modify html template [[SEOTiddlyWikiConfig]].\n2) Use tag //excludeSearch// to disallow the export of a tiddler.\n\nLimitation\nIf you remove a tiddler after an export, you have to manually remove the corresponding html file.\n\n1) Créez un tiddler comme ceux-ci (même nom et contenu) :\n[[SEOTiddlyWikiPlugin]] [[SEOTiddlyWikiConfig]]\nNB: double-cliquez sur chaque tiddler pour le passe en mode d'édition et copier-coller leur contenu.\n2) Remplissez les tiddlers cachés SiteUrl, SiteTitle et SiteSubtitle.\n3) Editez le contenu de ce tiddler pour voir le code derrière le lien suivant et comprendre comment lancer le processus une fois le plugin installé : <html><a href="javascript:generateSEOFiles();">Générer les fichiers SEO</a></html>.\n4) Voyez http://www.google.com/webmasters/sitemaps/ pour enregistrer votre fichier sitemap.xml.\n\nAstuces\n1) N'hésitez pas à modifier le modèle html [[SEOTiddlyWikiConfig]].\n2) Utilisez le tag //excludeSearch// pour interdire l'export d'un tiddler.\n\nLimitation\nSi vous supprimez un tiddler après un export, vous devez manuellement effacer le fichier html correspondant.\n\n!Sample results / Exemple de résultats\n\nhttp://www.google.com/search?q=site:superphysique.net\nhttp://www.superphysique.net/\nhttp://www.superphysique.net/super%20physique/quotes.htm\nhttp://www.superphysique.net/gallery/dusan.htm\nhttp://www.superphysique.net/materials/strength-cycles.htm\nhttp://www.superphysique.net/materials/external-resources.htm\nhttp://www.superphysique.net/gallery/jerome.htm\nhttp://www.superphysique.net/gallery/eric.htm\nhttp://www.superphysique.net/super%20physique/copyright.htm\nhttp://www.superphysique.net/super%20physique/about-a-propos.htm\nhttp://www.superphysique.net/tiddlywiki/seo-tiddlywiki-plugin.htm\nhttp://www.superphysique.net/gallery/benjamin.htm\nhttp://www.superphysique.net/gallery/fabrice.htm\nhttp://www.superphysique.net/gallery/yann.htm\nhttp://www.superphysique.net/super%20physique/updates.htm\nhttp://www.superphysique.net/gallery/jean-louis.htm\nhttp://www.superphysique.net/gallery/rudy.htm\n\n!Report a bug / Reporter un bug\n\n<<email fabrice.proudhon at yahoo dot com>>\n\n!Copyright\n\n<html><!--Creative Commons License--><a rel="license" href="http://creativecommons.org/licenses/by/2.5/"><img alt="Creative Commons License" style="border-width: 0" src="http://i.creativecommons.org/l/by/2.5/88x31.png"/></a><br/>This work is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by/2.5/">Creative Commons Attribution 2.5 License</a>.<!--/Creative Commons License--><!-- <rdf:RDF xmlns="http://web.resource.org/cc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#">\n <Work rdf:about="">\n <license rdf:resource="http://creativecommons.org/licenses/by/2.5/" />\n </Work>\n <License rdf:about="http://creativecommons.org/licenses/by/2.5/"><permits rdf:resource="http://web.resource.org/cc/Reproduction"/><permits rdf:resource="http://web.resource.org/cc/Distribution"/><requires rdf:resource="http://web.resource.org/cc/Notice"/><requires rdf:resource="http://web.resource.org/cc/Attribution"/><permits rdf:resource="http://web.resource.org/cc/DerivativeWorks"/></License></rdf:RDF> --></html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">\n<html>\n<head>\n<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">\n<title>SITE_TITLE: TIDDLER_TITLE</title>\n<meta name="description" content="SITE_SUBTITLE">\n<meta name="keywords" content="TIDDLER_KEYWORDS">\n<script language="JavaScript" type="text/javascript">\nlocation.href = 'TIDDLER_URL';\n</script>\n<base href="TIDDLER_URL">\n</head>\n\n<body>\n<noscript>\n<a href="TIDDLER_URL">TIDDLER_TITLE</a>\n</noscript>\nTIDDLER_CONTENT\n</body>\n</html>
function generateSEOFiles()\n{\n // last update: 2007-02-14 by Fabrice Proudhon\n // http://www.superphysique.net#%5B%5BSEO%20TiddlyWiki%20Plugin%5D%5D\n var originalPath = document.location.toString();\n if(originalPath.substr(0,5) != "file:") \n {\n alert(config.messages.notFileUrlError);\n if(store.tiddlerExists(config.messages.saveInstructions))\n story.displayTiddler(null,config.messages.saveInstructions);\n return;\n }\n var y = [];\n var g = [];\n var localPath = getLocalPath(originalPath);\n var c = store.getTiddlerText("SEOTiddlyWikiConfig");\n var su = store.getTiddlerText("SiteUrl");\n var st = wikifyPlain("SiteTitle");\n var sbt = wikifyPlain("SiteSubtitle");\n var htmlPath = localPath.substr(0,localPath.lastIndexOf("\s\s"));\n var tiddlers = store.getTiddlers("modified","excludeSearch");\n g.push('<url><loc>' + su.htmlEncode() + '</loc></url>');\n y.push(su.htmlEncode());\n for (var t=0; t<tiddlers.length; t++) {\n var content = c;\n var filename = tiddlers[t].title.htmlEncode();\n filename = filename.toLowerCase();\n filename = filename.replace(/ |\s/|@/gi, '-');\n filename = filename.replace(/(-)\s1+/gi, '$1');\n content = content.replace(/SITE_TITLE/gi, st.htmlEncode());\n content = content.replace(/SITE_SUBTITLE/gi, sbt.htmlEncode());\n content = content.replace(/TIDDLER_TITLE/gi, tiddlers[t].title.htmlEncode());\n content = content.replace(/TIDDLER_URL/gi, su.htmlEncode() + '#' + String.encodeTiddlyLink(tiddlers[t].title));\n content = content.replace(/TIDDLER_KEYWORDS/gi, tiddlers[t].tags.join(',').htmlEncode());\n content = content.replace(/TIDDLER_CONTENT/gi, wikifyStatic(tiddlers[t].text,null,tiddlers[t]).htmlEncode());\n content = content.replace(/</gi, '<');\n content = content.replace(/>/gi, '>');\n content = content.replace(/"/gi, '"');\n var d = tiddlers[t].modified.getFullYear() + '-';\n if (tiddlers[t].modified.getMonth() + 1 < 10) d = d + '0';\n d = d + (tiddlers[t].modified.getMonth() + 1) + '-';\n if (tiddlers[t].modified.getDate() < 10) d = d + '0';\n d = d + tiddlers[t].modified.getDate();\n for (var ta=0; ta<tiddlers[t].tags.length; ta++) {\n var tag = tiddlers[t].tags[ta].toLowerCase();\n g.push('<url><loc>' + su.htmlEncode() + escape(tag) + '/' + escape(filename) + '.htm' + '</loc><lastmod>' + d + '</lastmod></url>');\n y.push(su.htmlEncode() + escape(tag) + '/' + escape(filename) + '.htm');\n saveFile(htmlPath + '\s\s' + tag + '\s\s' + filename + '.htm', convertUnicodeToUTF8(content));\n }\n }\n saveFile(htmlPath + '\s\surllist.txt', convertUnicodeToUTF8(y.join('\sn')));\n saveFile(htmlPath + '\s\ssitemap.xml', '<?xml version="1.0" encoding="utf-8"?><urlset xmlns="http://www.google.com/schemas/sitemap/0.84">\sn' + convertUnicodeToUTF8(g.join('\sn')) + '</urlset>');\n displayMessage('SEO files created', '');\n}
Sept. 1 (Bloomberg) -- Sanofi-Aventis SA slashed its full- year profit forecast because Apotex Inc. may have flooded the U.S. market with a generic version of Sanofi's Plavix heart pill before sales were blocked by a court order.\n\nAdjusted earnings per share will grow 2 percent this year rather than the 12 percent as previously forecast, Paris-based Sanofi, the world's third-largest drugmaker, said today. The shares rose on expectations Plavix sales will recover next year. \n
/***\nThis CSS by DaveBirss.\n***/\n/*{{{*/\n\n.tabSelected {\n background: #fff;\n}\n\n.tabUnselected {\n background: #eee;\n}\n\n#sidebar {\n color: #000;\n}\n\n#sidebarOptions {\n background: #fff;\n}\n\n#sidebarOptions .button {\n color: #999;\n}\n\n#sidebarOptions .button:hover {\n color: #000;\n background: #fff;\n border-color:white;\n}\n\n#sidebarOptions .button:active {\n color: #000;\n background: #fff;\n}\n\n#sidebarOptions .sliderPanel {\n background: transparent;\n}\n\n#sidebarOptions .sliderPanel A {\n color: #999;\n}\n\n#sidebarOptions .sliderPanel A:hover {\n color: #000;\n background: #fff;\n}\n\n#sidebarOptions .sliderPanel A:active {\n color: #000;\n background: #fff;\n}\n\n.sidebarSubHeading {\n color: #000;\n}\n\n#sidebarTabs {`\n background: #fff\n}\n\n#sidebarTabs .tabSelected {\n color: #000;\n background: #fff;\n border-top: solid 1px #ccc;\n border-left: solid 1px #ccc;\n border-right: solid 1px #ccc;\n border-bottom: none;\n}\n\n#sidebarTabs .tabUnselected {\n color: #999;\n background: #eee;\n border-top: solid 1px #ccc;\n border-left: solid 1px #ccc;\n border-right: solid 1px #ccc;\n border-bottom: none;\n}\n\n#sidebarTabs .tabContents {\n background: #fff;\n}\n\n\n#sidebarTabs .txtMoreTab .tabSelected {\n background: #fff;\n}\n\n#sidebarTabs .txtMoreTab .tabUnselected {\n background: #eee;\n}\n\n#sidebarTabs .txtMoreTab .tabContents {\n background: #fff;\n}\n\n#sidebarTabs .tabContents .tiddlyLink {\n color: #999;\n}\n\n#sidebarTabs .tabContents .tiddlyLink:hover {\n background: #fff;\n color: #000;\n}\n\n#sidebarTabs .tabContents {\n color: #000;\n}\n\n#sidebarTabs .button {\n color: #666;\n}\n\n#sidebarTabs .tabContents .button:hover {\n color: #000;\n background: #fff;\n}\n\n/*}}}*/
AP\nJudge Denies Plavix Injunction Stay\nTuesday September 5, 5:27 pm ET\nBy Peter Loftus, Dow Jones Newswires\nJudge Denies Request for Stay of Plavix Injunction\n\nPHILADELPHIA (AP) -- A federal judge has denied Apotex Inc.'s request for a postponement of his order last week to halt the company's sales of a generic version of the heart drug Plavix.\n\nApotex, of Weston, Ontario, on Friday had asked U.S. Judge Sidney Stein to postpone the injunction he issued Thursday, pending the outcome of Apotex's appeal of the injunction to a higher court. Stein denied the request Friday; the denial was entered into the court docket Tuesday.
\n\n!CAREERS IN BIOINFORMATICS\nField is not significantly affected by economic downturn; qualified people are still hard to find\n\nCELIA M. HENRY, C&EN WASHINGTON\n\n7 January 2002\n\nWith the ever-expanding reach of genomics and proteomics and the large amounts of data that their associated techniques generate, biology is becoming an increasingly quantitative science. The need is growing for scientists--whether they be trained as molecular biologists, biochemists, or chemists--who can speak the languages of both the computational and biological sciences.\n \nThe field of bioinformatics is one way to deal with this explosion of data. Unfortunately for neophytes trying to understand the field, bioinformatics means different things to different people. At its core, however, the field is simply the intersection of biology and the computational sciences, which include mathematics, statistics, and computer science.\n\nNathan O. Siemers, associate director of applied genomics at Bristol-Myers Squibb in Hopewell, N.J., calls bioinformatics "a mixture of the mundane and the sublime." The mundane includes data integration, data formatting and conversion (also known as parsing), and automation--"doing a relatively straightforward analysis a million times over the course of a few days and then dealing with the volume of results you get and turning them into something useful," Siemers says.\n\nIt's when the useful parts start to emerge that the sublime aspects surface. "Some of the most exciting stuff is working with large bodies of sequence and gene-expression data," he says, "seeing the patterns that come out and how they reproduce biology, in some cases extremely well."\n\nFOR MANY PEOPLE, bioinformatics is focused on analyzing genomic data, but for others it's much broader. Originally confined to the early stages of drug discovery, bioinformatics is lending its power to all aspects of clinical development, a trend that will only continue. "In industry, I see bioinformatics evolving from primarily supporting early discovery to becoming more embedded in all stages of the drug discovery process," Siemers says. "We're already established in pharmacogenomics, trying to tie efficacy and side effects in a clinical setting back to underlying genetic variation in our patients."\n\nMuch bioinformatics work at Bristol-Myers currently focuses on RNA measurements, such as gene-expression profiling, Siemers says. However, proteomics is catching up. "It will probably take another couple of years before the volumes of data from those [proteomics] efforts really equal that of the RNA profiling chips," he says.\n\nAbgenix, located in Fremont, Calif., is also taking a broader view of bioinformatics. Its informatics group is subdivided into a software development group, a computational biology group, and even a library information science group. "We're involved in the same types of genomics data analysis that you have in a typical bioinformatics group, but we're also involved in lab automation and algorithm development for the various high-throughput assays, preclinical assays, and process development," says Keith Joho, director of bioinformatics. "We're putting together an integrated bioinformatics approach that not only encompasses that very beginning part--the genomics data analysis--but really covers the spectrum of drug discovery up to going into the clinic."\n\nRosetta Inpharmatics, a subsidiary of Merck located in Kirkland, Wash., takes a quantitative and computational biology approach to bioinformatics, according to Eric Schadt, a chief scientist and head of the computational genomics program.\n\nAt Rosetta, bioinformatics falls under the larger umbrella of informatics, headed by Roland Stoughton, and is divided into three groups. A custom data analysis group headed by Hongyue Dai and Yudong D. He develops solutions to process large sets of RNA expression array data and integrates these data with other sources of information. These individuals must take the data from thousands of arrays--millions of measurements--and "recognize the patterns within those millions of measurements that really elucidate the processes of interest in the system under study," Schadt says. The individuals in that group tend to have doctorates in mathematics or statistics.\n\nThe second group is the computational genomics program, which Schadt describes as being closer to classic bioinformatics. That group does sequence-based analyses, such as annotating genes and proteins, searching for motifs in proteins, or predicting genes in genomic sequence. However, that group is also "directly involved in driving the biology and thinking of innovative ways to integrate expression, genetics, genomic, and other data of interest for the purposes of discovery." Most of the people in that group have a Ph.D. in math, statistics, or biology. Schadt himself has a Ph.D. in biomathematics. The third group, headed by Mihai Margarint, focuses on software engineering and provides advanced software development support to the other two research teams.\n\nALTHOUGH BIOLOGISTS first come to mind when talking about bioinformatics, chemists are also welcome. "Chemists who are more biologically oriented, like biochemists, play a big role in helping us piece together pathways and understand protein function," Schadt says. "Also, their training, especially in areas like physical chemistry, tends to be more quantitative. They're more adept at the sort of analyses we do than a classically trained biologist, who typically doesn't get the math and statistical training that chemists often get."\n\nIn fact, the small number of biologists working within the informatics team at Rosetta "tend to be those biologists with strong programming, database, or quantitative skills, which are skills many graduate programs in biology haven't integrated into their curricula," Schadt says. In contrast, physical chemists and physicists tend to be more skilled in developing and applying numerical algorithms to mine data. "I think the need for people who are trained more quantitatively just grows and grows as more people in the biological sciences accept that biology is becoming more of a quantitative science. The quantitative training will continue to enable research in this field to be more competitive," he says.\n\nAt Large Scale Biology Corp. in Vacaville, Calif., Gary M. Wolfe, vice president of informatics systems, prefers to pull bioinformaticists from the physical sciences because they tend to have a "good mathematical foundation." They may be required to develop user interfaces for existing algorithms or to develop algorithms of their own. "I'd rather get individuals who are heavy-duty experienced scientists with a strong programming background," Wolfe says. "Then it's pretty straightforward to write a Web interface to the BLAST [sequence alignment] algorithm. But that individual on another day could put together a sophisticated algorithm to analyze mass spec data."\n\nWolfe believes strongly that a bioinformatics platform must effectively integrate laboratory information management systems with data analysis and discovery applications. The data generated must be stored and tracked in a relational database. "Once the data are in some ordered format, it becomes straightforward to write programs for analyzing the data, and generally speaking, this enables us to create a discovery platform," Wolfe says. "However, to create such a platform, it is necessary to have individuals with excellent systems analysis and programming skills."\n\nHowever, Wolfe says, it's not possible to take just any person with a programming background or mathematical background and have them program for bioinformatics applications. "They have to have an interest and experience in the life sciences. That can come from previous work they've done in a company or even their graduate or undergraduate training."\n"The need for people who are trained more quantitatively grows as more people in the biological sciences accept that biology is becoming more of a quantitative science." \n \nCOMPUTER SKILLS are very important for work in bioinformatics, especially UNIX and the programming languages C and PERL, Wolfe says. He focuses on these particular languages because most bioinformatics programs are written in C and because PERL is powerful for text processing and is flexible with Web applications.\n\nSchadt agrees that ideal bioinformaticists will be strongly grounded in math, statistics, and computer science. In addition, they will have at least some level of biological understanding. "The ones who are the most productive are the ones who can set up databases themselves, write scripts and programs themselves to process data or assemble data in a meaningful way, and then statistically summarize those data for the purposes of biological discovery. As the bar gets raised, I think a better understanding of biology, having the ability to identify the really pressing questions, is going to be required to be really competitive."\n\nJoho says the ideal preparation varies because bioinformatics requires a variety of people. "The key would be that you have to be very good in one area--for instance, an accomplished biologist or biomathematician--but you should also have some additional training in another area. For example, a mathematician who has a good biology background is very valuable, as is a biologist who has a computer science or mathematics background."\n\nAt Consensus Pharmaceuticals in Medford, Mass., the best candidates will have strong biology backgrounds, "because the computer skills are broadly available in a variety of candidates," says John L. Krstenansky, vice president of chemistry. "You have to know how to interpret the data and know what's really meaningful if you're generating algorithms."\n\nKrstenansky considers people with purely computer science backgrounds or who have been out of the science for a while not to have "the scientific strength" needed to build a strong bioinformatics program. "You need a strong chemistry or biology background that cannot be achieved without formal training. You must be able to be recognized as a contributing scientist in that area of science. That's the kind of depth of understanding and currency in the field that I think is essential."\n\nThe bioinformatics needs at Consensus lie outside the "mainstream bioinformatics" of genomic data, Krstenansky says. The company, which is based on a library-screening technology for identifying ligands to various enzymes or receptors, needs people who can assess information to identify "new biology." Therefore, Consensus is particularly interested in candidates with a strong background in biochemistry and an understanding of cellular biology.\n\nAlthough Krstenansky anticipates that the bioinformatics effort at Consensus will grow, he doesn't see it reaching the size of the company's biology and chemistry groups. "Your primary need is people generating the real materials and the raw data to be analyzed," he says. "If things are being done right, you should need fewer people proportionately to do the analysis of the data or to create the tools for the analysis of the data."\n 8001wolfe3\n \n\nFUNDAMENTALS Wolfe believes that strong training in math, chemistry, and physics creates a strong foundation on which to build a bioinformatics career.\n \nSOME COMPANIES focus on providing bioinformatics software to other companies. One such company is Accelrys, located in San Diego. The "ideal profile" for someone in bioinformatics at Accelrys is someone who has at least a master's degree in biology in addition to a computer science degree, according to Judith M. Ohrn, vice president of human resources. "That's really nirvana," she says. If they can't find someone with training in both biology and computer science, they will hire a strong computer scientist who can pick up the biology on the job. "Normally you find with scientists who are good engineers or good computer scientists a certain fundamental knowledge about biology and an aptitude to learn what they need to learn."\n\nUniversities are grappling with the issue of what to include in a bioinformatics program. C. Fred Fox, a professor of microbiology and molecular genetics who is actively involved with the bioinformatics program at the University of California, Los Angeles, asks: "What training must these people have so they can sustain a career without going stale?" At UCLA, students must fulfill the requirements for a degree in one of the 13 participating departments--including math, statistics, and biochemistry--and then take additional courses to earn the bioinformatics certificate. Programs are being set up at both the master's and Ph.D. levels. The Ph.D. certificate program has already been training students for three years and should soon receive its final approval from the faculty senate.\n\nThe main issue in preparing for a career in bioinformatics isn't whether an individual is a biologist or computer scientist first, says Michael N. Liebman, director of computational biology at the Abramson Family Cancer Research Institute at the University of Pennsylvania. He spent 12 years working on bioinformatics in the pharmaceutical industry. "You can come in with a molecular biology background and learn computer science. You can come in with a computer science background and learn molecular biology. The issues that really need to be addressed are how do you solve complex problems and how do you work in teams."\n\nLiebman complains that students are not usually taught how to identify the right question about a problem. "They're taught how to apply methodologies if the question is presented to them," he says. "You don't need an algorithm to run faster. You first need to ask if it's the right algorithm and if it's solving the right problem."\n\nLiebman calls bioinformatics a "moving target." People who are training for a career should not expect that the qualifications for the jobs advertised today will also be what is needed in the future. "You really have to look for a training program that's looking ahead to see what the longer term issues are and not just turning somebody out for an industrial position."\n\nOpinions vary over the value of specialized bioinformatics programs. For example, Wolfe worries that such programs teach very little in each of the underlying areas. "I'm a real proponent of the fundamentals," he says. "The fundamentals are math, chemistry, and physics. With that, you've created a great foundation."\n\nSchadt believes that graduates of master's-level programs may find their career choices limited by not having a doctorate. "If you're at all passionate about the science, it's a very tough world to be in where you're at the low end of the totem pole, really servicing the scientific efforts," he says. "It's incredibly difficult to drive projects at the scientific level without having jumped through the Ph.D. hoop."\n\nNo matter what their educational background, people need to be nimble and willing to seize fast-moving opportunities. "If you're going to be in this field, it's a really dynamic field with small windows of opportunity," Wolfe says. "If you can't keep up with the Joneses and keep moving and keep learning new things, then it's not a good place to be. That's just the baggage that goes along with the fact that this field is progressing so fast and will be around for a long time."\n\nEVEN WITH THE downturn in the economy, the demand for bioinformaticists does not seem to have significantly diminished. "The field is somewhat insulated because there is still such a high demand for skilled bioinformaticists," Wolfe says. "The fact is that there is a lot of money going into genomics and proteomics these days; I assume that the demand for bioinformatics will only grow over the coming years."\n\nSchadt's experience has been that several bioinformatics companies have instituted hiring freezes. However, he says, "the bioinformatics-based groups are less affected" because "special allowances can be made to hire in hotshot types." In the short term, he says, lower level bioinformaticists will be the most affected, including people with master's or Ph.D. degrees with little or no experience.\n\n"But for any of these big companies that have a freeze on hiring, there are other big companies and smaller start-ups that are more eager than ever to pick up bioinformatics types," Schadt says. "The bottom line, I believe, is that the bioinformatics field will not feel any real pain unless the economy gets really bad."\n\nSchadt believes that the bioinformatics field will continue to be insulated from all but major economic shocks for several reasons. It is still a relatively new field, and there are not enough qualified people to fill all the positions. Plus, companies and academic centers continue to realize the need for bioinformaticists and thus create new positions.\n\nEven though the human genome has been sequenced, don't expect the need for bioinformaticists to vanish anytime soon. "I couldn't think of a better place to be in the next five to 10 years," Wolfe says. "Five years from now, people are going to look back at even the year 2000, give a little chuckle, and say, 'If these people had the data we're working with today, they could have done this, this, and this.' Ten years from now, they're going to be saying the same thing about the year 2005, let alone 2000."\n
For those running linux on x86_64 systems, this would make our lives so much better for listening to [[Pandora]] and organizing on [[Flickr]].\n\nhttp://www.petitiononline.com/lin64swf/petition.html
<<siteMap Logs>>\n<<siteMap Links>>
/***\n| Name:|SiteMapMacro|\n| Author:|Simon Baird|\n| Location:|http://simonbaird.com/mptw/#SiteMapMacro|\n| Version:|1.0.3, 15-Mar-06|\n\n!!Examples\nSee SiteMap and SliderSiteMap for example usage.\n\n!!Parameters\n* Name of tiddler to start at\n* Max depth (a number) \n* Format (eg, nested, see formats below)\n* Don't show root flag (anything other than null turns it on)\n* Tags - a string containing a bracketed list of tags that we are interested in\n\n!!History\n* 1.0.3 (15-Mar-06)\n** added tag filtering\n* 1.0.2 (15-Mar-06)\n** Added json format and dontshowroot option\n* 1.0.1 (9-Mar-06)\n** Added selectable formats and fixed nested slider format\n* 1.0.0 (8-Mar-06)\n** first release\n\n***/\n//{{{\n\nversion.extensions.SiteMapMacro = {\n major: 1,\n minor: 0,\n revision: 3,\n date: new Date(2006,3,15),\n source: "http://simonbaird.com/mptw/#SiteMapMacro"\n};\n\nconfig.macros.siteMap = {\n\n formats: {\n bullets: {\n formatString: "%0[[%1]]\sn%2",\n indentString: "*"\n },\n\n // put this in your StyleSheet to make it look good.\n // .sliderPanel { margin-left: 2em; }\n\n sliders: {\n formatString: "[[%1]]+++\sn%2===\sn\sn",\n formatStringLeaf: "[[%1]]\sn"\n },\n\n openSliders: {\n formatString: "[[%1]]++++\sn%2===\sn\sn",\n formatStringLeaf: "[[%1]]\sn"\n },\n\n popups: {\n formatString: "[[%1]]+++^\sn%2===\sn\sn",\n formatStringLeaf: "[[%1]]\sn"\n },\n\n // these don't work too well\n openPopups: {\n formatString: "[[%1]]++++^\sn%2===\sn\sn",\n formatStringLeaf: "[[%1]]\sn"\n },\n \n // this is a little nuts but it works\n json: {\n formatString: '\sn%0{"%1":[%2\sn%0]}',\n formatStringLeaf: '\sn%0"%1"',\n indentString: " ",\n separatorString: ","\n }\n\n\n },\n\n defaultFormat: "bullets",\n\n treeTraverse: function(title,depth,maxdepth,format,dontshowroot,tags,excludetags) {\n\n var tiddler = store.getTiddler(title);\n var tagging = store.getTaggedTiddlers(title);\n\n if (dontshowroot)\n depth = 0;\n\n var indent = "";\n if (this.formats[format].indentString)\n for (var j=0;j<depth;j++)\n indent += this.formats[format].indentString;\n\n var childOutput = "";\n if (!maxdepth || depth < parseInt(maxdepth)) \n for (var i=0;i<tagging.length;i++)\n if (tagging[i].title != title) {\n if (this.formats[format].separatorString && i != 0)\n childOutput += this.formats[format].separatorString;\n childOutput += this.treeTraverse(tagging[i].title,depth+1,maxdepth,format,null,tags,excludetags);\n }\n\n if (childOutput == "" && (\n (tags && tags != "" && !tiddler.tags.containsAll(tags.readBracketedList())) ||\n (excludetags && excludetags != "" && tiddler.tags.containsAny(excludetags.readBracketedList()))\n )\n ) {\n // so prune it cos it doesn't have the right tags and neither do any of it's children\n return "";\n }\n\n if (dontshowroot)\n return childOutput;\n\n if (this.formats[format].formatStringLeaf && childOutput == "") {\n // required for nestedSliders\n return this.formats[format].formatStringLeaf.format([indent,title,childOutput]);\n }\n\n return this.formats[format].formatString.format([indent,title,childOutput]);\n },\n\n handler: function (place,macroName,params,wikifier,paramString,tiddler) {\n wikify(this.treeTraverse(\n params[0] && params[0] != '.' ? params[0] : tiddler.title, 1, \n params[1] && params[1] != '.' ? params[1] : null, // maxdepth\n params[2] && params[2] != '.' ? params[2] : this.defaultFormat, // format\n params[3] && params[3] != '.' ? params[3] : null, // dontshowroot\n params[4] && params[4] != '.' ? params[4] : null, // tags\n params[5] && params[5] != '.' ? params[5] : null // excludetags\n ),place);\n }\n\n}\n\n//}}}\n
Web home of [[Nathan Siemers]]
Welcome to Fiveprime
http://www.fiveprime.org/
Get 2 girls for servers!\nNote to Kathryn and Sara - outfit coordination.\nWash guest dishes and glassware.\n\nGifts for children\n*glow bracelents\n*origami paper for snowflakes\n*scissors\n\nwash white towels for sauna\n\nsauna on low for girls.\n\n1 Glogg recipe:\n1.5 liter red wine\n1.5l port\n1 botle aquavit\n10 inches cinnamon\n1 tbspoon cardamom\n2 dozen cloves\npeel one orange\n1/2 cup raisins\n2 cups sugar.\n\n\nNEED: Backup plates, silverware, glasses\n\nLights outside to parking\n\nplace for Beau to stay\n\nmove table to serving spot\n\ncandles in safe places\n\n\nGlug\nPort\nAquavit\nKirsch\nWine\nAlmonds\nRaisins\nCinn sticks\ncloves\nVodka\nraisins\norange peel\n\nSushi\n\nSalmon\n\nMeatballs?\n\nHot+Sour Soup\n\nJapanese pork\nPork loin\nCucumber\ntomato\nmiso-garlic\n\nRoast Lamb?\n\nRoast rosemary potatoes\n\ntables clear in garage for food storage\n\ntablecloths\n\nanother table?\ncookies and cakes?\n\ncheese plate\n\ntv room for children - corrina's room? \nmovies - exciting\n\nChairs set up in Sun room\n\nSound Dampening - help!\n\nClear up back patio\n\nClear up contractor crap by driveway\n\nPut up range hood.\n\nmap of parking spots\n\nclip bush around path from Gerke's\n\n*invite \ncellists?\n\n\n\n\n\n\n\n\n\n
Violin maker in the shop of WilliamHarrisLee in [[Chicago]]. Made incredible and powerful [[Cello]]s, now makes mostly Violas
[[Stebbins Studios Woodworking|http://www.stebbinsstudios.com]]
/***\nKeep just two tiddlers open a time, the one you clicked on and the one containing the link you just clicked.\nAs suggested by Elise Springer.\n***/\n//{{{\nversion.extensions.StepWiseNavigation = { major: 1, minor: 0, revision: 1,\n date: new Date(2006,4,27),\n source: "http://simonbaird.com/mptw/#StepWiseNavigation"\n};\n\nif (config.options.chkStepWiseNavigationOn == undefined)\n config.options.chkStepWiseNavigationOn = true;\n\nconfig.shadowTiddlers.AdvancedOptions +=\n "\sn<<option chkStepWiseNavigationOn>> StepWiseNavigation";\n\nStory.prototype.displayTiddler_orig_stepwise=Story.prototype.displayTiddler;\nStory.prototype.displayTiddler = function(srcElement,title,template,animate,slowly) {\n if (config.options.chkStepWiseNavigationOn && srcElement && this.findContainingTiddler(srcElement))\n this.closeAllTiddlers(this.findContainingTiddler(srcElement).getAttribute("tiddler"));\n this.displayTiddler_orig_stepwise(srcElement,title,template,animate,slowly)\n}\n\n//}}}\n
Highly recommended
[[StumbleUpon|http://stumbleupon.com]]\n
\n\n/***\nCosmetic fixes that probably should be included in a future TW...\n***/\n/*{{{*/\n.viewer .listTitle { list-style-type:none; margin-left:-2em; }\n.editorFooter .button { padding-top: 0px; padding-bottom:0px; }\n/*}}}*/\n/***\nImportant stuff. See TagglyTaggingStyles and HorizontalMainMenuStyles\n***/\n/*{{{*/\n[[TagglyTaggingStyles]]\n[[HorizontalMainMenuStyles]]\n/*}}}*/\n/***\nClint's fix for weird IE behaviours\n***/\n/*{{{*/\nbody {position:static;}\n.tagClear{margin-top:1em;clear:both;}\n/*}}}*/\n/***\nJust colours, fonts, tweaks etc. See SideBarWhiteAndGrey\n***/\n/*{{{*/\nbody {background:#eee; /* font-size:103%; */}\na{ color: #069; }\na:hover{ background: #069; color: #fff; }\n.popup { background: #178; border: 1px solid #069; }\n.headerForeground a { color: #6fc;}\n.headerShadow { left: 2px; top: 2px; }\n.title { padding:0px; margin:0px; }\n.siteSubtitle { padding:0px; margin:0px; padding-left:1.5em; }\n.subtitle { font-size:90%; color:#888; padding-left:0.25em; }\nh1,h2,h3,h4,h5 { color: #000; background: transparent; }\n.title {color:black; font-size:2em;}\n.shadow .title {color:#888; }\n.viewer pre { background-color:#f8f8ff; border-color:#ddf; }\n.viewer { padding-top:0px; }\n.editor textarea { font-family:monospace; }\n#sidebarOptions { border:1px #ccc solid; }\n.tiddler {\n border-bottom:1px solid #ccc; border-right:1px solid #ccc; padding-bottom:1em; margin-bottom:1em; \n background:#fff; padding-right:1.5em; }\n#messageArea { background-color:#bde; border-color:#8ab; border-width:4px; border-style:dotted; font-size:90%; }\n#messageArea .button { text-decoration:none; font-weight:bold; background:transparent; border:0px; }\n#messageArea .button:hover {background: #acd; }\n[[SideBarWhiteAndGrey]]\n\n#adsense {\n margin: 1em 15.7em 0em 1em; border:1px solid #ddd;\n background:#f8f8f8; text-align:center;margin-bottom:1em;overflow:hidden;padding:0.5em;} \n/*}}}*/\n/*{{{*/\n/* for testing clint's new formatter. eg {{red{asdfaf}}} */\n.red { color:white; background:red; display:block; padding:1em; } \n\n/* FF doesn't need this. but IE seems to want to make first one white */\n.txtMainTab .tabset { background:#eee; }\n.txtMoreTab .tabset { background:transparent; }\n\n\n/***\nPlace your custom CSS here\n\nWhat I have done:\nGrown the MainMenu and increased it's font size.\nGrown the SideBar and the tabbed interface within it\nAdjusted the displayArea appropriately.\n\nGet rid of underlined html links!\n\n\n\n***/\n/*{{{*/\n\nbody {\n background: #fff;\n color: #000;\n}\n\n.externalLink {\n text-decoration: none;\n font-weight: bold;\n\n}\n#mainMenu .externalLink {\n font-weight: normal;\n}\n\n\n#mainMenu {\n position: absolute;\n left: 0;\n width: 16em;\n text-align: left;\n line-height: 1.6em;\n padding: 1.5em 0.5em 0.5em 0.5em;\n font-size: 1.4em;\n}\n\n#sidebar {\n position: absolute;\n right: 3px;\n width: 20em;\n font-size: .9em;\n}\n\n#sidebarTabs .tabContents {\n width: 19em;\n overflow: hidden;\n}\n\n\n#displayArea {\n margin: 1em 21em 0em 25em;\n}\n\n\n\n\n/*}}}*/\n\n\n/*}}}*/\n
/***\n!Colors Used\n*@@bgcolor(#8cf): #8cf - Background blue@@\n*@@bgcolor(#18f): #18f - Top blue@@\n*@@bgcolor(#04b): #04b - Mid blue@@\n*@@bgcolor(#014):color(#fff): #014 - Bottom blue@@\n*@@bgcolor(#ffc): #ffc - Bright yellow@@\n*@@bgcolor(#fe8): #fe8 - Highlight yellow@@\n*@@bgcolor(#db4): #db4 - Background yellow@@\n*@@bgcolor(#841): #841 - Border yellow@@\n*@@bgcolor(#703):color(#fff): #703 - Title red@@\n*@@bgcolor(#422): #422 - Subtitle grey@@\n!Generic Rules /%==============================================%/\n***/\n/*{{{*/\nbody {\n background: #fff;\n color: #000;\n}\n\na{\n color: #04b;\n}\n\na:hover{\n background: #04b;\n color: #fff;\n}\n\na img{\n border: 0;\n}\n\nh1,h2,h3,h4,h5 {\n color: #703;\n background: #8cf;\n}\n\n.button {\n color: #014;\n border: 1px solid #fff;\n}\n\n.button:hover {\n color: #014;\n background: #fe8;\n border-color: #db4;\n}\n\n.button:active {\n color: #fff;\n background: #db4;\n border: 1px solid #841;\n}\n\n/*}}}*/\n/***\n!Header /%==================================================%/\n***/\n/*{{{*/\n.header {\n background: #04b;\n}\n\n.headerShadow {\n color: #000;\n}\n\n.headerShadow a {\n font-weight: normal;\n color: #000;\n}\n\n.headerForeground {\n color: #fff;\n}\n\n.headerForeground a {\n font-weight: normal;\n color: #8cf;\n}\n\n/*}}}*/\n/***\n!General tabs /%=================================================%/\n***/\n/*{{{*/\n\n.tabSelected{\n color: #014;\n background: #eee;\n border-left: 1px solid #ccc;\n border-top: 1px solid #ccc;\n border-right: 1px solid #ccc;\n}\n\n.tabUnselected {\n color: #fff;\n background: #999;\n}\n\n.tabContents {\n color: #014;\n background: #eee;\n border: 1px solid #ccc;\n}\n\n.tabContents .button {\n border: 0;}\n\n/*}}}*/\n/***\n!Sidebar options /%=================================================%/\n~TiddlyLinks and buttons are treated identically in the sidebar and slider panel\n***/\n/*{{{*/\n#sidebar {\n}\n\n#sidebarOptions input {\n border: 1px solid #04b;\n}\n\n#sidebarOptions .sliderPanel {\n background: #8cf;\n}\n\n#sidebarOptions .sliderPanel a {\n border: none;\n color: #04b;\n}\n\n#sidebarOptions .sliderPanel a:hover {\n color: #fff;\n background: #04b;\n}\n\n#sidebarOptions .sliderPanel a:active {\n color: #04b;\n background: #fff;\n}\n/*}}}*/\n/***\n!Message Area /%=================================================%/\n***/\n/*{{{*/\n#messageArea {\n border: 1px solid #841;\n background: #db4;\n color: #014;\n}\n\n#messageArea .button {\n padding: 0.2em 0.2em 0.2em 0.2em;\n color: #014;\n background: #fff;\n}\n\n/*}}}*/\n/***\n!Popup /%=================================================%/\n***/\n/*{{{*/\n.popup {\n background: #18f;\n border: 1px solid #04b;\n}\n\n.popup hr {\n color: #014;\n background: #014;\n border-bottom: 1px;\n}\n\n.popup li.disabled {\n color: #04b;\n}\n\n.popup li a, .popup li a:visited {\n color: #eee;\n border: none;\n}\n\n.popup li a:hover {\n background: #014;\n color: #fff;\n border: none;\n}\n/*}}}*/\n/***\n!Tiddler Display /%=================================================%/\n***/\n/*{{{*/\n.tiddler .defaultCommand {\n font-weight: bold;\n}\n\n.shadow .title {\n color: #866;\n}\n\n.title {\n color: #703;\n}\n\n.subtitle {\n color: #422;\n}\n\n.toolbar {\n color: #04b;\n}\n\n.tagging, .tagged {\n border: 1px solid #eee;\n background-color: #eee;\n}\n\n.selected .tagging, .selected .tagged {\n background-color: #ddd;\n border: 1px solid #bbb;\n}\n\n.tagging .listTitle, .tagged .listTitle {\n color: #014;\n}\n\n.tagging .button, .tagged .button {\n border: none;\n}\n\n.footer {\n color: #ddd;\n}\n\n.selected .footer {\n color: #888;\n}\n\n.sparkline {\n background: #8cf;\n border: 0;\n}\n\n.sparktick {\n background: #014;\n}\n\n.errorButton {\n color: #ff0;\n background: #f00;\n}\n\n.cascade {\n background: #eef;\n color: #aac;\n border: 1px solid #aac;\n}\n\n.imageLink, #displayArea .imageLink {\n background: transparent;\n}\n\n/*}}}*/\n/***\n''The viewer is where the tiddler content is displayed'' /%------------------------------------------------%/\n***/\n/*{{{*/\n\n.viewer .listTitle {list-style-type: none; margin-left: -2em;}\n\n.viewer .button {\n border: 1px solid #db4;\n}\n\n.viewer blockquote {\n border-left: 3px solid #666;\n}\n\n.viewer table {\n border: 2px solid #333;\n}\n\n.viewer th, thead td {\n background: #db4;\n border: 1px solid #666;\n color: #fff;\n}\n\n.viewer td, .viewer tr {\n border: 1px solid #666;\n}\n\n.viewer pre {\n border: 1px solid #fe8;\n background: #ffc;\n}\n\n.viewer code {\n color: #703;\n}\n\n.viewer hr {\n border: 0;\n border-top: dashed 1px #666;\n color: #666;\n}\n\n.highlight, .marked {\n background: #fe8;\n}\n/*}}}*/\n/***\n''The editor replaces the viewer in the tiddler'' /%------------------------------------------------%/\n***/\n/*{{{*/\n.editor input {\n border: 1px solid #04b;\n}\n\n.editor textarea {\n border: 1px solid #04b;\n width: 100%;\n}\n\n.editorFooter {\n color: #aaa;\n}\n\n/*}}}*/
/***\n!Sections in this Tiddler:\n*Generic rules\n**Links styles\n**Link Exceptions\n*Header\n*Main menu\n*Sidebar\n**Sidebar options\n**Sidebar tabs\n*Message area\n*Popup\n*Tabs\n*Tiddler display\n**Viewer\n**Editor\n*Misc. rules\n!Generic Rules /%==============================================%/\n***/\n/*{{{*/\nbody {\n font-size: .75em;\n font-family: arial,helvetica;\n position: relative;\n margin: 0;\n padding: 0;\n}\n\nh1,h2,h3,h4,h5 {\n font-weight: bold;\n text-decoration: none;\n padding-left: 0.4em;\n}\n\nh1 {font-size: 1.35em;}\nh2 {font-size: 1.25em;}\nh3 {font-size: 1.1em;}\nh4 {font-size: 1em;}\nh5 {font-size: .9em;}\n\nhr {\n height: 1px;\n}\n\na{\n text-decoration: none;\n}\n\nol { list-style-type: decimal }\nol ol { list-style-type: lower-alpha }\nol ol ol { list-style-type: lower-roman }\nol ol ol ol { list-style-type: decimal }\nol ol ol ol ol { list-style-type: lower-alpha }\nol ol ol ol ol ol { list-style-type: lower-roman }\nol ol ol ol ol ol ol { list-style-type: decimal }\n/*}}}*/\n/***\n''General Link Styles'' /%-----------------------------------------------------------------------------%/\n***/\n/*{{{*/\n.externalLink {\n text-decoration: underline;\n}\n\n.tiddlyLinkExisting {\n font-weight: bold;\n}\n\n.tiddlyLinkNonExisting {\n font-style: italic;\n}\n\n/* the 'a' is required for IE, otherwise it renders the whole tiddler a bold */\na.tiddlyLinkNonExisting.shadow {\n font-weight: bold;\n}\n/*}}}*/\n/***\n''Exceptions to common link styles'' /%------------------------------------------------------------------%/\n***/\n/*{{{*/\n\n#mainMenu .tiddlyLinkExisting, \n#mainMenu .tiddlyLinkNonExisting,\n#sidebarTabs .tiddlyLinkExisting,\n#sidebarTabs .tiddlyLinkNonExisting{\n font-weight: normal;\n font-style: normal;\n}\n\n/*}}}*/\n/***\n!Header /%==================================================%/\n***/\n/*{{{*/\n\n.header {\n position: relative;\n}\n\n.header a:hover {\n background: transparent;\n}\n\n.headerShadow {\n position: relative;\n padding: 4.5em 0em 1em 1em;\n left: -1px;\n top: -1px;\n}\n\n.headerForeground {\n position: absolute;\n padding: 4.5em 0em 1em 1em;\n left: 0px;\n top: 0px;\n}\n\n.siteTitle {\n font-size: 3em;\n}\n\n.siteSubtitle {\n font-size: 1.2em;\n}\n\n/*}}}*/\n/***\n!Main menu /%==================================================%/\n***/\n/*{{{*/\n#mainMenu {\n position: absolute;\n left: 0;\n width: 10em;\n text-align: right;\n line-height: 1.6em;\n padding: 1.5em 0.5em 0.5em 0.5em;\n font-size: 1.5em;\n}\n\n/*}}}*/\n/***\n!Sidebar rules /%==================================================%/\n***/\n/*{{{*/\n#sidebar {\n position: absolute;\n right: 3px;\n width: 16em;\n font-size: .9em;\n}\n/*}}}*/\n/***\n''Sidebar options'' /%----------------------------------------------------------------------------------%/\n***/\n/*{{{*/\n#sidebarOptions {\n padding-top: 0.3em;\n}\n\n#sidebarOptions a {\n margin: 0em 0.2em;\n padding: 0.2em 0.3em;\n display: block;\n}\n\n#sidebarOptions input {\n margin: 0.4em 0.5em;\n}\n\n#sidebarOptions .sliderPanel {\n margin-left: 1em;\n padding: 0.5em;\n font-size: .85em;\n}\n\n#sidebarOptions .sliderPanel a {\n font-weight: bold;\n display: inline;\n padding: 0;\n}\n\n#sidebarOptions .sliderPanel input {\n margin: 0 0 .3em 0;\n}\n/*}}}*/\n/***\n''Sidebar tabs'' /%-------------------------------------------------------------------------------------%/\n***/\n/*{{{*/\n\n#sidebarTabs .tabContents {\n width: 15em;\n overflow: hidden;\n}\n\n/*}}}*/\n/***\n!Message area /%==================================================%/\n***/\n/*{{{*/\n#messageArea {\nposition:absolute; top:0; right:0; margin: 0.5em; padding: 0.5em;\n}\n\n*[id='messageArea'] {\nposition:fixed !important; z-index:99;}\n\n.messageToolbar {\ndisplay: block;\ntext-align: right;\n}\n\n#messageArea a{\n text-decoration: underline;\n}\n/*}}}*/\n/***\n!Popup /%==================================================%/\n***/\n/*{{{*/\n.popup {\n font-size: .9em;\n padding: 0.2em;\n list-style: none;\n margin: 0;\n}\n\n.popup hr {\n display: block;\n height: 1px;\n width: auto;\n padding: 0;\n margin: 0.2em 0em;\n}\n\n.popup li.disabled {\n padding: 0.2em;\n}\n\n.popup li a{\n display: block;\n padding: 0.2em;\n}\n/*}}}*/\n/***\n!Tabs /%==================================================%/\n***/\n/*{{{*/\n.tabset {\n padding: 1em 0em 0em 0.5em;\n}\n\n.tab {\n margin: 0em 0em 0em 0.25em;\n padding: 2px;\n}\n\n.tabContents {\n padding: 0.5em;\n}\n\n.tabContents ul, .tabContents ol {\n margin: 0;\n padding: 0;\n}\n\n.txtMainTab .tabContents li {\n list-style: none;\n}\n\n.tabContents li.listLink {\n margin-left: .75em;\n}\n/*}}}*/\n/***\n!Tiddler display rules /%==================================================%/\n***/\n/*{{{*/\n#displayArea {\n margin: 1em 17em 0em 14em;\n}\n\n\n.toolbar {\n text-align: right;\n font-size: .9em;\n visibility: hidden;\n}\n\n.selected .toolbar {\n visibility: visible;\n}\n\n.tiddler {\n padding: 1em 1em 0em 1em;\n}\n\n.missing .viewer,.missing .title {\n font-style: italic;\n}\n\n.title {\n font-size: 1.6em;\n font-weight: bold;\n}\n\n.missing .subtitle {\n display: none;\n}\n\n.subtitle {\n font-size: 1.1em;\n}\n\n/* I'm not a fan of how button looks in tiddlers... */\n.tiddler .button {\n padding: 0.2em 0.4em;\n}\n\n.tagging {\nmargin: 0.5em 0.5em 0.5em 0;\nfloat: left;\ndisplay: none;\n}\n\n.isTag .tagging {\ndisplay: block;\n}\n\n.tagged {\nmargin: 0.5em;\nfloat: right;\n}\n\n.tagging, .tagged {\nfont-size: 0.9em;\npadding: 0.25em;\n}\n\n.tagging ul, .tagged ul {\nlist-style: none;margin: 0.25em;\npadding: 0;\n}\n\n.tagClear {\nclear: both;\n}\n\n.footer {\n font-size: .9em;\n}\n\n.footer li {\ndisplay: inline;\n}\n/***\n''The viewer is where the tiddler content is displayed'' /%------------------------------------------------%/\n***/\n/*{{{*/\n* html .viewer pre {\n width: 99%;\n padding: 0 0 1em 0;\n}\n\n.viewer {\n line-height: 1.4em;\n padding-top: 0.5em;\n}\n\n.viewer .button {\n margin: 0em 0.25em;\n padding: 0em 0.25em;\n}\n\n.viewer blockquote {\n line-height: 1.5em;\n padding-left: 0.8em;\n margin-left: 2.5em;\n}\n\n.viewer ul, .viewer ol{\n margin-left: 0.5em;\n padding-left: 1.5em;\n}\n\n.viewer table {\n border-collapse: collapse;\n margin: 0.8em 1.0em;\n}\n\n.viewer th, .viewer td, .viewer tr,.viewer caption{\n padding: 3px;\n}\n\n.viewer pre {\n padding: 0.5em;\n margin-left: 0.5em;\n font-size: 1.2em;\n line-height: 1.4em;\n overflow: auto;\n}\n\n.viewer code {\n font-size: 1.2em;\n line-height: 1.4em;\n}\n/*}}}*/\n/***\n''The editor replaces the viewer in the tiddler'' /%------------------------------------------------%/\n***/\n/*{{{*/\n.editor {\nfont-size: 1.1em;\n}\n\n.editor input, .editor textarea {\n display: block;\n width: 100%;\n font: inherit;\n}\n\n.editorFooter {\n padding: 0.25em 0em;\n font-size: .9em;\n}\n\n.editorFooter .button {\npadding-top: 0px; padding-bottom: 0px;}\n\n.fieldsetFix {border: 0;\npadding: 0;\nmargin: 1px 0px 1px 0px;\n}\n/*}}}*/\n/***\n!Misc rules /%==================================================%/\n***/\n/*{{{*/\n.sparkline {\n line-height: 1em;\n}\n\n.sparktick {\n outline: 0;\n}\n\n.zoomer {\n font-size: 1.1em;\n position: absolute;\n padding: 1em;\n}\n\n.cascade {\n font-size: 1.1em;\n position: absolute;\n overflow: hidden;\n}\n/*}}}*/
I just soaked the apples in it and then transferred to ziplock bags and so far so good -nathan\n2 1/2 cups sugar\n4 cups water\n1/2 teaspoon ascorbic acid powder (1500 mg)\n\n
/***\n''Name:'' TWUpdate\n''Author:'' Tom Otvos\n''Version:'' 0.2\n<<twupdate>>\n***/\n//{{{\n\nversion.extensions.twupdate = {major: 0, minor: 2, revision: 0, date: new Date(2006,3,13,0,0,0,0), source: ""};\n\nconfig.macros.twupdate = { \n label: "update",\n sourceUrl: "http://www.tiddlywiki.com/empty.html", \n lingo: {\n prompt: "Update this TiddlyWiki from TiddlyWiki.com", \n warning: "Are you sure you want to update this document with the latest version of TiddlyWiki?\sn\snIf you want to continue, your document will first be saved with a backup.",\n success: "Update was successful. Click on 'OK' to reload the document",\n errNoHttp: "Unable to allocate an HTTP request object for the update",\n progressLoading: "Getting update from TiddlyWiki.com...",\n progressLoadSuccess: "File successfully loaded",\n progressLoadFailure: "File was not loaded successfully (%0)",\n progressMerging: "Merging with existing document..."\n }\n}\n\nconfig.macros.twupdate.handler = function(place)\n{\n if(!readOnly)\n createTiddlyButton(place, this.label, this.prompt, this.onClick, null, null, null);\n}\n\nconfig.macros.twupdate.onClick = function(e)\n{\n if (!confirm(config.macros.twupdate.lingo.warning)) return;\n\n try {\n // force a save with backup\n var saveBackups = config.options.chkSaveBackups;\n config.options.chkSaveBackups = true;\n saveChanges();\n config.options.chkSaveBackups = saveBackups;\n \n var ajax = new AjaxHelper();\n displayMessage(config.macros.twupdate.lingo.progressLoading);\n ajax.getText(config.macros.twupdate.sourceUrl, config.macros.twupdate.performUpdate); \n }\n catch (e) {\n alert(e);\n }\n\n return false;\n}\n\nconfig.macros.twupdate.performUpdate = function(emptyHtml, status, statusText)\n{\n // note that this is begin called from a callback from an event handler, so\n // "this" is most definitely not defined!\n \n if (status == 200)\n displayMessage(config.macros.twupdate.lingo.progressLoadSuccess);\n else {\n displayMessage(config.macros.twupdate.lingo.progressLoadFailure.format([statusText]));\n return;\n }\n displayMessage(config.macros.twupdate.lingo.progressMerging);\n \n // the bulk of this is cribbed from saveChanges()...\n var originalPath = document.location.toString();\n // Check we were loaded from a file URL\n if (originalPath.substr(0,5) != "file:") {\n alert(config.messages.notFileUrlError);\n if (store.tiddlerExists(config.messages.saveInstructions))\n displayTiddler(null,config.messages.saveInstructions);\n return;\n }\n var localPath = getLocalPath(originalPath);\n\n // Locate the storeArea div's\n var posOpeningDiv = emptyHtml.indexOf(startSaveArea);\n var posClosingDiv = emptyHtml.lastIndexOf(endSaveArea);\n if ((posOpeningDiv == -1) || (posClosingDiv == -1)) {\n alert(config.messages.invalidFileError.format(['empty.html']));\n return;\n }\n\n // Save new file\n var revised = emptyHtml.substr(0,posOpeningDiv + startSaveArea.length) + \n convertUnicodeToUTF8(allTiddlersAsHtml()) + "\sn\st\st" +\n emptyHtml.substr(posClosingDiv);\n var newSiteTitle = convertUnicodeToUTF8((wikifyPlain("SiteTitle") + " - " + wikifyPlain("SiteSubtitle")).htmlEncode());\n revised = revised.replaceChunk("<title"+">","</title"+">"," " + newSiteTitle + " ");\n revised = revised.replaceChunk("<!--PRE-HEAD-START--"+">","<!--PRE-HEAD-END--"+">","\sn" + store.getTiddlerText("MarkupPreHead","") + "\sn");\n revised = revised.replaceChunk("<!--POST-HEAD-START--"+">","<!--POST-HEAD-END--"+">","\sn" + store.getTiddlerText("MarkupPostHead","") + "\sn");\n revised = revised.replaceChunk("<!--PRE-BODY-START--"+">","<!--PRE-BODY-END--"+">","\sn" + store.getTiddlerText("MarkupPreBody","") + "\sn");\n revised = revised.replaceChunk("<!--POST-BODY-START--"+">","<!--POST-BODY-END--"+">","\sn" + store.getTiddlerText("MarkupPostBody","") + "\sn");\n var save = saveFile(localPath, revised);\n if (save) {\n displayMessage(config.messages.mainSaved, "file://" + localPath);\n store.setDirty(false);\n alert(config.macros.twupdate.lingo.success);\n document.location.reload();\n }\n else\n alert(config.messages.mainFailed);\n}\n\nfunction AjaxHelper()\n{\n this.http = null;\n \n try\n {\n this.http = new XMLHttpRequest()\n }\n \n catch(e)\n {\n // if we don't get an internal object, try allocating it using ActiveX, with successive\n // fallbacks to earlier MSXML versions as necessary\n try\n {\n this.http = new ActiveXObject("Msxml2.XMLHTTP.4.0")\n } \n catch(e) \n {\n try\n {\n this.http = new ActiveXObject("MSXML2.XMLHTTP")\n } \n catch(e) \n {\n try\n {\n this.http = new ActiveXObject("Microsoft.XMLHTTP")\n } \n catch(e) \n {\n this.http = null\n }\n }\n }\n }\n \n if (!this.http) throw 'Unable to allocate an HTTP request object';\n}\n\nAjaxHelper.prototype.getText = function(url, callback, async, force)\n{\n if (!this.http) return;\n if (async == undefined) async = true;\n if (force == undefined) force = false;\n // ??? right now, we are not handling "forced" requests\n this._request("GET", url, callback, async, true, false);\n}\n\nAjaxHelper.prototype.getXML = function(url, callback, async, force)\n{\n if (!this.http) return;\n if (async == undefined) async = true;\n if (force == undefined) force = false;\n // ??? right now, we are not handling "forced" requests\n this._request("GET", url, callback, async, true, true);\n}\n\nAjaxHelper.prototype.getHead = function(url, callback, async, force)\n{\n if (!this.http) return;\n if (async == undefined) async = true;\n if (force == undefined) force = false;\n // ??? right now, we are not handling "forced" requests\n this._request("HEAD", url, callback, async, false, false);\n}\n\nAjaxHelper.prototype.abort = function()\n{\n if (this.http) this.http.abort();\n}\n\nAjaxHelper.prototype.setRequestHeader = function(name, value)\n{\n if (this.http) this.http.setRequestHeader(name, value);\n}\n\nAjaxHelper.prototype._request = function(method, url, callback, async, hasResponse, hasResponseXML)\n{\n if (!this.http) return;\n \n // get reference to request object so we can use it in closure\n var xmlHttp = this.http, helper = this;\n xmlHttp.onreadystatechange = function()\n {\n if (!async) return;\n if (xmlHttp.readyState == 4)\n callback((hasResponse ? (hasResponseXML ? xmlHttp.responseXML : xmlHttp.responseText) : null), xmlHttp.status, xmlHttp.statusText, helper._parsedResponseHeaders());\n }\n \n try {\n // need some cross-domain privileges for Firefox\n try {\n netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");\n } \n catch (e) \n {\n }\n \n xmlHttp.open(method, url, async);\n xmlHttp.send(null);\n if (!async) callback((hasResponse ? (hasResponseXML ? xmlHttp.responseXML : xmlHttp.responseText) : null), xmlHttp.status, xmlHttp.statusText, this._parsedResponseHeaders());\n }\n \n catch (e)\n {\n alert(e);\n }\n}\n\nAjaxHelper.prototype._parsedResponseHeaders = function()\n{\n if (this.http) {\n var headersArray = new Array();\n var headers = this.http.getAllResponseHeaders().split("\sn");\n for (var i = 0; i < headers.length; i++) {\n var h = headers[i].trim();\n if (h.length == 0) continue;\n // value can have ':' so do not use split here!\n var sep = h.indexOf(':');\n headersArray[h.substring(0, sep).trim()] = h.substr(sep + 1).trim();\n }\n return headersArray;\n }\n else\n return null;\n}\n\n//}}}\n
<<timeline>>
/***\n|Name|TagglyListPlugin|\n|Created by|SimonBaird|\n|Location|http://simonbaird.com/mptw/#TagglyListPlugin|\n|Version|1.1.1 6-Mar-06|\n|Requires|See TagglyTagging|\n\n!History\n* 1.1.1 (6-Mar-2006) fixed bug with refreshAllVisible closing tiddlers being edited. Thanks Luke Blanshard.\n\n***/\n\n/***\n!Setup and config\n***/\n//{{{\n\nversion.extensions.TagglyListPlugin = {\n major: 1, minor: 1, revision: 1,\n date: new Date(2006,3,6),\n source: "http://simonbaird.com/mptw/#TagglyListPlugin"\n};\n\nconfig.macros.tagglyList = {};\nconfig.macros.tagglyListByTag = {};\nconfig.macros.tagglyListControl = {};\nconfig.macros.tagglyListWithSort = {};\nconfig.macros.hideSomeTags = {};\n\n// change this to your preference\nconfig.macros.tagglyListWithSort.maxCols = 6;\n\nconfig.macros.tagglyList.label = "Tagged as %0:";\n\n// the default sort options. set these to your preference\nconfig.macros.tagglyListWithSort.defaults = {\n sortBy:"title", // title|created|modified\n sortOrder: "asc", // asc|desc\n hideState: "show", // show|hide\n groupState: "nogroup", // nogroup|group\n numCols: 1\n};\n\n// these tags will be ignored by the grouped view\nconfig.macros.tagglyListByTag.excludeTheseTags = [\n "systemConfig",\n "TiddlerTemplates"\n];\n\nconfig.macros.tagglyListControl.tags = {\n title:"sortByTitle", \n modified: "sortByModified", \n created: "sortByCreated",\n asc:"sortAsc", \n desc:"sortDesc",\n hide:"hideTagged", \n show:"showTagged",\n nogroup:"noGroupByTag",\n group:"groupByTag",\n cols1:"list1Cols",\n cols2:"list2Cols",\n cols3:"list3Cols",\n cols4:"list4Cols",\n cols5:"list5Cols",\n cols6:"list6Cols",\n cols7:"list7Cols",\n cols8:"list8Cols",\n cols9:"list9Cols" \n}\n\n// note: should match config.macros.tagglyListControl.tags\nconfig.macros.hideSomeTags.tagsToHide = [\n "sortByTitle",\n "sortByCreated",\n "sortByModified",\n "sortDesc",\n "sortAsc",\n "hideTagged",\n "showTagged",\n "noGroupByTag",\n "groupByTag",\n "list1Cols",\n "list2Cols",\n "list3Cols",\n "list4Cols",\n "list5Cols",\n "list6Cols",\n "list7Cols",\n "list8Cols",\n "list9Cols"\n];\n\n\n//}}}\n/***\n\n!Utils\n***/\n//{{{\n// from Eric\nfunction isTagged(title,tag) {\n var t=store.getTiddler(title); if (!t) return false;\n return (t.tags.find(tag)!=null);\n}\n\n// from Eric\nfunction toggleTag(title,tag) {\n var t=store.getTiddler(title); if (!t || !t.tags) return;\n if (t.tags.find(tag)==null) t.tags.push(tag);\n else t.tags.splice(t.tags.find(tag),1);\n}\n\nfunction addTag(title,tag) {\n var t=store.getTiddler(title); if (!t || !t.tags) return;\n t.tags.push(tag);\n}\n\nfunction removeTag(title,tag) {\n var t=store.getTiddler(title); if (!t || !t.tags) return;\n if (t.tags.find(tag)!=null) t.tags.splice(t.tags.find(tag),1);\n}\n\n// from Udo\nArray.prototype.indexOf = function(item) {\n for (var i = 0; i < this.length; i++) {\n if (this[i] == item) {\n return i;\n }\n }\n return -1;\n};\nArray.prototype.contains = function(item) {\n return (this.indexOf(item) >= 0);\n}\n//}}}\n/***\n\n!tagglyList\ndisplays a list of tagged tiddlers. \nparameters are sortField and sortOrder\n***/\n//{{{\n\n// not used at the moment...\nfunction sortedListOfOtherTags(tiddler,thisTag) {\n var list = tiddler.tags.concat(); // so we are working on a clone..\n for (var i=0;i<config.macros.hideSomeTags.tagsToHide.length;i++) {\n if (list.find(config.macros.hideSomeTags.tagsToHide[i]) != null)\n list.splice(list.find(config.macros.hideSomeTags.tagsToHide[i]),1); // remove hidden ones\n }\n for (var i=0;i<config.macros.tagglyListByTag.excludeTheseTags.length;i++) {\n if (list.find(config.macros.tagglyListByTag.excludeTheseTags[i]) != null)\n list.splice(list.find(config.macros.tagglyListByTag.excludeTheseTags[i]),1); // remove excluded ones\n }\n list.splice(list.find(thisTag),1); // remove thisTag\n return '[[' + list.sort().join("]] [[") + ']]';\n}\n\nfunction sortHelper(a,b) {\n if (a == b) return 0;\n else if (a < b) return -1;\n else return +1;\n}\n\nconfig.macros.tagglyListByTag.handler = function (place,macroName,params,wikifier,paramString,tiddler) {\n\n var sortBy = params[0] ? params[0] : "title"; \n var sortOrder = params[1] ? params[1] : "asc";\n\n var result = store.getTaggedTiddlers(tiddler.title,sortBy);\n\n if (sortOrder == "desc")\n result = result.reverse();\n\n var leftOvers = []\n for (var i=0;i<result.length;i++) {\n leftOvers.push(result[i].title);\n }\n\n var allTagsHolder = {};\n for (var i=0;i<result.length;i++) {\n for (var j=0;j<result[i].tags.length;j++) {\n\n if ( \n result[i].tags[j] != tiddler.title // not this tiddler\n && config.macros.hideSomeTags.tagsToHide.find(result[i].tags[j]) == null // not a hidden one\n && config.macros.tagglyListByTag.excludeTheseTags.find(result[i].tags[j]) == null // not excluded\n ) {\n if (!allTagsHolder[result[i].tags[j]])\n allTagsHolder[result[i].tags[j]] = "";\n allTagsHolder[result[i].tags[j]] += "**[["+result[i].title+"]]\sn";\n\n if (leftOvers.find(result[i].title) != null)\n leftOvers.splice(leftOvers.find(result[i].title),1); // remove from leftovers. at the end it will contain the leftovers...\n }\n }\n }\n\n\n var allTags = [];\n for (var t in allTagsHolder)\n allTags.push(t);\n\n allTags.sort(function(a,b) {\n var tidA = store.getTiddler(a);\n var tidB = store.getTiddler(b);\n if (sortBy == "title") return sortHelper(a,b);\n else if (!tidA && !tidB) return 0;\n else if (!tidA) return -1;\n else if (!tidB) return +1;\n else return sortHelper(tidA[sortBy],tidB[sortBy]);\n });\n\n var markup = "";\n\n if (sortOrder == "desc") {\n allTags.reverse();\n }\n else {\n // leftovers first...\n for (var i=0;i<leftOvers.length;i++)\n markup += "*[["+leftOvers[i]+"]]\sn";\n } \n\n for (var i=0;i<allTags.length;i++)\n markup += "*[["+allTags[i]+"]]\sn" + allTagsHolder[allTags[i]];\n\n if (sortOrder == "desc") {\n // leftovers last...\n for (var i=0;i<leftOvers.length;i++)\n markup += "*[["+leftOvers[i]+"]]\sn";\n }\n\n wikify(markup,place);\n}\n\nconfig.macros.tagglyList.handler = function (place,macroName,params,wikifier,paramString,tiddler) {\n var sortBy = params[0] ? params[0] : "title"; \n var sortOrder = params[1] ? params[1] : "asc";\n var numCols = params[2] ? params[2] : 1;\n\n var result = store.getTaggedTiddlers(tiddler.title,sortBy);\n if (sortOrder == "desc")\n result = result.reverse();\n\n var listSize = result.length;\n var colSize = listSize/numCols;\n var remainder = listSize % numCols;\n\n var upperColsize;\n var lowerColsize;\n if (colSize != Math.floor(colSize)) {\n // it's not an exact fit so..\n lowerColsize = Math.floor(colSize);\n upperColsize = Math.floor(colSize) + 1;\n }\n else {\n lowerColsize = colSize;\n upperColsize = colSize;\n }\n\n var markup = "";\n var c=0;\n\n var newTaggedTable = createTiddlyElement(place,"table");\n var newTaggedBody = createTiddlyElement(newTaggedTable,"tbody");\n var newTaggedTr = createTiddlyElement(newTaggedBody,"tr");\n\n for (var j=0;j<numCols;j++) {\n var foo = "";\n var thisSize;\n\n if (j<remainder)\n thisSize = upperColsize;\n else\n thisSize = lowerColsize;\n\n for (var i=0;i<thisSize;i++) \n foo += ( "*[[" + result[c++].title + "]]\sn"); // was using splitList.shift() but didn't work in IE;\n\n var newTd = createTiddlyElement(newTaggedTr,"td",null,"tagglyTagging");\n wikify(foo,newTd);\n\n }\n\n};\n\n/* snip for later.....\n //var groupBy = params[3] ? params[3] : "t.title.substr(0,1)";\n //var groupBy = params[3] ? params[3] : "sortedListOfOtherTags(t,tiddler.title)";\n //var groupBy = params[3] ? params[3] : "t.modified";\n var groupBy = null; // for now. groupBy here is working but disabled for now.\n\n var prevGroup = "";\n var thisGroup = "";\n\n if (groupBy) {\n result.sort(function(a,b) {\n var t = a; var aSortVal = eval(groupBy); var aSortVal2 = eval("t".sortBy);\n var t = b; var bSortVal = eval(groupBy); var bSortVal2 = eval("t".sortBy);\n var t = b; var bSortVal2 = eval(groupBy);\n return (aSortVal == bSortVal ?\n (aSortVal2 == bSortVal2 ? 0 : (aSortVal2 < bSortVal2 ? -1 : +1)) // yuck\n : (aSortVal < bSortVal ? -1 : +1));\n });