text:
Dr. Colleen Fitzpatrick spoke about DNA, photography, and Databases
at October's monthly D-OGS meeting.
The following was provided by our Secretary, Tonya Krout.
After welcoming the members and guests in attendance, Richard Ellington introduced our speaker, Colleen Fitzpatrick, PhD. She is the author of two of the best-selling books in genealogy. In addition she has been featured on NPR's Talk of the Nation radio program, has written cover articles for Internet Genealogy, Family Tree Magazine and Family Chronicles. She is a regular contributor to Ancestry magazine. Fitzpatrick received her BA in physics (1976) from Rice University, and her MA (1983) and PhD in nuclear physics (1983) from Duke University, and has 25 years experience working in the field of high resolution optical measurement techniques. She is a Fellow of the Society of Photo Instrumentation Engineers (SPIE) optical society. She is the group administrator for the Fitzpatrick DNA study, which she founded in 2000.
Ms. Fitzpatrick went from being a rocket scientist to forensic genealogist and has worked on identifying remains as well as debunking the myths of Misha Defonseca and Herman Rosenblatt and was the only person to identify a descendent of Fred Noonan (who flew with Amelia Earhart) so that DNA could be compared to any remains that might be found from the doomed flight.
Colleen said that Forensic Genealogy can be compared to when "CSI Meets Roots". When you have a photo you have everything you need but you have to figure out what you are looking at. She showed us a photo from her personal collection and asked if we could tell who the person was who was very ill. Members offered many guesses but no one got it quite right. She said the mother was sitting slightly higher than the other members of the family on the first row because she was in a wheelchair and shows signs of having had a stroke.
She showed us another photo and asked if we could tell when it was made. Most people were looking at the woman's hat and clothing but she said that clothing was only one part of the equation. Close inspection would show that this was taken in a photo booth. We needed to find out the history of photo booths. Colleen said the first one was in New York in 1926 and in 1927 they went into broader distribution so the earliest this photo could have been taken was 1926.
She went on to show us a variety of photos and to explain what went into dating them. There was one that turned out to be a photo of the survivors of the Battle of Shiloh that would have been taken 1908-1912 per the various clues. Another was an outdoor daguerreotype that had long thought to be a photo which included Mozart's widow. Since this type of outdoor photography wasn't developed until 1842, it made it quite unlikely that was Madame Mozart.
Colleen also showed us a photo that had another face shown on the back which provided a great deal of information. She stressed that we should look at the back of the photos for information. She also said when scanning in photos to create the largest file possible as this was sometimes a way to get more detail and visual clues.
The second part of her presentation was "The Database Detective". She said so much more information was available now on the Internet and more was being made available every day.
We need to mine:
- Birth, marriage and death records
- Census records
- City Directories
- Newspaper obits
- Coroner's reports
- Orphan records
- Destitute records
- Medical records
- Ebay and other collectible websites
New Orleans was a major port of entry for Irish immigrants in the early 1850s. She had done a search for medical records, entered all the records and found that admission records varied greatly at the Charity Hospital. What was driving it? By comparing rainfall records in 1851 she learned that a few weeks afterwards there was an increase in admissions. This was the time of virulent Yellow Fever outbreaks. Also there was an upward tick in admissions shortly after passenger ships put ashore because of all the disease that bred in the close quarters of the immigrant ships.
Her third presentation was "The DNA Detective". She said that DNA picks up where your paper trail leaves off. She spoke about her own Fitzpatrick study and how Terry Fitzpatrick, #1 in the study in 2000, has never matched anyone. She said there were many online sites for DNA testing and she had used DNA Heritage. She mentioned www.ysearch.org, www.ybase.org and www.smgf.org.
Lastly, she displayed a photograph of Benjamin Kyle, a man who was found beaten who does not know who he is to see if we recognized him.
The program ran long but there were many questions. Finally Richard reminded us that Colleen had brought some of her books if anyone wanted to purchase any and get them autographed.
Photographs courtesy of Carol Boggs.


text:
Update your password regularly to keep your account safe.
Skip brand navigation
skip form
Where are you going?
City, airport, address, attraction, or hotel
Use HHonors Points
Use flexible dates
Promotion/Offer code:
Group code:
Corporate account:
Travel agent
AAA rate *
AARP rate *
Senior rate *
Government / Military rates *
* ID required at check-in
close tab panel
Skip secondary navigation
Receive a $25 property credit when you stay at participating hotels in Florida
The Sunshine State has so much to offer. Explore it all with this exclusive offer just for Florida residents. Book a stay of at least two nights at any participating hotel or resort in Florida, and you'll receive a $25 property credit that can be used for golfing, relaxing at the spa, dining, and more. Simply book and stay by December 31, 2015. Now, you can get away from it all without going very far at all.
Exclusively for residents of Florida. Must show valid proof of Florida residency at check-in. Offer valid for stays booked between September 01, 2014, and December 31, 2015, and completed by December 31, 2015, at participating properties. Offer is subject to availability and requires a two (2) night minimum stay. Participating properties are offering a one-time $25 credit per stay that can be applied towards most hotel services and amenities. If two (2) night minimum stay requirement is not met, $25 credit will be forfeited. Credit may not be applied towards room rate, taxes, gratuities and resort/service fees. Credit will be applied to guest folio at time of checkout and must be consumed during the stay in which it was earned. Credit has no cash value and is non-transferable; any remaining credit balance is subject to forfeiture at the end of the stay. Not valid with group bookings or combinable with other offers, promotions or discounts. Blackout dates, deposit and cancellation restrictions may apply and vary by hotel. Please contact the specific property for details. If you are making this reservation by phone, please call our Internet Customer Center at +1-800-HHONORS or view a complete list of Hilton HHonors Reservations phone numbers. When booking by phone, please request the "Florida Resident Rate Package" or reservation code "RPFLRR" for Conrad® Hotels & Resorts, Hilton Grand Vacations™, Hilton Hotels & Resorts, and Waldorf Astoria™ Hotels & Resorts or reservation code "FR1" for DoubleTree by Hilton™, Hampton, and Embassy Suites Hotels™.

subset: commoncrawl


text:
Thunder in the Vicinity
Wind: 3 mph
On Thursday, July 11, the Duxbury Planning Commission voted unanimously to send a letter in support of the Trust for Public Land's application for funds to purchase the Dowsville Headwaters parcel to the United States Department of Agriculture (USDA) Forest Legacy Program.
The 2,085-acre parcel of land is located in South Duxbury and adjacent to Camel's Hump State Park. It is valued at $1.8 million. The land was heavily logged in the 1990s but is currently undeveloped and used for recreation, including snowmobiling, skiing, snowshoeing, mountain biking and walking.
If the purchase goes through, ownership of the Dowsville Headwaters parcel will be transferred from the town to the state, as part of Camel's Hump State Park. An economic analysis shows that town tax receipts will not decrease as a result of state ownership.
The Trust for Public Land is a national nonprofit that conserves land for people to enjoy as parks, gardens, historic sites, rural lands and other natural places. As of 2013, the trust has protected more than 53,000 acres throughout Vermont, particularly in the Green Mountains and the Connecticut River watershed.


text:
As an experiment, I quit the internet in September. I started with Twitter (update: I've since rejoined this particular platform), I moved on to Facebook and ended by shuttering my blog. I didn't stop freelancing or responding to emails, but I dropped social media and my participation in it like a hot potato and I haven't looked back. I held a client meeting at Dunkin' Donuts. If I wanted to see adorable pictures of my nieces, I had to email my sister to request them. I had more room in my schedule for the gym. The less time I've spent working on my online brand, the more offline opportunities have come my way. Here are three reasons you too should disentangle yourself from the social web in 2013:
It harms your self-esteem
While evidence for Social Media Anxiety Disorder is largely anecdotal at present, a UK study from the fall found that over 50% of social media users evaluated their participation in social networking as having an overall negative effect on their lives. Specifically, they singled out the blow to their self-esteem that comes from comparing themselves to peers on Facebook and Twitter as the biggest downfall. It seems trite, but you can't feel anxious about the achievements of your old college roommate or your MIT fellow cousin if you don't know about them in the first place. And forget about social media stalking your ex; it's as unhealthy as you'd guess.
Your blood pressure will thank you
Social media a hotbed of bad behavior – flame wars, bragging, bashing and crimes against grammar, among other misdeeds. If you find yourself getting unduly irritated by, say, entitled Millennials tweeting their displeasure at being denied iPhones by Santa, or falling victim to Godwin's Law while arguing with cyber strangers, it might be time to take a timeout. And make sure that break is a legitimate one – none of this downloading an app to manage your social media obligations for you.
Online is no substitute for offline
Almost a quarter of Americans say that they've missed out on important life moments in their quest to capture and memorialize them for social media. Think about that the next time you're Instagraming your anniversary dinner at P.F. Chang's. With the ubiquity of communications technology in our daily lives, it's easy to convince ourselves that the digital world is where all the action is and that the effort we put into building our online empire directly correlates to IRL benefits such as scoring a new job or landing a new mate. In fact, over 90% of job hunters of all ages look for work online, but less than 5% are conducting offline job hunting activities such as attending networking events or setting up information interviews. And guess what? A full 70 – 80% of job vacancies are never posted, so all that job board scouring is likely for naught. If the only benefit you've derived from flexing your social media muscle was free anti-antiperspirant samples from the folks at Klout, it might be time to direct your energy elsewhere.
Related on Forbes:
Beware, Tech Abandoners. People Without Facebook Accounts Are 'Suspicious'
Social Media And The Job Hunt: Squeaky-Clean Profiles Need Not Apply


text:
- English (3) (remove)
- Evidence for an exotic S=-2, Q=-2 baryon resonance in proton-proton collisions at the CERN SPS (2004)
- Results of resonance searches in the Xi - pi -, Xi - pi +, Xi -bar+ pi -, and Xi -bar+ pi + invariant mass spectra in proton-proton collisions at sqrt[s]=17.2 GeV are presented. Evidence is shown for the existence of a narrow Xi - pi - baryon resonance with mass of 1.862±0.002 GeV/c2 and width below the detector resolution of about 0.018 GeV/c2. The significance is estimated to be above 4.2 sigma . This state is a candidate for the hypothetical exotic Xi --3/2 baryon with S=-2, I=3 / 2, and a quark content of (dsdsu-bar). At the same mass, a peak is observed in the Xi - pi + spectrum which is a candidate for the Xi 03/2 member of this isospin quartet with a quark content of (dsusd-bar). The corresponding antibaryon spectra also show enhancements at the same invariant mass.
- Energy and centrality dependence of deuteron and proton production in Pb+Pb collisions at relativistic energies (2004)
- The transverse mass mt distributions for deuterons and protons are measured in Pb+Pb reactions near midrapidity and in the range 0<mt–m<1.0 (1.5) GeV/c2 for minimum bias collisions at 158A GeV and for central collisions at 40 and 80 A GeV beam energies. The rapidity density dn/dy, inverse slope parameter T and mean transverse mass <mt> derived from mt distributions as well as the coalescence parameter B2 are studied as a function of the incident energy and the collision centrality. The deuteron mt spectra are significantly harder than those of protons, especially in central collisions. The coalescence factor B2 shows three systematic trends. First, it decreases strongly with increasing centrality reflecting an enlargement of the deuteron coalescence volume in central Pb+Pb collisions. Second, it increases with mt. Finally, B2 shows an increase with decreasing incident beam energy even within the SPS energy range. The results are discussed and compared to the predictions of models that include the collective expansion of the source created in Pb+Pb collisions.
- Measures of charge fluctuations in nuclear collisions (2002)
- The properties of two measures of charge fluctuations D-tilde and DeltaPhiq are discussed within several toy models of nuclear collisions. In particular their dependence on mean particle multiplicity, multiplicity fluctuations, and net electric charge are studied. It is shown that the measure DeltaPhiq is less sensitive to these trivial biasing effects than the originally proposed measure D-tilde. Furthermore the influence of resonance decay kinematics is analyzed and it is shown that it is likely to shadow a possible reduction of fluctuations due to QGP creation.


text:
Find hotels in Byers using the list and search tools below. Search for cheap and discounted hotel and motel rates in or close to Byers, CO for your upcoming personal or group travel. We provide the best Byers Colorado hotel rooms. Review the Byers hotel list below to find the perfect lodging. We also have a map of the Byers hotels.
Byers Hotels/Accommodations
Next 20 Byers Hotels > [1 - 20 of 50]
Next: See My Byers Hotels with Pricing >


text:
Peace X Peace
1776 I Street, NW, Washington, DC, 20006
Phone: (877) 684-3770 | Fax: (703) 391-2651
Website: http://www.peacexpeace.org
Principal Staff:
Kimberly Weichel, Chief Executive Officer
Mary L. Liepold, Editor-in-Chief
Yasmina Mrabet, Director, Connection Point initiative & Web Content Editor
Type of Organization: National Grassroots/Advocacy
Founded: 2002
Mission Statement:
PEACE X PEACE (pronounced "peace by peace") empowers women as the most effective means to enrich lives locally and promote peace globally. We connect women's groups ("Circles") in the United States with women's Circles everywhere in the world—directly via the Internet—for the exchange of information and personal experiences that typically result in mutually supportive actions.
Subject Expertise:
International women's issues
Annual Meetings/Conferences:


text:
NASA Roadshow visits Toledo to help local companiesWritten by Duane Ramsey | | firstname.lastname@example.com
The NASA Roadshow, an innovative approach to economic development and job creation, visited Toledo June 12 to help area companies solve their technical challenges.
The Roadshow made its local stop at the Tom and Elizabeth Brady Innovation Center the the University of Toledo's engineering campus to report how it has assisted several local companies. Toledo was one of two stops the Roadshow made in Ohio with the other visit to Youngstown.
NASA chose Toledo and Youngstown based on the specific technical challenges facing local companies that would benefit from the brainpower, research capabilities and resources at NASA's Glenn Research Center in Cleveland.
"Ohio really understands it and has taken a leadership role in this program. We intend to remain active in Ohio," said Diana Hoyt, program executive for innovation and strategic partnerships in the office of the chief technologist at NASA headquarters, who spoke at the event.
The Roadshow is part of a federally funded, three-year experimental program developed to comply with a White House directive that NASA and other federal agencies accelerate their technology transfer activities by making the benefits of its research and development investments available to private enterprises.
"NASA is here to help companies develop new technologies using the NASA brand," Hoyt said.
Several businesses from Northwest Ohio and Southeast Michigan were given an opportunity to spend eight hours with NASA experts in their field to address the challenges they face. Hoyt called upon some of those businesses in attendance to relate their experience to the Roadshow audience at UT.
A team from Cooper Tire & Rubber Company in Findlay said they met with two highly trained experts to discuss how NASA's expertise could help the company create simulations of solutions to meet their manufacturing challenges.
A representative from Metal Forming and Coining Corp. in Maumee looked to NASA's expertise to help the company improve efficiencies in the manufacturing process for automotive components.
NASA provided some mechanical expertise to H & H Specialties of Temperance, Michigan, for production of "green" foam products for the pharmaceutical industry.
Two other companies that received technical expertise from NASA included Henny Penny Corp. of Eaton, Ohio, and SkyLife Technology Holdings LLC of Toledo. SkyLife Technology developed a new disaster relief distribution system that could get aid to disaster victims quicker.
Four other area companies have been invited to the Glenn Research Center to receive help from NASA scientists, including a second division of Cooper Tire, Hirzel Canning Company in Northwood, SPB Global LLC in Perrysburg, and Nextronex Inc. which operates out of incubator space at UT.
"It's a fantastic opportunity to work with NASA about our technology. It's good for the Northwest Ohio region," said Susan Bernard, founder and director of business development for SPB Global.
SPB Global is a distribution company for the aerospace industry that is developing wearable technology and seeking a patent with aerospace applications, Bernard said.
NASA engineers will assist seven additional companies with on-site visits or teleconferencing to include Akadeum Life Sciences of Ann Arbor, Ann Arbor Aircraft of Adrian, AV3 Limited of Columbus, Mennel Milling Company of Fostoria, Plastic Technologies Inc. of Holland, Rowmark LLC of Findlay and SFC Graphics of Toledo.
"NASA can help move these businesses forward by providing its technical expertise," said Keith Burwell, CEO of the Toledo Community Foundation, which cultivated a relationship with NASA which led to these opportunities.
Jim Garrett, CEO of Vadxx Energy in Cleveland, spoke about how NASA contributed engineering expertise for a simulation of a kiln process to recycle plastic waste into energy products. Rockwell Automation was a strategic partner with Vadxx on the design and engineering of the kiln process.
Garrett said that telling venture capital sources that they were working with NASA produced both unexpected and unintended results that led to increased investments in their company.
In addition to the Toledo Community Foundation, other organizers of the event included Lucas County Economic Development Corp, Manufacturing Advocacy and Growth Network, Northwest Ohio Manufacturing Expansion Partnership, Ohio Development Services Agency, Toledo Regional Chamber of Commerce, UT Innovation Enterprises, and UT LaunchPad Incubation Program.
"Bringing the Roadshow to Toledo is the result of strategic relationship building by UT and regional partners. We hope for outcomes like this event to bolster economic development and job creation in the region," said Jessica Sattler, director for economic engagement and business development programs. She also oversees the LaunchPad Incubation Program.
Burwell hosted the event and introduced the speakers. Congresswoman Marcy Kaptur addressed the event on video. Lucas County Commissioner Carol Contrada thanked NASA for its contributions to the county. Toledo Mayor D. Michael Collins was scheduled to speak at the event but was unable to attend due to city business, Burwell reported.
Tags: Adrian, Akadeum Life Sciences, Ann Arbor, Ann Arbor Aircraft, AV3 Limited, Carol Contrada, Cleveland, Columbus, Cooper Tire & Rubber Company, D. Michael Collins, Diana Hoyt, FIndlay, Fostoria, Glenn Research Center, H & H Specialties, Henny Penny Corp., Hirzel Canning Company, Holland, Innovation Enterprises, Jessica Sattler, Jim Garrett, Keith Burwell, LaunchPad Incubation Program, Lucas County Economic Development Corp, Manufacturing Advocacy and Growth Network, Marcy Kaptur, Maumee, Mennel Milling Company, Metal Forming and Coining Corp., NASA, NASA Roadshow, Nextronex, Nextronex Inc., Northwest Ohio Manufacturing Expansion Partnership, Northwood, Ohio Development Services Agency, Perrysburg, Plastic Technologies, Rowmark, SFC Graphics, SkyLife Technology, SkyLife Technology Holdings, SPB Global, Susan Bernard, Toledo Community Foundation, Toledo Regional Chamber of Commerce, University of Toledo, UT, Vadxx Energy


text:
Quick Links
Shop All Jewelry
KEY10004 In Stock Absolutely No Delay on Personalization!
This stainless steel mesh keychain makes a great gift for a friend or family member! Weighing 17 grams and measuring 2 inches by 3/4 inch. The mesh style is similar to our extremely popular silver mesh jewelry and the stainless steel is durable and very stylish.
Eve's Addiction.com wants you to be a happy customer. We want you to be completely satisfied with the sterling silver jewelry that you receive from us, as we only sell high quality silver and cubic zirconia cz jewelry. We do understand that you may not like your purchase for some reason.
You may return or exchange your jewelry within 60 days of purchase if you are not satisfied with it. The jewelry must be returned in its original condition for a refund or exchange. Engraved, personalized, photo, monogram, name and initial, chocolate and clearance items are not returnable or exchangeable.


text: I am looking for a m16 a1 kit. I can't seem to find any complete kits with matching numbers like the ak kits I bought. Do I have to buy everything seperately? Where is the best place to go? The price is of no importance as long as the kit is in good shape. Also can I get a 80% receiver ? Any info would be much appreciated. Thanks guys.


text:
Our contemporary holiday photo cards include exciting modern designs such as Blooming Snowflakes photo card, Snow Berries holiday card and Floral Snowflakes holiday greeting card.
Tiny Prints wide variety of holiday cards feature traditional symbols such as holly, wreaths, reindeer, ornaments and snowmen. But when you're looking for something more modern, you will also find holiday designs incorporating polka dots, floral patterns, plaid and garland. Whatever your family holiday tradition may be, we have a card to complement it. Plus, when you add a family photo, these cards are sure to be cherished by those who receive them. Plan ahead and we'll even mail your cards for you so you can concentrate on spending time where it matters, with the family.
If you love the modern look of Tiny Prints Contemporary Collection of holiday cards but you're worried you can't fit a year's worth of exciting news and warm wishes into such a sleek design, you're in luck! Many of your favorite card designs now feature easy-to-use back panel holiday card personalization options that let you add extra text and photos to your holiday cards.
"The cardinal and Gold holly print complemented the coloring of the photo. The font was pleasing to look at. I wish the more text would have fit."
"As always, the customer service and timeliness from Tiny Prints was excellent. I have been a repeat customer for nearly five years and this card has received the most compliments by far. Love this design, the graphic online does not do it justice!"
"These cards turned out even better than we could have imagined. They were beautiful, and we received so many complements on them. Delivery was fast, and tiny prints was great to work with. THANK YOU!!!! Beautiful!!!!!"
"From customizing, to ordering to receipt of product, this was a great experience. Customer service happily helped me with an order issue and the final product was such exceptional quality that I was proud to send them to my friends and family. Will place orders again in the future."
"Our image was formatted to fit before placing it into the template. Photo was taken on an iPhone and the printed lazer print cards were PERFECT! so unusual unlike any of our friends cards and lovely because of its one sided/postcard like style allowed me to write a little personal message on the back! If you purchase this you will not be disappointed!"


text:
3 OT loss... choke? I don't know about that. It was a hard fought battle.
Meh. I wouldn't count Boston out already. It was only one game.
Go hawks!!!! This has been a great series so far Boston is a really good team but I just don't seemboston winning it.
Fav Fighters: Penn, Wand, Fedor, Genki, Shields, Rashad, Pulver, Diaz bros, Melendez.
If the Bruins go down tonight, I just hope they go down swinging. This has been an awesome series and I hope it last just a few more days.
Seguin and Marchand need to step up and step up now. It is tonight or it is never. Without Bergy these two need to get on the score sheet and take pressure off the Kerjci-Lucic-Horton line. And Rask better be prepared to stand on his head.
Dude, Im a wrestler. Im the best wrestler in MMA. Wrestling IS, was and always has been the most dominate form of mix martial art on the planet. Thats all there is to it. We all know it, some people want to fight it, some people want doubt it but wresters rule the MMA world. -
Ben Askren
Fav Fighters: Penn, Wand, Fedor, Genki, Shields, Rashad, Pulver, Diaz bros, Melendez.
There are currently 1 users browsing this thread. (0 members and 1 guests)


text:
We want everyone to Orange Up! Get out your Broncos decorations and put on your orange Broncos gear. Let them know that we ARE Broncos Country!
We think Mayor Michael Hancock, an avid Broncos fan, should lead the effort by turning the Denver City and County Building orange.
This is your time to be heard, Broncos fans.


text:
Methods and systems for network-based or Internet-based software delivery are described. In one embodiment, an application program or software platform resides on a client and is configured so that it is extensible based on software extensions that are deliverable over a network such as the Internet. Various extensions can be developed by third party developers for incorporation into the program or platform.
1. An updating method for updating software extensions comprising:
obtaining a package manifest containing a list of multiple files that comprise a newer version of a software extension that is to be incorporated into an application program executing on a computing device that contains an older software extension version, the list containing a hash for one or more of the files comprising the newer version of the software extension;
comparing one or more hashes that are received with one or more hashes of files from the older version of the software extension;
for any hashes of corresponding files from the different versions that are different, downloading a new file from a web server, wherein said downloading includes:
downloading new files of the software extension according to a download queue to arrange downloading of the new files according to one or more file groups formed to control an order in which files are downloaded, each group corresponding to a different end user feature of the software extension that is configured to extend multiple end user features of the application program; and
installing files associated with a first end user feature before completion of downloading files associated with a different end user feature to enable a user to interact with the first end user feature sooner than if the user had to wait for the entire software extension to be downloaded, the downloading and installing of files occurring in the order as determined based at least in part upon scenarios configured to examine file usage statistics and prioritize the files according to usage; and
for any hashes of corresponding files from the different versions that are the same, copying a file from an old local directory on the computing device to a new local directory on the computing device associated with the newer version of the extension.
2. The updating method of
3. One or more computer-readable media comprising computer-readable instructions thereon which, when executed by a computer, cause the computer to implement the method of
4. One or more computing devices programmed with instructions which, when executed by the one or more computing devices, cause the one or more computing devices to implement the method of
5. A computing system comprising:
one or more computer readable means;
computer-readable instructions embodied on the one or more computer-readable means; and
means for executing said computer readable instructions which, when executed, implement a method comprising:
obtaining a package manifest containing a list of multiple files that comprise a newer version of a software extension that is to be incorporated into an application program executing on a computing device that contains an older software extension version, the software extension configured to extend multiple end user features of the application program, the list containing a hash for one or more of the files comprising the newer version of the software extension;
comparing one or more hashes that are received with one or more hashes of files from the older version of the software extension;
for any hashes of corresponding files from the different versions that are different, downloading a new file from a web server, wherein said downloading includes:
downloading new files of the software extension according to a download queue defined by scenario runs, the scenario runs configured to examine file usage statistics to establish priorities utilized in determining an order in which the files are downloaded and arrange downloading of the new files according to one or more file groups, each group corresponding to a different end user feature of the software extension and assigned one of said priorities based on the files contained by the group; and
installing files associated with a first end user feature before completion of downloading files associated with a different end user feature to enable a user to interact with the first end user feature sooner than if the user had to wait for the entire software extension to be downloaded, the downloading and installing of files occurring in the order as determined based at least in part upon the scenario runs; and
for any hashes of corresponding files from the different versions that are the same, copying a file from an old local directory on the computing device to a new local directory on the computing device associated with the newer version of the extension.
6. The computing system of
7. The updating method of
8. The updating method of
9. The updating method of
10. The updating method of
11. The updating method of
12. The updating method of
13. The updating method of
14. The updating method of
15. The updating method of
16. The updating method of
17. The updating method of
18. The updating method of
19. The updating method of
20. The updating method of
21. The updating method of
22. The updating method of
23. The updating method of
24. The updating method of
25. The updating method of
26. The updating method of
27. The updating method of
28. The updating method of
29. The updating method of
30. The updating method of
31. The updating method of
32. The updating method of
33. The updating method of
34. One or more computer-readable storage media storing instructions that, when executed by a computer, cause the computer to perform a method comprising:
obtaining a package manifest containing a list of multiple files that comprise a newer version of a software extension that is to be incorporated into an application program executing on a computing device that contains an older software extension version, the list containing a hash for one or more of the files comprising the newer version of the software extension;
comparing one or more hashes that are received with one or more hashes of files from the older version of the software extension;
for any hashes of corresponding files from the different versions that are different, downloading a new file from a web server, wherein said downloading includes:
downloading new files of the software extension according to a download queue to arrange downloading of the new files according to one or more file groups formed to control an order in which files are downloaded, each group corresponding to a different end user features of the software extension that is configured to extend multiple end user features of the application program; and
loading files associated with a first end user feature before completion of downloading files associated with a different end user feature to enable a user to interact with the first end user feature sooner than if the user had to wait for the entire software extension to be downloaded, the downloading and loading of files occurring in the order as determined based at least in part upon scenarios configured to examine file usage statistics and prioritize the files according to usage; and
for any hashes of corresponding files from the different versions that are the same, copying a file from an old local directory on the computing device to a new local directory on the computing device associated with the newer version of the extension.
35. The computer-readable storage media of
36. The computer-readable storage media of
37. The computer-readable storage media of
38. The computer-readable storage media of
39. The computer-readable storage media of
40. The computer-readable storage media of
41. The computer-readable storage media of
42. The computer-readable storage media of
43. The computer-readable storage media of
44. The computer-readable storage media of
45. The computer-readable storage media of
46. The computer-readable storage media of
47. The computer-readable storage media of
48. The computer-readable storage media of
49. The computer-readable storage media of
50. The computer-readable storage media of
51. The computer-readable storage media of
52. The computer-readable storage media of
defining the download queue to control when files are to be downloaded to the computing device, the files pertaining to the software extension that is to be incorporated into the application program executing on the computing device;
ascertaining whether a user action at the computing device requires one or more files that are not currently being downloaded; and
manipulating the download queue responsive to a user action that requires one or more files that are not currently being downloaded so that the one or more required files are downloaded sooner than they would otherwise be.
53. The computer-readable storage media of
54. The computer-readable storage media of
55. The computer-readable storage media of
56. The computer-readable storage media of
57. The computer-readable storage media of
58. The computer-readable storage media of
59. The computer-readable storage media of
This application is a continuation of and claims priority to U.S. patent application Ser. No. 09/599,299, the disclosure of which is incorporated by reference herein.
The following patent applications are related to the present application, are assigned to the assignee of this patent application, and are expressly incorporated by reference herein:
This invention relates to methods and systems for providing software via a network. More specifically, the invention pertains to Internet-based delivery of software.
Installation of traditional PC applications requires physical media, such as a disk or CD-ROM that must be physically inserted into a computer in order for software to be loaded onto a user's computer. Typically, this process requires the user to enter settings information that can be confusing to the user. Once the software is installed, it is typically fixed in terms of its location and functionality. When the software is updated, the user must typically purchase additional physical media and repeat the installation process so that they can use the updated software. In this model, the software is fixed in its association with the computer on which it was installed. If a user moves to another computer, they will not be able to use the specific software on their machine.
As computing continues to evolve in the environment of the Internet, it has become clear that the traditional software delivery model described above is inadequate to meet the demands of consumers who desire dynamic, flexible, and adaptable software. Software delivery over the Web is becoming the subject of increasing focus by those who develop and deliver software. Unlocking the potential for Web-based software delivery will require smart, innovative and streamlined solutions, especially in situations where bandwidth may be limited.
Accordingly, this invention arose out of concerns associated with providing new software delivery models that are particularly well-suited for network-based software delivery, e.g. delivery via the Internet.
Methods and systems for network-based software delivery are described. In one embodiment, an application program or software platform resides on a client. The program or platform is configured so that it is extensible based on software extensions that are deliverable over a network such as the Internet. Various extensions can be developed by third party developers for incorporation into the program or platform.
In one described embodiment, extension files that comprise a software extension are hosted on a network server such as an Internet server. These include descriptor files that describe aspects of the software extension. These descriptor files logically describe an extension to the program or platform and designate the location of other extension files. Extensions are incorporated on a client by navigating to a particular network or Internet site through which the extensions can be accessed. The files describing the extension files are downloaded on the client. These files tell the client where, when and how the particular extension can be plugged into the program or platform, as well as where to find the appropriate extension files and how to download them. The extension files are then downloaded and incorporated into the platform.
In one embodiment, an inventive software architecture is provided for handling and consolidating particular types of descriptive files associated with various extensions. A filtering mechanism called attachment points, is used to create handlers for the different descriptive types of files that define a software extension. Each of these handlers is known as an attachment manager. Attachment managers are provided for each extensible feature type. The attachment managers interpret data from extensions files which are supplied by attachment points. In addition to predefined attachment managers, custom attachment managers can be created using data from attachment points. When an extension extends a particular feature type, the attachment points ensure that only the appropriate attachment manager is notified so that the feature type can be incorporated into the program or platform efficiently.
The methods and systems described just below provide a mechanism by which software can be delivered over a network, such as the Internet. In one specific example, various functionalities can be added dynamically to an application program. The functionalities or "extensions" as they will be referred to, can be advantageously added via a network such as the Internet. Extensions, which can be associated with various levels of granularity, can be added using only a Web URL as a basis for extension installation. That is, all of the files that comprise an extension can be maintained on the Web and accessed via one or more Web sites.
Extensions can be described utilizing a hierarchical tag-based language which facilitates handling and use of the various extensions. In one particular implementation, a software platform is provided that can incorporate various functionalities. The software platform and the inventive architecture described below enable third and fourth party developers to develop extensions for the platform that can be easily and seamlessly incorporated into the platform, while relieving the developers of any requirements associated with knowledge about how the extensions will be incorporated into the platform. Thus, the incorporation of third party extensions is essentially a transparent process, as far as developers are concerned.
Consider for example,
Extensions can be delivered from any number of different extension sources. The inventive methods and systems provide a streamlined and organized way to handle the provided extensions. The use of XML advantageously enables efficient handling of extensions from multiple different extension sources, without unduly taxing the software components that utilize specific portions of an extension or extensions.
In one particular implementation, the software platform on the user's machine provides various different integrated functionalities that enable a user to accomplish different document-centric tasks. An exemplary system is described in the U.S. patent application entitled "Single Window Navigation Methods and Systems", incorporated by reference above.
Exemplary Computer Environment
Computer 130 further includes a hard disk drive 144 for reading from and writing to a hard disk (not shown), a magnetic disk drive 146 for reading from and writing to a removable magnetic disk 148, and an optical disk drive 150 for reading from or writing to a removable optical disk 152 such as a CD ROM or other optical media. The hard disk drive 144, magnetic disk drive 146, and optical disk drive 150 are connected to the bus 136 by an SCSI interface 154 or some other appropriate interface. The drives and their associated computer-readable media provide nonvolatile storage of computer-readable instructions, data structures, program modules and other data for computer 130. Although the exemplary environment described herein employs a hard disk, a removable magnetic disk 148 and a removable optical disk 152, it should be appreciated by those skilled in the art that other types of computer-readable media which can store data that is accessible by a computer, such as magnetic cassettes, flash memory cards, digital video disks, random access memories (RAMs), read only memories (ROMs), and the like, may also be used in the exemplary operating environment.
A number of program modules may be stored on the hard disk 144, magnetic disk 148, optical disk 152, ROM 138, or RAM 140, including an operating system 158, one or more application programs 160, other program modules 162, and program data 164. A user may enter commands and information into computer 130 through input devices such as a keyboard 166 and a pointing device 168. Other input devices (not shown) may include a microphone, joystick, game pad, satellite dish, scanner, or the like. These and other input devices are connected to the processing unit 132 through an interface 170 that is coupled to the bus 136. A monitor 172 or other type of display device is also connected to the bus 136 via an interface, such as a video adapter 174. In addition to the monitor, personal computers typically include other peripheral output devices (not shown) such as speakers and printers.
Computer 130 commonly operates in a networked environment using logical connections to one or more remote computers, such as a remote computer 176. The remote computer 176 may be another personal computer, a server, a router, a network PC, a peer device or other common network node, and typically includes many or all of the elements described above relative to computer 130, although only a memory storage device 178 has been illustrated in
When used in a LAN networking environment, computer 130 is connected to the local network 180 through a network interface or adapter 184. When used in a WAN networking environment, computer 130 typically includes a modem 186 or other means for establishing communications over the wide area network 182, such as the Internet. The modem 186, which may be internal or external, is connected to the bus 136 via a serial port interface 156. In a networked environment, program modules depicted relative to the personal computer 130, or portions thereof, may be stored in the remote memory storage device. It will be appreciated that the network connections shown are exemplary and other means of establishing a communications link between the computers may be used.
Generally, the data processors of computer 130 are programmed by means of instructions stored at different times in the various computer-readable storage media of the computer. Programs and operating systems are typically distributed, for example, on floppy disks or CD-ROMs. From there, they are installed or loaded into the secondary memory of a computer. At execution, they are loaded at least partially into the computer's primary electronic memory. The invention described herein includes these and other various types of computer-readable storage media when such media contain instructions or programs for implementing the steps described below in conjunction with a microprocessor or other data processor. The invention also includes the computer itself when programmed according to the methods and techniques described below.
For purposes of illustration, programs and other executable program components such as the operating system are illustrated herein as discrete blocks, although it is recognized that such programs and components reside at various times in different storage components of the computer, and are executed by the data processor(s) of the computer.
An "extension", as used in this document, will be considered to include, without limitation, software functionality and content that can be added to an application program or software platform. These additions typically provide some type of functionality that the application program may not have had before the extension was incorporated, or alter the behavior of at least one existing feature. The extension is incorporated or integrated directly into the application program in a way that changes, to some degree, the manner in which the application program behaves or operates. Extensions provide dynamically added content and can provide applications (such as an email application), plug-ins to extend existing applications (like a fax plug-in to an email application), or simply web pages, to name just a few.
In the described embodiment, extensions are described using XML, an industry-standard, text-based markup language. XML greatly facilitates the extensibility of software content. Specifically, various extensions can be authored by third parties and described in XML in a manner that enables the extensions to be readily integrated into application programs. It should be appreciated, however, the XML constitutes but one exemplary way of describing and using the extensions. Other ways can, of course, be used.
Exemplary Extension Organization
In the described embodiment, extensions are organized in three separate but related portions: an Extension Definition File (EDF), a Package Manifest (PKG), and the code, components, or "bits" that make up or define the extension. An EDF can be, but need not be associated with a URL (Universal Resource Locator) that provides a way for a client to access the EDF. By convention and choice, the PKG file is located at the same URL as the EDF. It will be appreciated that the described EDFs and PKG are each not required for the other to be used. It just so happens that, in the example that is given is this document, the two are employed together. To that end, each of these features can be separately and independently employed.
EDFs describe logical attachments to an application program or software platform, while PKGs specify the physical files and resources that are used in an extension. There can be a one to one correspondence between EDFs and PKGs.
Extension Definition File (EDF)
In the described example, an EDF is an XML file that logically describes an extension. For example, the EDF can describe HTML that makes up a user interface (UI), the objects that contain code for implementing various functions, and the like. The EDF can also contain all or part of the functionality that comprises an extension. For instance, the HTML that describes a toolbar could be incorporated directly into an EDF file, and a toolbar attachment manager could read it from the EDF file, instead of from a URL. The information contained in the EDF is processed and (together with the information contained in the PKG), the appropriate files are automatically installed on a user's computer. This is done unobtrusively without manipulating the computer's persisted settings, as might be found in the user's system registry.
An EDF, implemented in XML, contains various tags that are associated with various extensions. The various tags can correspond to:
EDFs advantageously have an "open schema" which means that third party developers can extend the extension mechanism and include their own extensions by creating their own tags. Additionally, extensions can themselves be extended by other developers. EDFs can also have one or more predefined tags. Exemplary predefined XML tags for user interface elements can include tags for feature types such as: tool bars, accelerators, menu items, and themes. These feature types are utilized in the single navigable window application incorporated by reference above and defined in the table immediately below:
Exemplary predefined XML tags for behaviors/components/objects include tags for Services. These feature types are utilized in the single navigable window application incorporated by reference above and defined in the table immediately below:
Exemplary predefined XML tags for store elements include tags for content classes and offline data sources. These feature types are utilized in the single navigable window application incorporated by reference above and defined in the table immediately below:
EDF Schema
In the described embodiment, the EDFs have a particular XML schema that is utilized. The schema comprises collections of XML tags that are arranged in a hierarchical organization to facilitate information dissemination to software components that need certain extensions. In the described embodiment, the outer (encompassing tag) for EDFs is an "extension" tag.
Within the "extension" outer tag are one or more child tags, also referred to as "top level tags". These top level tags are each associated with a feature type that can be added by a particular extension. Exemplary feature types are discussed in connection with Tables 1-3 above. Underneath each top level tag there can be one or more child tags that are individually associated with a particular feature of the feature type that is to be added by a particular extension.
Package Manifest (PKG File)
The package manifests (PKGs) assist in organizing the downloading of software in the form of multiple files over a network such as the Internet. The PKGs are advantageously employed, in the example given in this document, with EDFs. As pointed out above, however, the techniques discussed in connection with the PKGs can be deployed independently of EDFs and in any suitable scenario where it is desirable to deliver software over a network such as the Internet. While the EDFs describe the logical attachment of extensions into an application program or platform, the package manifest's role is to assist in one or more of: organized delivery, validation and/or, updating of files associated with the various extensions that can be provided.
In designing a delivery mechanism for Web-assisted delivery of software content or files, several considerations are of interest.
Whenever possible, it is desirable to reduce the size of required downloads during update and installation operations. To address this consideration, software content is broken into multiple packages. Each package contains a group of one or more files that implement a common or well-defined functionality. By breaking the content into individual packages, the size of the required download during installation and update can be minimized. Each package is then described by a package manifest (PKG) that includes file information such as file locations and hash values that can be used for validation or security and versioning.
It is also desirable to give the end user a Web-like experience. To do this, extensions are loaded in a manner that feels to a user more like they are loading a web page, rather than traditional software packages where the user has to wait until the entire package is loaded before they can interact with it. In the described embodiment, users are given a web-like experience by streaming the extension files down to the client so that a user can begin to interact with an application program much sooner than if they had to wait for the entire software application program to load. For example, if there are user interface (UI) image files streaming down, the user can see the UI as the files stream in. Consider, for example, the single application program having the multiple different functionalities that is described in the patent application incorporated by reference above. A user might browse to an email functionality and download the files that are necessary to interact with the email functionality. Files that are associated with another different functionality would then be downloaded after the files associated with the email functionality. In this way, the user can begin to operate within a particular functionality without having to wait for all of the files associated with all of the other functionalities.
Another consideration of interest pertains to the efficiency with which the extension files or "bits" are delivered to the client. To address this consideration, the described embodiment utilizes a couple of different download approaches: a throttled download and a background download. Throttled downloading conducts download operations while taking into account the available bandwidth and type of media over which the files are being transferred. Any suitable throttled download process can be employed and will be understood by those of skill in the art. Background download is conducted while the user is working within the application program and is implemented by allocating a background thread so that the user can continue their work. One optimization that is utilized is that packages are prioritized and delivered in accordance with what a user might be working on.
Another consideration is associated with optimizing the user's computing experience. Here, the user's experience is optimized by making available the most common scenarios for the user. This is effectively directed to giving the user the functionality that they want first, and then, through the background download process, providing the code that implements functionalities that the user might use in the future. To determine which functionalities a user desires to have first, an automated scenario-based packaging process is provided that runs against file usage logs from scripted scenarios.
All of these considerations and the inventive solutions directed to addressing the considerations are discussed in detail in the sections that follow below.
Package Manifest Definition
In the described embodiment, a package manifest (PKG file) comprises a list of files that are utilized in a package. The list is advantageously compressed somewhat and digitally signed. Each package manifest can contain a list of one or more files each of which can include an associated hash, as well as download directives that control caching of the files. Once an extension is authored, a software tool can be used to generate the package manifest.
In addition, the package manifest can specify several other pieces of information:
File Group
All files in an extension can be labeled according to a number of predefined file groups. The file group of a particular file determines when the particular file gets downloaded, where it is stored on the client, and how it gets packaged. In the described embodiment, four predefined file groups are provided and are listed and described in the table immediately below:
File Download Priority
Files in each group are listed according to the order in which they should be downloaded. This download order is implicit in the ordering of the files in the package manifest, an example of which is shown in
Hash Value for Security/Versioning
Individual files in the package manifest can have an associated hash value. Each hash value is generated by running the file through an encryption algorithm. An exemplary encryption algorithm is Microsoft's CryptoAPI. In the illustrated example, each file can be listed with a base 64-encoded hash value, so that the file can be validated once the content arrives at the client. Specifically the package manifest is sent to the client in a secure manner (i.e. it is digitally signed). The package manifest contains the hash values for individual files. When the individual files are received by the client, each of the files can be run through the same Crypto API that was used to provide the hash values in the package manifest. If the hash values for a particular file compare favorably, then the file has not been altered and is secure.
When a file is updated, hash values can serve a useful purpose in identifying files that have not been changed between different versions of an extension. Consider
Using hash values for versioning has two important advantages over traditional versioning schemes. First, the update process is automatic. That is, with an explicit version number, it is possible to forget to update the version number when shipping a new release of a file. Using hash values avoids this problem. Second, versioning does not rely on file types. Specifically, traditional versioning schemes commonly embed version information within files; however, not all files (e.g. GIF files) support embedded version information. In the present example, using hash values for versioning does not depend on whether a particular file type supports or does not support embedded version information. In addition, the version information can be stored separately from the file itself. Thus, access to actual file to determine whether it is current is not needed.
Total Storage Size of Package
The total storage size of a package is useful at download time to verify that the user has sufficient disk space.
ClassID's for the DLLs
Listing ClassIDs for each DLL is necessary to enable script writers to create classes by scripting against the OM. Additionally, this enables a determination of which package contains the code for a particular class.
DLL Load Dependencies
The reason for the dependencies section is to allow for legacy code that relies on being loaded by virtue of being in the search path of some other dll. In this case we have to make sure that the dependency dll is in the package cache directory before the dependant dll is loaded.
Package Delivery
To optimize package delivery, two different delivery schemes are utilized. First, a throttled download approach is utilized using known throttling download techniques. Here, considerations such as available bandwidth and media over which the extensions are being provided are considered.
Second, a background download approach is utilized. Background downloads enable a user to continue to work within an application program while content is downloaded. Foreground downloads are used when the user has explicitly requested a file/extension by clicking, for example, on an extension link, or requested an action, for example, by clicking on the "Compose" mail button, that requires download of files which are not available locally.
Along with background downloads, a queue management feature is provided. Specifically, when an extension must be installed or updated, a package manager, which is essentially a software component that manages packages, is provided with the following information:
From this information, the package manager creates a package object and adds the package object to a download queue. The download queue is designed for easy rearrangement of a package download order. Consider, for example,
Step 900 receives one or more requests for an extension. The requests can be generated in any suitable way. Step 902 creates a package object that corresponds to each extension package that is to be downloaded. Step 904 arranges the package objects in a download queue. Step 906 then downloads files corresponding to the package objects in the download queue. This step can be implemented by, for example, starting at the head of the download queue and downloading files until all of the files for a package object have been downloaded, and then moving to the next package object. Step 908 ascertains whether a user action requires a file that is not described in the current package object. If the user's action does not require a file not described by the current package object, then the method branches back to step 906 and continues to download files associated with the current package object. If, on the other hand, the user's action requires a files that is not described in the current package object, then step 910 moves the package object associated with the required file to the head of the download queue and begins to download files associated with this newly-repositioned package object. This step can be implemented by ascertaining which package object is associated with the required file by ascertaining the URN associated with the file. This URN specifies the file's package so that its package object can be quickly located and moved to the front of the download queue.
Package Creation
One of the innovative features of the described embodiment is its extensibility. That is, a software platform is provided in the form of an application program that can be extended by various third-party user-defined extensions. These extensions are delivered via the Web and are integrated directly into the software platform. In order to provide an organized delivery process, packages should be created in a uniform manner so that they can be predictably handled and integrated into the software platform.
In accordance with the described embodiment, each package should correspond to an end-user feature. For example, in the patent application incorporated by reference above, separate packages are provided for each of the email, contacts, document authoring, and planner functionalities. If packages that do not depend on one another share a dependency, then this shared dependency should become its own package. For example, there is no reason why the email and document authoring functionalities should depend on one another, yet both of them require the ability to publish content. By separating the publishing functionality into its own package, a certain amount of download order flexibility is preserved. Depending on what the user starts to work on, the files corresponding to the email functionality or the document authoring can be downloaded first.
Step 1000 identifies end user features that are to be provided as extensions. Step 1002 identifies any shared dependencies among the end user features. Step 1004 creates individual packages for the end user features. Step 1006 creates individual packages for any shared dependencies among the end user features.
Automated Package Manifest Creation Tool
Advantageously, and in accordance with one implementation, an automated package manifest tool is provided and takes various input parameters and automatically creates a package manifest. The tool can be available to third parties to assist them in creating a package manifest.
The extension directory input parameter specifies the directory containing all of the files that will be described by the package manifest. If this is the only parameter, then tool 1100 will generate a manifest in which the EDF and DLLs in the directory are listed in the "Required" set, and all other content is "Offline".
The file group information and load dependencies parameter is optional. If an extension author has an idea of the categories in which his or her files should be placed, the categories should be specified here. For example, the author of the template manifest shown below knows that he wants his error handling GIF to be included in the package's required set. His choices here will always be respected in the final manifest. Additionally, if the extension author knows of any DLL load dependencies, these should be specified here as well.
The file usage statistics from scenario runs parameter is an optional parameter. This parameter enables the file download priority to be determined based on scenario runs. A scenario is a script of tasks that the average user typically follows when using a product during a particular portion of product use. For example, one scenario might pertain to the tasks involved in sending an email message (i.e. click "new mail" button, type in "TO" well, type is "Subject" well, etc.). In the described embodiment, file usage statistics from scenario runs are collected from running IIS logs on various scenarios. The different scenarios are directed to ensuring, with some degree of probabilistic support, that the file download order reflects, in some way, the files that will likely be used by the user first.
It will be appreciated that the file usage statistics can be provided dynamically by building a knowledge base that describes the actual tasks that people typically accomplish. The information that is maintained in the knowledge base can then be used to generate and adapt download scenarios that actually conform to patterns that are established across a user base.
If extension writers want to pass the package manifest creation tool 1100 this information, they need to specify the log directory, as well as the start and end dates of the section of the log that the tool should analyze. For third parties, the download priority order within a group will be the order in which the group's files were requested in the logs across all scenarios.
In one implementation, the approach is somewhat more sophisticated. Additional information (in addition to the scripted steps) is stored in the IIS logs and includes scenario priority and checkpoints. The scenario priority is a priority that is assigned for each scenario. So, for example, if one scenario is ten times more important than another scenario, this information can be maintained. The priority (e.g. a rating from between 1 to 100, with 100 being the highest priority), should be equal to a best guess as to the percentage of the time that users will step through the scenario, assuming they use the extension at all. Checkpoints provide a way to separate one scenario from another. For example, checkpoints designated as "Offline" and "Shutdown" can be automatically added at the beginning and end of the scenarios, respectively, so there can be a differentiation between scenario runs in the log. Additionally, script authors can optionally use checkpoints mid-scenario to indicate a change in group priority, e.g. part of a scenario script could be labeled as an "On demand" feature and another part could be labeled as "Offline".
Step 1200 provides a package manifest creation tool. This tool can be a software tool that resides on an extension author's machine. Step 1202 receives information pertaining to an extension directory as a first input parameter. Step determines whether there is any file group information or load dependency information provided by the extension author. If there is, step 1206 receives the information as an input parameter. Step 1208 determines whether there is any file usage statistic information. Such information can be provided, in one embodiment, through the use of scenario runs as described above. If such information is provided, then step 1210 receives the information as an input parameter. Step 1212 then uses all of the information provided as input parameters to generate a manifest automatically.
Exemplary File Ordering Heuristics Based on File Usage Statistics
Step 1300 sorts files by file group. Recall that in the illustrated example above, files can be grouped in one of four possible groups: Required, Offline, On Demand and Online Only. A file's group is determined first by the manifest, and, if it does not provide any group information, then by the highest priority group that it uses, according to checkpoint information in the log. Files in the "Required" set should not be considered because their order is already known. If no group information is included about a file, then an assumption is made that the EDF and all DLLs are "Required" files and all other files in the directory are "Offline".
Consider, for example, the following initial file usage information for three different scenarios:
Scenario 1 file usage: 1) FileA.gif, 2) FileB.xml, 3) FileE.dll
Scenario 2 file usage: 1) FileC.xml, 2) FileA.gif
Scenario 3 file usage: 1) File D.js, 2) FileA.gif
Scenario 1=priority 80
Scenario 2=priority 80
Scenario 3=priority 40
In this example, there are three scenarios that have files associated with them. Each of the scenarios has a priority with which it is associated. The files are first sorted by group (step 1300). Recall that in this ordering heuristic, DLLs are "Required" and all other files are considered "Offline". This provides the following sorted files:
Required Files
Offline Files
Step 1302 sorts files based on scenario priorities (from highest to lowest). Higher priority files are ordered so that they are downloaded first. This step provides the following sorted files:
Required Files
Offline Files
Step 1304 then sorts the files by file usage order within a scenario run. For each priority grouping with more than one file, the files are sorted according to the average order in which they were downloaded within scenarios of their labeled priority. Scenarios with a smaller average usage order will be downloaded earlier. Ties are broken based on the order in which the scenarios appear in the input file. As an example, consider the following:
Here, file A got used first by scenario 1 and second by scenario 2 for an average of 1.5, and so one. File C has the smallest order number so, of the Offline files, it is sent first. The final file order is shown below:
Required Files
Offline Files
Code, Components and "Bits"
The following files and resources can be, but need not be included with an extension. This list is not exclusive, as other resources can certainly be incorporated into an extension.
Users install extensions by navigating to a network site for the extension. In an Internet implementation, the user navigates to an appropriate URL for the extension. Hosting administrators can also "push" extensions so that users can automatically receive them by adding an entry into the appropriate users' "Preference" settings.
Platform Set Up and Extension Installation
The flow diagram, in this example, is illustrated in connection with three separate "zones", one of which represents a client, one of which represents a "platform" Internet server, and one of which represents a third party Internet server. The acts that are described in connection with the different zones are performed, in this example, by the entities assigned to the zone. In some configurations, one or more of these zones may overlap. For instance, the platform server may be the same device as the extension server.
Step 1400 navigates a user to a particular Internet site that is associated with the software platform that is to be utilized as the foundation for extension installation described below. In step 1402, the user clicks an "install" button that sends a message to the software platform server that indicates that a user wishes to install the software platform. This step can be an optional step. Steps 1404 and 1405 then download the software associated with the software platform to the client. In the illustrated example, step 1404 downloads the package file for the single navigable window application and based on that file's contents step 1405 downloads other components and files to the user's computer. Step 1406 installs the software code on the client machine and can create local directories for the application cache, a local store and preferences. It will be appreciated, however, that local directories or preferences are not necessarily needed. Step 1408 launches the software platform.
The steps described immediately above constitute steps associated with an initial set up in which the software code for the single navigable window application is delivered to and installed on a client machine. The steps described immediately below are associated with extension installation.
Step 1410 uses a link that is associated with an extension to access the extension. This step can be implemented by a user navigating their browser to a particular Internet site through which one or more extensions can be accessed. Alternately, a reference to the link can be placed in the user's preferences or the preferences of a computing group with which the user is associated (e.g. the system administrator can place a reference in a group's preferences). The link can advantageously be associated with a third party Internet server or Internet site. Step 1412 downloads extension files according to the PKG associated with an EDF. The files are delivered to the client and step 1414 places the extension files in a local store as specified by the PKG specification. At this point, an extension is installed and the user can utilize the functionality provided by the extension. Step 1416 determines whether extension updates are available. This can be done by periodically polling an extension catalog (discussed in an "Extension Catalog" section below) to ascertain whether there are any updates to various extensions. Alternately, notifications might be automatically sent to the client so that the client is aware of updates or any other method might be used to determine if updates are available. If there are updates available, step 1418 branches to step 1412 which downloads the extension files associated with the update and installs them on the client.
Developing Extensions
Developing extensions for the software platform is a fairly straight-forward process. A developer develops the extension content using a tool such as Notepad or other tools such as Visual Studio. The extension is then described in an EDF and PKG and the PKG is digitally-signed and then optionally compressed. The extension can then be hosted on a particular network server.
Specifically, step 1510 delivers the EDF and PKG files to a client. This step can be implemented by a user navigating to a particular Internet site where the appropriate files are hosted and then downloading the files. Step 1512 delivers the extension files that are associated with the EDF and PKG files to the client, whereupon they can be installed and used.
Extension Catalog
One optimization, discussed briefly in connection with
In the described embodiment, a catalog is an XML file that contains mappings from extension URNs to one or more package URNs based upon language, version or other attributes. Catalogs can, however, be defined using any suitable format. Catalogs can provide:
Like EDFs, catalogs can be compressed and digitally signed to prevent tampering. By subscribing to a catalog in order to detect changes for one or more hosted extensions, the number of server pings required from the client (or notifications to the client) in order to discover extension updates can be reduced.
In this particular example:
In the described embodiment, one of the aspects that provide desirable utility is the extensibility of the software platform. That is, third and fourth party developers are free to develop their own extensions which can then be used within the framework of the software platform. The extensions are integrated directly into the software so that the platform's functionality is modified by the extensions. Recall that in order to provide an extension, the developer simply authors the extension, describes their extension in an EDF and PKG, and then hosts the EDF, PKG, and associated files on a network server.
The EDF, as pointed out above, can be defined in an XML schema that includes a root node (i.e. the "extension" tag) and one or more child nodes. In this particular example, the child nodes generally correspond to the individual extension feature types that are desired for incorporation into the software platform. For example, recall that Tables 1-3 above describe various exemplary predefined feature types that can be added through an extension using the predefined XML schema.
Consider now a developer who wants to add two menus and a toolbar to the software platform. The menus and toolbar might be associated with a retail store that maintains a Web site for its customers. The retail store might want a customer who visits its Web site to be presented with a UI that is unique to the retail store and provides services that are specifically tailored to the store. To do this, the developer develops two different menus, one of which might be associated with displaying the most recent specials, and other of which might be associated with providing a search mechanism through which the user can search for specific products. The toolbar might contain specific buttons that are unique to the retail store. A simplified EDF called "retail.edf" for the retail store's extension is shown directly below:
Here, the outer "extension" tag designates this XML file as an extension. The inner "menus" and "toolbars" tags are top level tags that designate that the information between these tags pertains respectively to menus and toolbars that correspond to the extensions that the developer has added. The boldface "menu" and "toolbar" tags describe data pertaining to the actual extension and contain a URL that is associated with each extension as described above. The EDF above logically describes the extensions that are being provided as including two menus and one tool bar.
Consider also that the above EDF can constitute but one of many EDFs that are loaded into the system. Each EDF can contain one or more top level tags, each of which is associated with one or more specific extensions that are to be added to the software platform.
Utility objects, herein referred to as attachment points, are used to process the information from the multiple EDFs. An attachment point is simply a collection of objects that fire events to registered listeners as objects are added to or removed from the collection. Many types of attachment points can be created, but all take data from a source (often another attachment point), process it (either dynamically or statically), and expose the results of their processing. Some of the simplest attachment points include:
In the illustrated example, the architecture includes a collection of one or more attachment points, including a funnel structure known as an EDFHub 1700, an attachment point manager 1702, and multiple attachment managers 1704. The EDFHub 1700 receives all of the EDFs and merges them together and exposes them as a single list. Other individual attachment points provide mechanisms that manipulate (including filter, merge and expand) the single list that is exposed by the EDFHub 1700. Whenever a new extension or EDF is added to or removed from the EDFHub, the various attachment points will see to it that the appropriate attachment manager(s) is notified. This is done by firing events to the appropriate attachment managers. The attachment point manager 1702 creates, destroys and manages the various attachment points in the system and allows easy reuse of identical attachment points.
For each top level tag (i.e. "menus" and "toolbars" tags), there is a corresponding attachment manager 1704 that uses data provided by the attachment points to incorporate a particular type of feature within the software platform. Each attachment manager requests a set of attachment points from the attachment point manager 1702. These manipulate the data exposed by the EDFHub 1700. In the illustrated example, the attachment points can be requested as a predicate chain that the attachment point manager uses to create and build a set of attachment points that operate on the data exposed by the EDFHub 1700.
Step 1800 receives multiple EDFs. These files can be received in any suitable way. For example, a user can specify in their preferences particular extensions that they desire to be loaded when they are online. Alternately, a user might navigate using a link to a particular Internet site that recognizes that the user is executing a software platform that is configured to dynamically add the extensions. The EDFs, in this example, are funneled into the EDFHub 1700 which uses attachment points to combine the EDFs (step 1802). In this example, the EDFs are defined as XML files and the nodes are combined into one single XML list. Step 1804 exposes the combined EDFs. In this particular example, the EDFs are combined into a single XML list that is exposed to other various attachment points which then further manipulate that data (step 1806). One goal of the attachment points is to avoid having the attachment managers 1704 re-query the whole system every time an extension gets added or removed from the system. Thus, if an extension gets added or removed, the attachment points ensure that only the appropriate attachment manager 1704 is notified of the specific additions or deletions of the extension. For example, if an EDF indicates the addition of a menu, then only the attachment manager associated with menus is notified. Accordingly, step 1808 notifies the appropriate attachment manager of any new data that matches the attachment managers requirements.
Attachment Points and the Attachment Point Manager
Attachment points are objects that expose collections of ordered objects and fire notifications when new objects are inserted or deleted. In the exemplary system, the objects are XML nodes, but they could be any type of object. Although there are many types of attachment points, they all follow a similar process:
Alone, each attachment point is quite simple, but when different types of attachment points are combined to form "chains", where one attachment point processes data from a second attachment point, the processing can be quite powerful. This is especially true if the attachment points only process the changed data in step 2, since they only do a small amount of simple work at any one time. In the exemplary system, this incremental processing means that the whole system does not have to be re-queried when a new extension is installed or when an existing extension is removed. Additionally, each attachment manager in the exemplary system uses a specific chain of attachment points and so is only informed of changes that impact its area of extensibility.
The attachment point manager performs two important functions when building chains of attachment points. First, it allows the chains to be described as predicate strings. The attachment point manager interprets these strings and builds the required chain of attachment points. Second, it allows the reuse of identical attachment points, which makes the system more efficient. As the attachment point manager creates each chain of attachment points, it tracks which predicate string corresponds to which attachment point. If that predicate string is later requested again, it simply reuses the existing attachment point without creating a new one.
As an example, consider that the attachment manager associated with menus has requested the following predicate chain of attachment points that utilizes the retail.edf file above: (Note: this example does not assume the presence of an EDFHub attachment point).
Explode(Filter("menus", Explode (URL ("retail.edf"))))
This string represents all of the menus in the retail.edf file. The XML file located at retail.edf is loaded by the URL attachment point which exposes the root node of the XML file as the only object in its collection. The inner Explode attachment point uses the URL attachment point as its data source and exposes all of the children of the objects in that source collection. In this case, the children of the root node are the top level XML tags "menu" and "toolbars". The Filter attachment point uses the Explode attachment point as its data source and filters the exposed objects looking only for the nodes that are "menus". The outer Explode attachment point uses the Filter attachment point as its data source and exposes all of the children of the filtered menu nodes to provide a list containing the two menus that are added by the extension. Since this particular XML file contained menus that were identified by the attachment points associated with menu attachment manager, that attachment manager is then notified that two menus have been added by an extension.
This process is diagrammatically illustrated in
Consider additionally that the toolbar attachment manager would request a predicate chain of attachment points which would also use URL attachment point, an Explode attachment point and a filter attachment point 1904 that filters on "toolbars". Thus, the corresponding explode attachment point 1906 would expose an XML list containing only the "<toolbar>" node. But, the attachment point manager would detect the commonality of the URL attachment point and the inner Explode attachment point, so it would reuse the same attachment points it created for the menu attachment manager. The Filter attachment points used by the toolbar attachment manager and the menu attachment manager would use the same Explode attachment point as their data sources but would expose different collections of nodes, because they were filtering based on different criteria.
The table below lists a number of different attachment points that can be utilized in accordance with this described embodiment but many more can easily be created.
The embodiments described above provide a platform solution that provides for customization and extensibility through a consistent and logical extensibility mechanism and object model that can be easily understood by third party developers. Internet-based downloads can be accomplished without a great deal of user intervention and without manipulating any user persisted settings. Extensions can be provided to a software platform or application program dynamically based upon the user's computing context.
Although the invention has been described in language specific to structural features and/or methodological steps, it is to be understood that the invention defined in the appended claims is not necessarily limited to the specific features or steps described. Rather, the specific features and steps are disclosed as preferred forms of implementing the claimed invention.
Patent Citations
Non-Patent Citations
Referenced by
Legal Events
Original Image


text:
And like its namesake, Evan Williams the Bourbon has the same strong character. Allow us to introduce you to Evan Williams The Entrepreneur, The Politician, and most importantly The Distiller. Click to Learn More
Nowadays, Parker is joined by his son Craig, who works alongside his father in much the same way as Parker did years before with his father, Earl. Together, the two are responsible for making sure that the Heaven Hill Bourbons that are produced at the historic Bernheim Distillery possess the same high quality and consistent taste that consumers have come to expect from such storied brands as Evan Williams and Elijah Craig.
Park Beam, Parker's grandfather and namesake, was the brother of James Beauregard Beam, better known as "Jim" Beam. It was Parker's father, Earl, who was the first to ply his trade at Heaven Hill. Earl, in turn, then turned the reins over to Parker in 1975. Parker's son Craig joined Heaven Hill in 1982, and with Craig firmly entrenched in the business as the eighth generation of Master Distillers, the family's continued legacy of Bourbon- making is assured.
In addition to overseeing all production, the two are also charged with safeguarding the world's second- largest supply of aging Kentucky Bourbon whiskey, an inventory of more than 675,000 barrels currently aging in Heaven Hill's 40+ open rick warehouses.
Corn, malted barley, rye and wheat are selected and ground according to the particular recipe, or mashbill, being used.
The milled grains are cooked in Kentucky limestone water, in a specified order and at specific temperatures, to create a sweet, porridge-like "mash." The mash is then transferred to "fermenter" vats.
A portion of the prior day's distillate is added to both the mash cooker and the fermenter. Known as the sour mash process, it serves to maintain continuity of flavor and regulate pH.
Our Master Distiller's 7th generation family yeast strain is added to the cooked mash in a large vat, where the yeast naturally converts the sugars into alcohol through the fermentation process. Over several days, the fermenting mash bubbles violently, creating "Distiller's Beer," a thick, low alcohol (6-7%) liquid that is ready to be distilled into whiskey.
In the 70 ft. tall column stills, the Distiller's Beer drips slowly down a series of perforated copper plates while steam blasts up from the bottom. The alcohol vapors rise to the tops of the stills, where they are captured, condensed, and then re-distilled in the thumper. The purified, concentrated "new make" reemerges at 68-70% alcohol or 136-140 proof.
The newly made whiskey is stored in a holding tank, where the proof is "gauged" and brought down to barreling proof (62.5% alcohol or 125 proof) through the addition of pure, Kentucky limestone water. It is then transferred to a new, charred white oak barrel and sealed with a poplar "bung."
The newly filled barrels are placed in open-rick warehouses, or rickhouses, to naturally age from 4-20 plus years. During the aging process, the whiskey acquires its distinctive amber color, smooth character, and vanilla and caramel flavors.