text:
WASHINGTON (AP) — Setting the tone for the election year, President Barack Obama is urging Democrats to coalesce behind a populist economic message that his party has concluded offers the best prospects for fending off Republicans in November.
Obama was to rally the party faithful Friday at a Democratic National Committee meeting just blocks from the White House. Turning decidedly partisan despite his ongoing commitment to find common ground with the GOP, Obama will seek to define the 2014 midterms as a choice between a Republican vision of "opportunity for a few" and a Democratic vision of "opportunity for all."
"The Republican Party can keep telling the country what they're against — whether it's the Affordable Care Act, or the minimum wage, or equal pay laws, or commonsense immigration reform or the very existence of climate change. But Democrats will keep telling America what we're for — from giving America a raise to getting America covered," Obama will say, according to excerpts of his remarks released by the White House.
In an effort to show the president was fully committed to bolstering his party's cause, the White House said Obama was actively looking for ways to help.
Obama has committed to hold nearly three dozen fundraisers for Democratic political committees by the middle of 2014 — including an eye-popping 18 events for the DNC, whose millions of dollars of lingering debt more than a year after the last presidential election has Democrats fretting.
In a twist from previous midterms, Obama will even headline fundraisers for super PACs, which he once disparaged but has more recently embraced, arguing Democrats mustn't be steamrolled by GOP outside groups even if the flood of largely unregulated donations leaves a bitter taste for those who hunger for cleaner American elections.
And as Democratic incumbents seek to position themselves for the election, Obama's aides are working with Democratic leaders in the Senate and House to coordinate votes that will bolster the themes they'll be pressing during the campaign, said a White House official, who demanded anonymity to discuss internal Democratic deliberations. Obama also plans to do what he can to boost Democratic turnout, while his campaign's vaunted voter data and technology will be made available to all 2014 candidates, the official said.
At the same time, Obama will seek to quell the notion that the encroaching election will make progress on his policy agenda impossible for the rest of the year. After all, 2014 offers Obama potentially the last opportunity to secure legislative achievements before attention turns to the 2016 presidential election and Obama's future successor.
"Obviously, this is an election year. But an election that's eight months away shouldn't stop us from making progress right now," Obama will say, echoing his State of the Union refrain that he'll work with Congress wherever possible but will act unilaterally to expand economic opportunity however he can.
In his remarks, Obama was also to offer Democrats a preview of the budget he plans to send to Congress next week. To the delight of Democrats, Obama has dropped a proposed reduction in annual increases to federal benefit programs that was in last year's budget, wary of providing fodder for Republicans to argue that Obama and Democrats want to make life harder for seniors.
At the same time, Obama will make a renewed push for new spending that he says can spur new jobs in manufacturing, energy and infrastructure.
"And we'll pay for every dime of it by cutting unnecessary spending and closing wasteful tax loopholes," Obama will say.
With an eye toward avoiding the type of intraparty squabbles that have caused problems for Republicans, Democrats from the White House and Congress on down appear to have united behind "expanding economic opportunity" as their driving mantra for the midterms. A memo from Obama pollster Joel Benenson and obtained by the AP makes the case that Democrats can gain an advantage by casting Republicans as out of touch with all but the wealthiest Americans and obsessed with repealing Obama's health care law that, despite its unpopularity, many Americans believe shouldn't be repealed.
But Reince Priebus, the chairman of the Republican National Committee, said Americans are still waiting for the opportunity and jobs that Obama keeps talking about. He pointed to Obama's proposed minimum wage hike and health care law as examples of policies that do nothing to help Americans who are out of work.
"Maybe it's time to give up on the speeches that include a lot of promises but not a lot of action," Priebus said.
Follow Josh Lederman on Twitter: http://twitter.com/joshledermanAP


text:
ROCHESTER, N.Y., May 17, 2005 /PRNewswire-FirstCall via COMTEX/ -- Rochester Institute of
Technology (RIT) and McAfee, Inc. (NYSE: MFE), the leader in Intrusion
Prevention and Risk Management solutions, have crowned four RIT students as
the top defenders of their digital fortress. A computer security and forensics
laboratory on the RIT campus was the battleground, as six teams of students
faced the fierce competitor, McAfee.
The students' challenge: build, test and defend computer network systems
against an onslaught of simulated attacks generated by two groups-McAfee
engineers and the RIT student group S.P.A.R.S.A. (Security Practices and
Research Student Association). After hours of blocking and preventing security
threats, the student team of Jym Ferrier, information technology graduate
student; Mike Goffin, fourth-year information security major; Sean Jordan,
first-year applied networking and systems administration major; and Jordan
Sissel, fifth-year computer science major, won first place.
The teams were scored in the following five categories: buildout,
standardized testing, attack and defend, forensics and expert analysis. McAfee
awarded prizes to the first, second, and third place teams. All the students
received McAfee certification for their participation in the training sessions
and the contest.
The contest was part of McAfee Day, May 13, on the RIT campus to celebrate
a new partnership between McAfee and the university. McAfee recently donated
more than $1 million in next-generation intrusion prevention technology to the
B. Thomas Golisano College of Computing and Information Sciences (GCCIS) to
launch the college's master's program in computer security and information
assurance. The ultimate goal is to prepare students for various careers in the
computer security field.
Friday's contest involved several phases. In the first phase, students
were given a list of customer requirements. They needed to implement McAfee
IPS appliances and software and once their designs were complete, McAfee ran
tests on the students' network and systems to determine deficiencies,
vulnerabilities, patch levels and general health. The second portion of the
contest involved students preparing their networks against a set of simulated
attacks (internal and external threats) from McAfee engineers. In the final
phase of the competition, the students performed a forensic analysis to assess
damage to their systems.
Photo of winning team available at
www.rit.edu/news/pics/mcafee_winners.jpg . (Photograph caption information:
Pictured from left to right are Jordan Sissel, Mike Goffin, Jym Ferrier and
Sean Jordan.)
About Rochester Institute of Technology B. Thomas Golisano College of
Computing and Information Sciences
RIT's B. Thomas Golisano College of Computing and Information Sciences,
the largest comprehensive computing college in the nation, was created with a
$14 million gift from B. Thomas Golisano, founder and chairman of Paychex Inc.
The college offers undergraduate programs in computer science, information
technology, applied network and system administration, new media, and software
engineering, as well as graduate programs in computer science, information
technology, software development and management, and computer security and
information assurance.
The college is home to the Center for Advancing the Study of
Cyberinfrastructure, located in the university's Laboratory for Applied
Computing building, which partners with industry and other research
organizations in the advancement of computing technology in support of
scientific discovery and product development, and to foster technology
Founded in 1829, RIT is internationally recognized as a leader in
computing, engineering, imaging technology, fine and applied arts, and
education for the deaf. RIT enrolls 15,300 students in more than
340 undergraduate and graduate programs.
About McAfee, Inc.
McAfee, Inc., headquartered in Santa Clara, California, is the market
leader in Intrusion Prevention and Risk Management solutions. McAfee delivers
innovative and proven solutions and services that secure systems and networks
around the world. With McAfee's unmatched security expertise, home, business,
government, and service provider customers block attacks, prevent disruptions,
and continuously track and improve their security. www.mcafee.com.
NOTE: McAfee and Foundstone are either registered trademarks or
trademarks of McAfee Inc. and/or its affiliates in the US and/or other
countries. The color red in connection with security is distinctive of McAfee
brand products. All other registered and unregistered trademarks in this
document are the sole property of their respective owners.
SOURCE McAfee, Inc.
Kelly Downs of Rochester Institute of Technology, +1-585-475-5094, or firstname.lastname@example.com
or Dana Lengkeek of McAfee Inc., +1-408-346-5184, or email@example.com

subset: commoncrawl


text:
Caroline Baum's author interviews have been one of the biggest highlights of our year at Booktopia. Join us as we revisit the best interviews of 2013, and perhaps discover a new favourite author along the way.
Writing a memoir is something of a balancing act; trying to reveal as much as possible, without oversharing or overexposing those involved. It also requires a great deal of vulnerability and a knack for picking up on the small details which make day-to-day events interesting. Each of the authors in this post share their thoughts on that process with sincerity and self-awareness, which makes for seriously fascinating viewing.
Sarah Turnbull- "All Good Things"
I grew up in a French-speaking suburb of Sydney, and Sarah Turnbull's Almost French was something of a bible for parents navigating cross-cultural relationships. Sarah is back with All Good Things, which recounts Sarah and Frédéric's move from Paris to idyllic Tahiti. It takes something very special to be able to recount your own personal story in a way that makes for good reading, and Sarah has perfected that art. She opens up with characteristic candor in our interview below.
Best quote: "I didn't want to write another personal book, or I thought I didn't want to write another personal book. So I did fight this book… I've it heard said that it's the book that you fight the most that you most need to write."
Check out Caroline's interview below:
Pick up a copy of All Good Things today
Lloyd Jones- "A History of Silence"
Lloyd Jones is a simply phenomenal writer, and this interview demonstrates exactly why. In his earnest, softly-spoken sentences you can see the bare bones of his beautiful prose. Similiarly to Sarah and Brendan, he holds nothing back from Caroline's questions and answers very personal questions with honesty and insight. A must-see interview from a must-read author.
Best quote – "It could be just a face filled with gloom standing on a railway train platform, and it'll have an echoing sense of recognition for me, I'll think 'I know that feeling, that look.' Actually, in the case of Wales it always seemed to be gloom and a kind of a… vacancy."
Check out Caroline's interview below:
Pick up a copy of A History of Silence today
Brendan Ward – "The Beethoven Obsession"
What is the difference between a personal experience and an engaging tale? In this interview, Brendan explains that timing and luck are the necessary ingredients, both of which were present in his quest to record Beethoven's music in Australia for the first time.
Best quote – "That's what makes such an amazing story because of all these serendipitous events that happened in the nineties in the lead up to the Olympics. Had it not been for the Olympics… it may not have had the same gloss, because everything around Sydney had cachet."
Check out Caroline's interview below:
Pick up a copy of The Beethoven Obsession today


text:
The August 2010 Daring Cooks' Challenge was hosted by LizG of Bits n' Bites and Anula of Anula's Kitchen. They chose to challenge Daring Cooks to make Pierogi from scratch and an optional challenge to provide one filling that best represents their locale.
Pierogis are typically boiled or baked dumplings of unleavened dough stuffed with variety of fillings from vegetarian to meat to sweet ones depending on the country and region. I always thought of them as European dumplings. And, they pretty much are...
I think I first came across these dough pockets in one of our wanderings in Paris. I have always loved dumplings and took to pierogis in a jiffy. I haven't seen much of them in the US and definitely never attempted making them myself before. Now, I am wondering just why I didn't!! I mean, they are super simple to make and with endless options for filling, so much fun as well!
When I started researching Pierogis I realised there were so many regional variations, not just in the filling but also in the recipe for the wrapper as well! I was sure, I wanted to go eggless on the wrapper and vegetarian on the filling. So, I went with the simplest recipe that uses flour, water and oil. I just spruced it with some fresh basil and lemon zest.
For the filling, I toyed with potato and cheese but wasn't too inspired by this traditional choice. Eventually, I decided to go with caramelised onions, fresh paneer and fresh basil minimally flavored with just salt, pepper and a touch of chili flakes.
To finish, I sauteed the cooked (boiled) pierogis in butter to a brown crust and then served with more caramelised onions and browned button mushrooms.
Verdict: Well, predictably, I loved them. But, let me tell you about these pierogis specifically. There was a hint of sweetness from the fresh cheese as also from the bit of brown sugar that I used for caramelising the onions. In the same bite, there was the hint of spice from the red chili flakes. All the flavors were mild but melded together very nicely.
Caramelised Onion, Paneer and Basil Pierogis
Wrapper Dough:
Notes: I'd like to have made this entirely with rice flour as I think it's sweetness pairs nicely with the rest of the ingredients but belatedly realised I was running low on it. As it is, I used what I had and my recipe reflects that. Feel free to substitute entirely with rice flour.
3/4 cup all purpose flour
1/4 cup fine rice flour
1 T olive oil
1 T fresh basil, finely chopped
zest of half a lemon
1/4 tsp salt
1/3 cup of water (this is approximate, I added water slowly until the dough was just formed)
1 large yellow onion (if you have vidalia, even better!!)
1 tsp brown sugar
1/2 tsp red chili flakes
1/2 cup fresh paneer (or you can use drained ricotta. Paneer recipe below)
salt, pepper and oil as needed
Mix all the dough ingredients to form a supple, tacky dough. Kneed for 3-5 minutes. Cover and refrigerate for atleast 30 minutes.
Meanwhile, over low heat, saute the onions in a little oil. As they lose water, add the sugar and chili flakes and season with salt and pepper. Continue to cook until the onions are browned and have reduced to a fourth of the volume. Let the onions cool for about 10 minutes and then fold in the paneer. Leave the cheese a bit chunky.
When the dough is ready, roll it out as thin as you can on a lightly floured surface. Using a four inch round cutter, cut circles of dough. Place about a teaspoon of filling in the center of each round, a bit closer to one edge. Wet the edges with water and fold over the dough and crimp the edges to seal.
Bring a big pot of water to boil and lightly salt it. Gently ease the prepared pierogis into the water. Do not overcrowd. They are done when they float to the top. Remove and drain lightly. Once all the dumplings have been cooked, lightly saute them in butter to sear the wrapper.
Serve with more of the caramelised onions and sauteed mushrooms.
To Make Paneer:
This is an indicative recipe. The actual amount of cheese made from one cup of milk depends upong the fat content of the milk, acidity of lemon juice and your patience level :). The good thing is that more is always better here! :)
3 cups milk (definitely nothing less than 2%)
1-2 T lemon juice (key lime and lime have higher acidity, so you'll need less but I find the resulting cheese a bit bitter as well)
Over medium heat, bring the milk to a fast boil. As it boils up, lower the heat and quickly add the citric juice. Turn the heat back to medium and whisk the liquid. The cheese will start seperating from the whey. When slightly largish chunks start to form, remove from heat and set aside for 10 minutes to help the coagulation process.
Drain the contents through a fine muslin cloth and hang the cheese in the cloth for about atleast 15 minutes (depends on quantity ofcourse) to drain as much water as possible.
Typically, you would try squeeze as much water as you can from the paneer but for this particular recipe, I left a bit of moisture to get a creamier consistency.


text:
Get Organized, the ultimate online resource to satisfy your home organization needs. From jewelry holders to garment racks to kitchen storage, we have everything you require to effortlessly keep your space tidy. Having reliably delivered inventive and affordable home solutions since 1996, all of our merchandise comes with a 100% Satisfaction Guarantee; if you are unhappy for any reason with your purchase, we will quickly refund your money. So streamline your chores, smarten up your home, and get organized now.
- Share on Facebook


text:
Please login first to complete purchase/ quotation request, view custom order reports, or create favorites list.
Don't have an account with us yet? Please set up an account to place order or obtain customer services.
This peptide is beta-amyloid (1-38) with phenylalanine and isoleucine universally labeled with 13C. Ab is found in amyloid deposits of Alzheimers patients and is implicated in the pathogenesis of this disease.


text:
Your smart tweets, clever video resume and even your connections aren't going to get your next job. No pressure, but a lot is riding on your interview.
Nail it next time with 16 tips from our panel of experts: Lauren Berger, CEO of Internqueen.com and author of All Work, No Pay: Finding an Internship, Building Your Resume, Making Connections, and Gaining Job Experience; Cynthia Shapiro, author of What Does Somebody Have To Do To Get A Job Around Here?; and Caroline Dowd-Higgins, author of This is Not the Career I Ordered.
1. Think savvy, not superfan
Walk the line between being a nervous nelly and a fan girl, says Berger. Make sure your passion doesn't come across as too obsessive. Come across as confident but also appropriate and reserved when needed.
2. In fact, play a little hard to get
Aggressiveness is passé, says Shapiro. Unless you're in certain fields (you know if you're in them, such as the media industry) being super aggressive will make you appear desperate. Instead act as if you have five different offers. After you submit an application, respond, don't initiate. And if you absolutely must follow up, send your resume using another method—like by snail mail if you sent it by email initially.
3. Do a social media cleanse
Before you start interviewing, give yourself a few weeks to do a social media cleanse. Treat yourself as if you're running for president. Anything you're hesitant about, take it down. Even when you've changed your settings to private—which you should—assume anyone can see what you're posting.
4. Practice makes perfect
Practice doing an interview with friends, family or with a counselor at a career center. If you find yourself particularly nervous being outgoing, Berger suggests pushing yourself to talk to a stranger every day. Making small talk at the grocery in the check out line is a great start.
5. No tweeting allowed
Do not even consider tweeting about your job search, particularly if it indicates you're having trouble getting a job.
6. Judge your own blog
Everyone has a blog. Even your dog has a blog. But that doesn't mean your blog isn't worthwhile including on our application; it shows personality. But make sure you've committed to updating it regularly and it's an apt reflection of your personal brand.
7. Dress professionally
A lot of companies go for casual dress these days. But always dress professionally for an interview. Berger recommends a take on a black suit—whether it skinny black pants and a blazer for an interview with a creative brand or a traditional black pants suit for a more conservative company. Show your personality with a statement necklace, and never ever show up in sky-high (a.k.a. stripper) heels.
8. Get ready for the coffee shop interview
The new interview is the Starbucks interview—a meeting with a start-up at a coffee shop. You know everyone is going to be listening to your interview, but get over it—it's you moment to shine. Get there 45 minutes early so you can nab a table in corner and buy your own coffee to prevent the awkward situation with an employer figuring out who's paying. And don't let the Starbucks aspect affect the way you look or dress. Keep it just as professional as you would for a regular office meeting.
9. Ask smart questions
Have two to three questions prepared, including "Describe a day at the job." And always make sure the questions are extremely relevant to the company and position, says Berger. A lot of people make the mistake asking the interviewer for personal advice, like "I saw you used to work at William Morris. Can you tell me what it was like?" Bad move.
10. Tell stories, not lists
When you're talking about your experience to a company, a lot of people get in the habit of running through a resume-like list. Instead, talk in about how you specifically effected company, says Dowd-Higgins, like how you took a company's Twitter following from 10 to 10,000.
11. Know the lingo
Read and reread the job posting. Highlight key buzz words they're using, and then organically incorporate those words into your interview spiel.
12. Consider everything a test
Your interviewer is texting, talking to co-workers walking in and out of the office—basically ignoring you. Consider any difficult scenario during your interview a test, says Shapiro. Stay positive, focused and act like everything's normal.
13. The correct answer to when you can start is….
14. Say thanks with a handwritten letter
Always send a handwritten thank you. A lot of employers use it as tie-breaker when they're deciding between two candidates.
15. Don't be a stalker
Follow-up is especially important when you're going for an entry or midlevel position, which is not necessarily the top priority—or top of mind—for hiring managers, says Berger. At the end of the interview, ask if there's a timeline in which you should expect to hear from them. If they give you a time, don't follow up before that time frame, and don't follow up on the exact deadline either. Wait two days and send a quick follow-up, thanking them for sitting down with you and asking if there's any other information you can send over. Then follow up exactly a week later if you haven't heard a peep, and after that, game over.
16. Turn a rejection into a learning experience
Let a rejection propel you forward. As soon as you receive rejection, ask the hiring manager for feedback regarding the skills and experience you'll need next time a position opens up. You can even ask whomever you connected with during the interview process if you can take them out for coffee to pick their brain for tips for the future (but NEVER ask why you didn't get the job). Then stay in touch, and apply again.
Want more from Jessica? Follow her on Twitter.
Image: Getty


text:
Culinaria Food and Wine Letterpress Cards
Jeff at Biklops Design created these note cards and business cards for catering and event planning company Culinaria. We love the simple line work logo and are a little amazed it actually printed. It is one of those "it turned out really cool but was a pain in ass to print" kind of projects. Inking a solid like this with letterpress is one of the more difficult things to print. There is a constant struggle to maintain minimal variation in the color density. With a large solid area the press sheet warps like a ripple potato chip, making feeding the sheets in register a challenge. And keeping the fine line weight of the logo from filling in made for a fun time on press. To help with the filling in on the logo we ended up shortening the exposure of the plate, which still hardens the plate but lessens the amount of base/neck material on the edges of the printed image. So good job on the design Jeff, we can even print your curve ball. The cards are printed letterpress on 220lb Crane Lettra Flo White 100% cotton stock. The final trimmed cards were finished with a matching light blue edge coloring accent. The text is printed after the solid so it has a sculptural impression. If the text were printed first, the solid blue on the opposite side would flatten the impression down to near nothing.


text:
The 29-year-old from the Isle of Man ruptured all ligaments around his acromioclavicular joint and a separated shoulder as he sought a first yellow jersey of his career, his Omega Pharma-QuickStep team has confirmed.
"The surgery to stabilize the AC joint will take place on Wednesday, July 9," the Belgian squad said in a statement.
"The recovery time after the surgery will be around six weeks."
It means the Manxman will miss the Commonwealth Games in Glasgow.
Cavendish, who has 25 Tour stage wins, announced his withdrawal from the Tour on Sunday morning after tumbling to the tarmac in failed pursuit of the maillot jaune in his mother's home town.
It was the first time since 2008 - when Cavendish withdrew voluntarily to prepare for the Beijing Olympics - that he has not completed the Tour.
Cavendish said: "It's worse than I was hoping but immediately after the crash I knew something was really wrong.
"It is really painful but at the moment all I can do is focus 100 per cent of my effort on my recovery to be able to get back racing for Omega Pharma-QuickStep as quickly as possible."
A collision with Simon Gerrans brought Cavendish down and the Australian's Orica-GreenEdge squad expressed surprise that the Manxman had not been rebuked by officials for his manoeuvre in a frantic finale.
Cavendish was earlier criticised by March's Milan-San Remo winner Alexander Kristoff (Katusha) for his sprinting style.
The Norwegian compared Cavendish to footballer Luis Suarez, who was banned for four months for biting an opponent at the World Cup finals.
Kristoff, seventh in Harrogate as Marcel Kittel (Giant-Shimano) won, said on cyclingnews.com: "I was stuck behind the crash.
"Suarez was banned for biting people in soccer and to me it looked like he crashed on purpose.
"At 60 kilometres an hour it's really dangerous and you can injure people, so it's not nice of him.
"In an uphill sprint you lose a bit of control sometimes. It's not the first time he's done this.
"I hope he calms down a little bit in the future. He's a brilliant sprinter but it looks like he lost his head a little bit."


text:
Disney Driven Week In Review 3-1-15
Maria H. (ndm#130) 0 Comments 9th grade ninja, ABC, agents of s.m.a.s.h., allison holker, Animation, anna, artem chigvintsev, austin & ally, awards show, beagle boys, Becky G, Belle, bionic island, birthday, bouncer beagle, bruno tonioli, burger beagle, carrie ann inaba, charlotte mckinney, Cinderella, creature capture, Cruella de Vil, dancing, Dancing with the stars, Darth Vader, derek hough, dewey, DHS, Disney, disney afternoon, Disney channel, disney night, Disney XD, Disney's Hollywood Studios, dog with a blog, Donald Duck, duck tales, duckburg, duckworth, dwts, echo creek, elsa, Emma, emma slater, erin andrews, family, Fifth Harmony, flintheart glomgold, Florida, frozen, frozen fever, games, girl meets world, golden coach, goliath, Gravity Falls, gyro gearloose, hollywood & vine, Hollywood Studios, hook, huey, Hulk, I didn't do it, idina menzel, Jessie, Jessie J, jojo, JoJo's circus, julianne hough, k.c. undercover, keo motsepe, Kickin It, Kids, king butterfly, kirby buckets, kristen bell, kristoff, kym johnson, Lab Rats, launchpad mcquack, len goodman, liv and maddie, live, live action, louie, ludo, ma beagle, magica despell, Maleficent, march 2015, marco diaz, mark ballas, Marvel, Marvel's Ultimate Spider-Man, match maker, Meghan Trainor, michael sam, mighty med, monster arm, mrs. beakley, music, music awards, nastia liukin, Nick Jonas, noah galloway, olaf, olly murs, Once Upon A Time, ouat, Park Photos, parks, part time hero, party, party with pony, patti labelle, penn zero, peta murgatroyd, Photos, Playhouse Disney, playhouse disney live, poe, preschool, radio, radio disney, Randy Cunningham, rdma, reality tv, redfoo, Regina, riker lynch, robert herjavec, rumer willis, Rumplestiltskin, sabrina carpenter, school spirit, Scrooge McDuck, sharna burgess, short, star butterfly, star comes to earth, star vs. the dungeon of evil, Star vs. The Forces of Evil, STAR WARS REBELS, storybrooke, suzanne somers, teens, Television, the other exchange student, throwback thursday, Tom Bergeron, tony dovolani, Tweens, uncle scrooge, ursula, valentin chmerkovskiy, Walt Disney Animation, Walt Disney World, watch disney xd, WDW, webbigail vanderquack, webby, willow shields, Wordless Wednesday, young kids
It's the Disney Driven Week In Review! We understand that life keeps you busy, so here is a listRead more


text:
Risk of Heart & Lung Damage with Breast Radiation
Dear OncoLink "Ask The Experts,"
What is the risk of damage to your heart or lung from radiation treatment for left breast DCIS?
Terry Styles, MD, Assistant Professor of Radiation Oncology at the University of Pennsylvania, responds:
After many years of radiotherapy and many types of cancer treated, it became obvious that radiation to the chest region can cause damage to the heart and lungs. For example, when radiation was used after mastectomy for left sided breast cancers, there was a slightly increased risk of cardiac damage. A large volume of the heart was often included in these treatment fields. After many years of study, it became apparent that there was a slightly higher than normal rate of coronary disease in the patients who received radiation to their left side due to the volume of heart and lung tissue in those radiation fields. It is important to point out that this risk was outweighed by the benefit; that is, with radiation, there were fewer second cancers and local recurrences.


text:
BBC News
- Johnson: US must compromise to get UK trade deal
- Airport security: 3D baggage scanners could end liquid restrictions
- Police chief: Attackers of PCs 'must be jailed, no ifs no buts'
- British Airways strikes: Cancelled flights back on after 'email error'
- Bereaved families 'walk and talk' about suicide in Lanarkshire
- Prince Andrew: I did not suspect Epstein's behaviour
- Southall murder: Man stabbed to death in west London
- Ashes 2019: Joe Root fights to keep England's Ashes hopes alive
- Teacher becomes first woman to swim to Lundy Island
- Edinburgh Comedy Awards: 'Unique' Jordan Brookes wins top prize
- The new mobile phone scam delivering a problem
- Huddersfield: Six arrested on weapons charges after siege
- Royal Family: From costs to carbon, how do they travel?
- Why men are owning burlesque
- Why is London really getting more theatres?
- Scarecrows take over Northumberland village
- Should all frontline police officers use Tasers?
- Ayrshire man goes from heart patient to Ironman in 16 months
- Why Ariana Grande will always be welcome in Manchester
- A street gym in Brixton is helping young people
- Red Arrows display team fly over New York City
- Bury FC fans open hearts as league deadline looms
- 'A small bite changed my whole world'
- Andrew Harper: Blue ribbon tribute in PC's home town
- Pride Cymru: What does it mean to be LGBTQ+?
- Leeds Festival: Girl dies in suspected drugs overdose
- Capturing Hulme's 'inspiration and get up and go energy'
- Two men die in motorcycle collision in South Lanarkshire
- Humanist weddings: Non-religious weddings rise in Northern Ireland
- M4 relief road: Cost of new route 'was getting out of hand'
Our traditional ANY-Village websites can still be found at their original location:
Below we are listing some of the most popular UK property websites advertising homes for sale in the Spanby area:
Nestoria (SPANBY Map Search)
Vebra.com (SPANBY Map Search)
Rightmove (SPANBY Map Search)
Zoopla (Spanby Map Search)
Homes for SALE / Flats for SALE in SPANBY
Homes for RENT / Flats for RENT in SPANBY


text:
The Competition Bureau has announced that it would not oppose the acquisitions of western Canada's two largest hog producers Big Sky Farms by Olymel and the Puratone Corporation by Maple Leaf Foods, according to a report by Global News (www.globalmeatnews.com).
Canada's Competition Bureau is an independent law enforcement agency that ensures businesses and consumers are protected in the marketplace.
The bureau said it conducted separate investigations into the two vertical mergers, considering whether they would enable the processors to reduce competition on the pork market by hindering rivals' access to live hogs in upstream markets (input foreclosure) or limit or cease their purchases of live hogs from upstream rivals (customer foreclosure).
It concluded that while the vertical mergers would give packers Olymel and Maple Leaf the ability to foreclose rivals' access to live hogs, there was unlikely to be a "substantial" lessening of competition, pointing out that Maple Leaf and Olymel would continue to provide competition with each other. It also determined the acquisitions would be unlikely to encourage the two processors to buy fewer hogs from upstream rivals, because the costs associated with this strategy would make it unprofitable.
"The Bureau therefore concluded that it was unlikely that either transaction would result in a substantial lessening or prevention of competition through customer foreclosure,"it said in a statement.
Olymel entered into an agreement to acquire Big Sky Farms – Western Canada's largest pork producer – on Oct. 16, 2012 for $62.25 million Canadian, shortly after the producer went into receivership with almost $69 million in debt.
Maple Leaf Foods announced the acquisition of the Puratone Corporation – the second-largest pork producer in Western Canada – on Nov. 1, 2012. Puratone was also in serious financial trouble, and had filed for protection under the Companies' Creditors Arrangement Act.


text:
Browsing by Subject "knowledge sharing"
Now showing items 1-1 of 1
Minbaeva, Dana B.; Pedersen, Torben (Frederiksberg, 2010)[More information][Less information]
Abstract: The emerging Knowledge Governance Approach asserts the need to build microfoundations grounded in individual action. Toward this goal, using the Theory of Planned Behavior, we aim to explain individual knowledge sharing behavior as being determined by the intention to share knowledge and its antecedents: attitude toward knowledge sharing, subjective norms, and perceived behavioral control. In addition, we consider managerial interventions (governance mechanisms) that managers can employ to influence the identified antecedents and thereby govern individual knowledge sharing behavior. We test the model arrived at on a dataset collected among individuals engaged in knowledge sharing in two competing firms. Results of the LISREL analysis show that the use of rewards affects attitudes toward knowledge sharing negatively, while the use of reciprocal schemes and communication mechanisms have a positive effect on subjective norms and perceived behavioral control, respectively. URI: http://hdl.handle.net/10398/8017
Files in this item: 1CBS_Forskningsindberetning_SMG_245.pdf (357.8Kb)
Now showing items 1-1 of 1


text:
Follow RFF News on your cell phone. Text follow rff to 40404 you will receive txt messages with RFF News
0 Members and 1 Guest are viewing this topic.
Well Erica & Edgardo were spoiled to be in the cast before the cast was released but there was no Lily but when the cast came out on Friday and we saw a Lillian then something tells me that this poster knows something....we shall see
The4Kingdoms (2/5/07 11:45 pm) The fourth boot of fiji is...-------------------------------------------------------------------------------- Liliana.
The4Kingdoms The second/fourth boot of fiji is... oh and a quitter.-------------------------------------------------------------------------------- 2nd-EricaQUIITTEHHH-Gary 4th-Liliana.
The4Kingdoms -------------------------------------------------------------------------------- Gary and Liliana are going to new york together, just found it out. So looks like Gary quits or Liliana quits? Erica is is in new york the 15th.
what I can confirm which isn't much since SP Already did basically haha! Boots from what I know are.Jessica - New York on the 9thErica - New York on the 15th?? ?? ??QUIT: Gary : Was told he was going to NY with Liliana. Liliana - New York on the 1st of March
Page created in 0.101 seconds with 34 queries.


text:
The Padres won last night 6-1 to square the current series, and the season series, with the Mets. By far the most interesting thing that happened during the game (other than the CH-4 audio going out for close to 2 innings) was Nick Hundley's two triples.
I mean no personal insult to the Channel 4 broadcasters. I happen to like Mark Grant, and Dick Enberg is a legend I enjoy listening to when covering other sports. I do think they aren't well-suited as a team to broadcast baseball.
Hundley's feat has been done only 14 other times in Padres history, the last time by Dave Roberts way back in 2005. Nick is also the second catcher to do it. Fred Kendall did it in 1973, getting both triples in Philadelphia off Steve Carlton of all people. It's the first time a San Diego player has hit two triples at home since moving to Petco, and the first time it's been done in San Diego since current hitting coach Randy Ready pulled it off in August 1987, against Houston Astro Bob Knepper. John Kruk hit cleanup for the Padres that afternoon.
The complete list is here.
Padres go for the series win this afternoon.
Wednesday, August 17, 2011
Hundley's Historic Day
Subscribe to: Post Comments (Atom)


text:
First Time On DVD!
Are You My Neighbor? brings the story of the Good Samaritan to life and puts the Veggies in space! THE STORY OF FLIBBER-o-LOOBig Idea's critically acclaimed writing and animation bring the story of the Good Samaritan to life in this delightful adaptation of the parable. Through rhyme and song, children learn that loving your neighbor means helping those in need - even if they don't live next door.
THE GOURDS MUST BE CRAZYJoin Junior Asparagus and the crew of the USS Applepies as they boldly go where no veggies have gone before! Can Junior and the ship's engineer (Scooter) repair the Applepies before a giant meteor smashes it to bits?!? And what about 'oddball' crew members, Jimmy and Jerry Gourd? Could they possibly help? This sci-fi spoof shows kids that 'loving your neighbor' means apreciating those who are different, instead of making fun of them! Are You My Neighbor? helps children learn how to love others even if they look or act different.
FEATURING VeggieTales' most popular Silly Song - 'The Hairbrush Song'* Are You My Neighbor? has shipped 2 million units to date!* Timed to take advantage of the Easter Selling Season * Allow Veggie fans to complete their VeggieTales DVD Collection with the release of Are You My Neighbor? on DVD


text:
On Sale
Vintage Reddish
Handmade strap for Panerai,Rolex, Omega,Breitling,Sevenfriday and all others
Best quality Calf leather.
Nicely distressed and vintage looks
Our all straps are custom made.We are producing as your request.
If you dont know your size please let us know your wrist measure by cm or inch.
Then we can calculate your exact size.
Nearly all for all watches we can do strap.You can see available size from Size selection.
If your size not there please contact with us.
Tapered or straigh both available.
Sewn-in buckle and Screwed buckle both are available and comes FREE with your strap.
If you any question please feel free to contact


text:
Several months ago friends of ours sent out an invitation to join them in purchasing a cow. Luckily they were only buying the meat and not a live animal. After a little discussion we decided to go in for a 1/8 portion of the butchered cow. Historically I have not eaten much beef for both cost and caloric reasons. Over the previous year I probably cooked 5 pounds of beef at home. Recently I have been thinking more and more about how we choose the food we eat and the potential ripple effects of our choices.
Reasons we decided to make a bulk purchase of beef:
- Taste and Nutrition – We would rather not eat greasy food. Compared to factory raised grain fed beef, grass fed beef is extremely lean. We prefer the more meaty and slightly gamey flavor of grass fed beef. Studies have shown grass fed beef to be higher in nutrients, minerals, and "good" fats.
- Supporting local small business – The cow came from a family farm not far from our home so the money supported our local economy. We were able to visit the farm, meet the family, and see the other cows they are raising.
- Environmental – grass fed cows and small farming operations have a far lower impact on the environment than large commercial operations. Buying local means less travel to get from farm to table and a further reduced impact to the environment.
- Storage Space – We are fortunate to have a second freezer to accomodate large quantities of frozen foods.
The purchase also turned out to be very timely. Shortly after we brought the beef home, a pregnancy checkup revealed an iron deficiency in my blood. Guess what happens to be a good source of iron – yep, beef!
The Little Helping and I had a great time meeting our meat. From our house it is a short drive to the Mukilteo Ferry dock and even though it was early March we were treated to a stunning spring day. The smooth boat ride through Puget Sound was just long enough to share a little snack before arriving at the south end of Whidbey Island. Our 40 minute drive to 3 Sisters Family Farm was picture perfect. The meandering highway lead us between quaint pastures framed by luscious fir and cedar trees. Above, bald eagles brushed the freshly washed marine blue sky. This was nothing like my usual grocery run.
I wasn't sure what we would find when we arrived at the farm. I certainly wasn't expecting to see a massive pig pen perched over the water with a panoramic mountain view – but that's what we found. From every angle the farm matched the day in its picture perfection. The Little Helping and I were greeted by the friendly resident felines and enjoyed their curious company and a picnic while waiting for our friends to arrive. One of the 3 Sisters and her mother were ready to load us up as soon as we gave them the signal. The errand could have been completed in minutes but we opted for a more leisurely timeline.
The kids peeked at the sheep in the barn, and sought out a very noisy but well camouflaged turkey. We spent a good bit of time watching the pigs vie for the best spot at the water spigot and root around in the resulting mud. I couldn't get enough of their cute little tails. The Little Helping and I also went around to the back of the barns to get a good look at the cows. He observed right away that "meat cows are not very loud." We hadn't spent much time discussing the reason for our visit to the farm so I was pleased that he made the connection so quickly.
This being my first time purchasing an eighth of a cow I wasn't sure how much meat we were picking up. Our share turned out to be about 78 pounds and averaged $4.20 per pound of meat. I was happy to find the meat was beautifully butchered and vacuum packed in small portions. The family clearly takes a great deal of pride in their product. My medium-sized cooler was filled to capacity with ribs, top sirloin, London broil, ground beef, roasts, and soup bones. After loading the meat we reluctantly packed ourselves back into our respective vehicles and headed back toward the ferry dock. My anticipation of the stunning drive back to the boat made leaving the idyllic landscape of the farm only slightly easier.
It will probably take us close to two years to use all of the meat we now have stashed in our freezer. In the two months since our purchase we have made use of a few pounds of ground beef (see: Beefy Mushroom Stroganoff). I also rolled up my sleeves and got creative with some short ribs – stay tuned for that recipe it was fantastic! The meat is as delicious as the farm was charming. We were very lucky to have the resources to make this purchase.
For more information about 3 Sisters Beef in Oak Harbor, WA visit their website: www.3sistersbeef.com
Here are a few articles discussing the nutritional content and possible health benefits of grass fed and grass finished beef:
Have you purchased food for your family directly from a farm? Share your experience and give the farm a shout-out in the comments.


text:
Is Open File Discovery a Cure for Brady Violations?Tuesday, February 28th, 2012
Prompted by a tweet from Scott Greenfield this morning, we read a short editorial the New York Times did a couple of days ago, arguing that federal and state prosecutors should adopt open-file discovery policies, in order to limit Brady violations and promote justice. We'd missed it the first time around, because … well, because we never bother to read NYT editorials.
This one is decent enough, so far as it goes. The Times points out that it's up to the prosecutor to decide whether something is material enough to disclose under Brady, and so defendants very often don't learn of facts that might have been favorable to them. With full disclosure, perhaps fewer defendants who are over-charged or improperly charged would plead guilty, and perhaps fewer wrongful convictions might result.
Yeah, but …
Here's the thing: "Open file" policies are rarely that. Prosecutors' offices with open file policies rarely (if ever) make their complete file available to the defense. More often "open file" just means they comply with their existing discovery obligations without putting up too much of a fight.
Prosecutors in general are unwilling to engage in true open file discovery, and for reasons that are anything but nefarious. It would be like playing high-stakes poker in a game where you and only you have to show all of your cards, all of the time. Unless you have four aces and a joker every hand, that's a losing strategy. Defendants will be able to see all the weaknesses of the evidence with plenty of time to exploit them. People who "should have been" convicted will go free.
In practice, prosecutors only show their hand if it's going to make the defendant fold. Or to the extent that it will persuade the defendant to fold. Show the ace, but don't bother showing the 2, 6, 7 and jack.
Of course, it's a misplaced concern to worry that people who "should have been convicted" will go free. If the evidence does not establish guilt beyond a reasonable doubt, then it doesn't matter whether they did it or not, they don't deserve to be convicted. It's not even correct to think of whether they deserve to be convicted — the concern is whether the State is entitled to punish them. If the government's evidence, all of it, is too weak to convict, then the State doesn't get to punish. (What the defendant deserves only enters into it when asking how much punishment to inflict.)
The proper concern is whether (more…)


text:
Arcadia on Family Tree Circles
view: full | list
Journals and Posts
Looking for Abel McDonald of Haldimand Co,and Kent Co., Ontario Canada
Abel, or Abraham is my brick wall. I have been researching him for approx 6 years now. What makes this particularly difficult is there are 2 Abel McDonald's living in the Cayuga area at the same time, with sons named Abel. They were both born within 3 years of each other, in Upper Canada. One was married to Matilda ?? about 1847, with a son named Abel born 1866. This one is my gr,gr,gr grandfather. (It shows on Abel Jr's marriage registration father's name Abel, mother's name Matilda. He married Minnie Harcourt.
The other Abel married Ann Jane Hull and also had a son named Abel.
I have been unable to find any information whatsoever on Abel McDonald Sr, who his parents were, if he had any siblings.
I have Abel and Matilda in the 1871 Census in Kent County.
Any help would be greatly appreciated.
- Displaying 1-1 of 1 Journals
- 1
- of1


text:
Taco Bell will soon start marketing some of its "taco meat fillings" under an even more ambiguous name: protein.
That's the plan for a handful of restaurants in Dayton, Ohio, where the chain will test out a new "Power Protein" menu featuring four new chicken and steak entrees starting July 25. The rebranding is not about moving away from the word "meat" itself so much as it is about offering healthier menu options, according to the company.
All the new offerings will have at least 20 grams of protein and fewer than 420 calories, making them the first items "created with our new nutritional guardrails in mind," according to a Taco Bell press release. Among items on the existing menu, a Cantina Burrito with steak packs 780 calories; the vegetarian option isn't much better at 740. The Volcano Nachos, meanwhile, contain 970 calories and 1,670 milligrams of sodium, more than half the FDA's total daily recommended intake.
In April, Taco Bell announced that it wanted to start offering more balanced, healthy fare. The company said it hoped to have 20 percent of its menu contain one-third or less of the FDA's daily recommended guidelines for fat, sodium, and calories (based on the assumption that most people eat three meals per day) by the year 2020.
The rollout of a protein-branded menu comes months after tests found Taco Bell beef in Britain contained traces of horse meat. The company said its own testing confirmed that finding, but added that no U.S. beef was affected.
Back in 2011, Taco Bell endured another public spectacle over the quality of its meat after a class-action suit alleged the company's beef was really made of just 35 percent beef and a whole bunch of question marks. Taco Bell responded with an ad campaign to "set the record straight" that its meat was actually made with 88 percent beef, with the other 12 percent made with a "secret recipe."
After the lawyers who brought that lawsuit dropped their case, Taco Bell gloated over the victory, asking in another press release, "Would it kill you to say you're sorry?"


text:
Oct 10th - 11th — 10:00am - 5:00pm
Monadnock Art / Friends of the Dublin Art Colony presents the Art Tour each October during the peak of the colorful foliage season in southwestern New Hampshire. The Tour is self-directed, and it's free for the interested public. Art lovers from all over New England, and beyond, enjoy touring the beautiful countryside, following the distinctive Art Tour signs, and discovering the often tucked-away places where artists work. Studios are open from 10 a.m. to 5 p.m. each day.
The Tour travels through the towns surrounding the beloved Mount Monadnock: Chesham, Dublin, Hancock, Harrisville, Jaffrey, Marlborough, Peterborough, and Sharon. A remarkable range and diversity of the visual arts is represented through the work of the artists. Visitors tour the workplaces of painters and printmakers, potters and jewelers, sculptors, fiber artists, photographers, woodworkers, glass shapers, and more. Many artists offer work for sale, often specially priced for the Tour. For a look at a sampling of their work, please visit the Artists pages of this site.


text:
The Ragel State Machine Compiler is one kick-ass piece of software by Adrian Thurston that I've been using for about a year now. What Ragel does is use a mixture of C/C++/D/Java code and a state machine specification to produce a functioning state machine. Using Ragel you can process text for network protocols, program logic, programming languages, parsers, etc.
NOTE: This essay is old and just here for historical purposes.
Specifying Servers With Ragel
What I'm going to cover in this essay is some of the wicked weird ways I've been using Ragel to create rock solid network servers. I'm going slightly outside the bounds of Adrian's original intent, but he designed it to be flexible enough that Ragel just handles the new work easily. I'd say using Ragel has significantly cut down on the amount of work I do to design new protocols, and I'm dying to revisit old servers I've written.
The best thing you'll get from this essay is how state machines can make your networking code very bullet proof. Specifying your operations in a state machine has always been a great way to validate correct operation, but in the past it's been a major pain in the ass. Using Ragel and a few little tricks I've been able to easily specify some very stable software with minimal development effort.
Why Ragel Is Cool
This isn't anything new as there's been many software packages that do this, but what makes Ragel different is you can:
- inject actions at any point in the machine's transitions
- use code to alter the machine's state on the fly
- flexibly mix between regex specification and state chart
- produce a variety of machine styles like table, flat, or goto
- get varying degrees of control over the state minimization
- easily mesh it with whatever IO or character access code you have
- and it's fast as hell
All of this sounds super fancy, but it's really based on solid research done on state machines over the years. Adrian simply took all the best research and built a sweet little domain language for state machines. My favorite feature is how he cleanly merged the two styles of specification: regex and state chart. Regex style machines are common in text parsing, but state charts are better for specifying program logic. Having the power to use both makes for some damn good results.
What many people don't realize when they first look at Ragel is that its flexibility at specifying regular state machines means that it breaks a cardinal rule of lexical analysis: A regex cannot parse nested structures.
I won't get into why, but try it yourself sometime on an XML document. Use some fancy regex to pull out certain tags in the document then mix up the structure. You'll find yourself able to do it, but every little change requires a tweak. Eventually you get this monstrosity that can't be maintained. It's just better to realize a regex is bad at this and mix regex analysis with parsing.
Ragel however gives you an insane amount of flexibility at combining various complex machines so that you can get damn close to processing hierarchical structures. It's not complete enough to fully replace a LALR grammar generator, but it's advanced enough to handle almost all the nasty hand coded lexers out there. Ragel produces efficient machines from fairly complex specifications and outputs fast as hell code of varying styles.
Ragel In Mongrel
Ragel is the software behind Mongrel's speed and correct HTTP processing. With very little effort I was able to use Ragel to create a full HTTP processor that can process the protocol at insane speeds. From a developer point of view Ragel let me crank out a fully functioning web server in about a week. In fact, the number of changes to the parser in Mongrel only accounts for 4.2% of the total revisions.
Specifying the protocol with a clear state machine also made Mongrel more secure than other servers. Simply being more explicit about what is valid HTTP means that most of the security attacks that worked on Apache were rejected outright when tried on Mongrel. In fact, we'd put Mongrel behind Apache and watch Mongrel reject about 80% of the attacks while Apache let them right on through.
I thought, if using Ragel on the protocol parsing made it more secure by default, then what would happen if I used it on other parts of the server? What if I created a similar state machine for the socket connection state or the server's internal logic? Would that make things more secure as well? How hard is it to specify things this way?
This document is my first cut at answering these questions so other people can try them out and see if it works for them.
Enter Utu
Very quickly, Utu is my latest freaky experiment in writing better client/server software. It's the culmination of years of experience implementing various protocols and inventing my own. What I'm trying to do is simultaneously try out a weird ass idea and use that idea as a catalyst for doing an alternative protocol design and implementation.
You don't need to know too much about Utu really, but you need to understand a small bit to see why using a state machine is a great way to approach the problem.
Utu is a messaging server that has built-in cryptography and sender pays enforcement. Imagine an SMTP server that was always encrypted, could identify all senders and receivers by public keys, and could force senders to "pay" to send based on the opinion of receivers. In Utu this is called "hate calculations". However, since Utu is just a generic messaging server with a simple hub/spoke design, it can do SMTP, HTTP, or IM style communications.
The goal for Utu is to fight the griefers of the Internet with hate. As you communicate with people over Utu you can tell the Hub you hate them. The amount you hate them turns into a throttling hate calculation they have to do before they can continue talking to anyone.
Let's take an IRC channel as the best example of where Utu will help. Typically IRC channels are either chaotic free-for-alls or Nazi controlled kingdoms. It's also common that the operators of a heavily controlled IRC channel don't follow their own rules.
In Utu, a channel wouldn't have operators. Instead, when a griefer showed up to cause mayhem, all the participants would be able to "pay the hate tax". Once members pay to hate the griefer the Hub then starts throttling that person at the average paid level. The more people hate them the more they cook their CPU.
A fictional Utu conversation in this case might look like this:
1:00 < griefer > Ruby on Rails sucks!
1:01 * joe452 hates griefer at level 24
1:01 * frankyboy hates griefer at level 26
1:01 * argc12 hates griefer at level 32
1:10 * griefer's hate is now 27.3
1:11 < joe452 > that should shut him up
1:20 < griefer > Damn guys, it takes me 10 minutes to send a message. You suck!
1:21 * griefer leaves #rubyonrails
The idea is that joe452, frankyboy, and argc12 all payed to hate griefer by performing the same calculation he'd be penalized with. This payment is a one time thing, and after they do that the Hub turns around and throttles griefer permanently at 28 (rounded up) whenever he talks to that room.
State Machines In Utu
Utu already uses Ragel to parse its simple wire protocol (another document on that coming soon). The problem was if the hate calculations are to work they have to be maintained across socket connections. If griefer above is able to say something, disconnect, and then reconnect to avoid doing the hate calculation then it won't work.
What's needed is to maintain the state of griefer's connection between socket reconnects. If he was forced to pay some hate, and he disconnects, then when he comes back his socket is immediately put into the "Hated" state.
I originally coded this by hand and it was nasty. On a hunch I redid the same logic using a Ragel state chart and simplified it tremendously. The new state machine is just starting out but already I've got the following advantages:
* I can design and test the logic of a Hub Connection without actually having any network running.
* The new machine is explicitly specified so people trying to get around it can be booted.
* It's a hell of a lot easier to maintain and understand.
* I can actually use this as the specification for an Utu server. A single state machine diagram and a Ragel specification works much better than pages and pages of RFC documentation.
The rest of this document describes how I did it so that you can try it in your own servers.
State Machines
When I show people this stuff they look at me like I'm crazy. Here's a very recent chat with a bunch of high speed Ruby coders to demonstrate:
21:14 < zedas> http://pastie.caboo.se/29404 check this out
21:14 < zedas> that's the state machine for controlling an utu connection, with the hate
calculating process included
21:14 < zedas> then there's a unit test that basically just feeds various combos of events
(UEv_*) to test that the logic all works
21:15 < zedas> and then i can validate it with the graph ragel produces at the top
21:15 < zedas> and what's really cool is this syntax is very close to CSP syntax
21:16 < technoweenie> zooom
21:16 < technoweenie> right over my head :)
Dammit this stuff is not hard, it's just that nobody learns about state machines unless they take an obscure compiler design class. Very few universities teach state machines as a method of specifying the logic for a program. Even fewer cover Hierachical State Machines or State Charts.
To rectify this I'm gonna give you a crash course in state machines that will hopefully help you understand enough to get what's going on. Skip this if you know about FSM already.
State Machines Are Classes (kinda)
I think the best way to understand state machines is to see how they might map to an Object Oriented language like Ruby. Fundamentally all state machines deal with State, Events, Transitions, and Actions. These can be mapped to OO code like this:
- State – instance variables or data.
- Events – public methods or messages other people can send.
- Actions – private/protected methods or internal logic when something
- Transitions – changes to instance variables to move to a new state.
Take a look at this simple Ruby class below as an example:
001 class HelloMachine
002 def initialize
003 @message = "Hello World"
004 end
006 def say_hello
007 if @message then write_message else write_error end
008 end
010 def change_message(msg)
011 @message = msg
012 if !@message then write_error end
013 end
015 private
016 def write_message; puts @message; end
018 def write_error; puts "No hello available."; end
019 end
Each part of this class loosely matches what is in a state machine:
- message is the class's current state. It can be something to print or nil.
- Changes to message amounts to a transition, that's what change message does.
- say_hello and change_message are both events that cause something to happen.
- change_message changes the internal state (message) while say_hello changes the screen state by printing something.
- The if-statement in say_hello handles the two states of nil or not-nil.
- The private methods write_message and write_error are actions for the machine. They're called on "transitions" or to perform activity when an event happens.
This is how most code these days is written in the OO world, but even this little class has a problem: it's not explicit what
message can be. It's just assumed that people won't be stupid and set it to anything other than nil or a String. Ruby's puts is pretty powerful, but if you want to really make sure that it's used properly you'd have to add extra if-statements to change\_message so thatmessage can't be in an invalid state.
State Machines Are Explicit
What a state machine formalizes is mathematically how these four pieces (State, Events, Actions, and Transitions) fit together and then defines explicitly what is allowed. Rather than just letting `message be anything, a state machine defines a set of allowed values. That's it. Rather than allowing any event a state machine defines a limited set of events. Transitions are also restricted to what's defined in the state machine so that it's clear how a machine moves from one state to another and what causes that move. Actions are quite as well formalized since they're more of a practical addition to make state machines useful for processing.
What annoys most programmers about state machines (apart from having to learn tons of math) is that they require this explicit thinking and covering all the possibilities. When you code up some OO you just code. As you build it up you start adding more restrictions, cover the code in unit tests, and then assume it works. With a state machine you sit down and define all the possibilities, and then the state machine compiler you use makes sure it is always in this domain.
As a quick taste, I can take the above HelloMachine and rewrite it like this in Ragel:
001 Hello = (
002 start: (
003 say_hello @write_message -> start |
004 set_message_string @change_message -> start |
005 set_message_nil @write_error -> no_message
006 ),
008 no_message: (
009 set_message_string @change_message -> start |
010 set_message_nil -> no_message |
011 say_hello @write_error -> no_message
012 )
013 ) >initialize;
In this example we setup a new kind of event set_message_string and set_message_nil to indicate that you're only allowed to set it in two ways. There's also two basic states start and no_message. The > symbols mean transition to that state, and `write_error means run the write_error action before you transition.
Now, obviously this isn't much smaller than your original code, and you've gotta understand the new syntax to get it, but take a look at the following diagram generated by Ragel from this machine (click for larger image):
That's a fairly nice concise diagram for what is going on. The terminology might be a little foreign, but right away you can see when each action is called, what causes the transitions to the different states (states are in the circles), and how loops are handled. Trying to get a similar description from a larger set of source code would be impossible without some serious tools and it wouldn't even be close to as accurate.
Using State Machines In Protocols
When you design a server there's several places where you have to control determinism to make sure things stay sane:
- lexical elements (lexemes).
- syntactic structure (grammar)
- semantic meaning and analysis (logic)
Typically you see these terms used in the design of compilers but not really in designing servers. The thing is clients and servers do much of the same work that compilers do, it just has to do it dynamically and with malicious user inputs from untrusted sources. Why not leverage the decades of theory and practice in compiler design to make servers more robust?
With this in mind we can see using a typical lexer for lexical elements and a parser generator for the grammar should be easy. If you design your protocol right you can get away with just using Ragel for both of those as well, but some protocols will need a real parser generator. I recommend "Lemon":http://www.hwaci.com/sw/lemon/ if you need one that's good with memory and error handling.
For semantic meaning we're going to use the state chart style of machine specification for Ragel. This way of specifying a state machine uses labels and transitions inside nested state machines to make processing happen. You've already seen this style with the Ragel version of the HelloMachine we had above.
Utu Connections and Hubs
Our server will use two state machines to manage its operations. One will be for the Hub and will be very simple for now. Its job is simply dealing with new network connections, handling the start-up process, and stopping connections that are dead.
The Hub manages a set of Connection machines that manage the state of each connected socket. The Connection receives events from the socket and other input points and, depending on what needs to be done, makes transitions around the machine. The Connection does the majority of the processing and is only alive while the socket is connected.
Utu Hub State
When the Utu server starts up it needs to create a Hub that's listening on a socket so it can service connections. Part of this process involves loading a key either from a file or dynamically generating it. Once the cryptography is ready to go and the Hub is listening on the socket the Hub just has to keep processing clients as they open and close.
First important thing I do in "the hub.rl":hub.rl file (after some C boilerplate and action definitions) is to list the events we're interested in:
001 listen='L'; 002 gen_key='K'; 003 gen_key_done='k'; 004 key_file_load='F'; 005 conn_open='O'; 006 conn_close='C'; 007 done='D';
Normally Ragel operates on characters, but I can just as easily use these as events to the machine by defining similar enum definition in a C .h file. For now we've just got a bunch of characters that stand for each event that's allowed.
After we say what events are possible, I specify the state machine, transitions, and actions to call:
001 Hub = ( 002 start: ( 003 gen_key -> GenKeys 004 ), 005 006 GenKeys: ( 007 gen_key -> GenKeys | 008 gen_key_done -> CryptoReady | 009 key_file_load -> CryptoReady 010 ), 011 012 CryptoReady: ( 013 listen -> Listening 014 ), 015 016 Listening: ( 017 conn_open `open\> Listening | 018 conn*close `close -> Listening | 019 done -> final 020 ) 021 022 ) >begin %finish `!error; 023 024 main := ( Hub %{ printf ("\\n"); } )\*;
This is not really enough logic to warrant a full state machine approach, but the Hub will start to pick up more complex decisions and logic as Utu progresses. Remember I already tried to do just the above in hand written form and it was disgusting. Hopefully this will be much better.
Let's walk through this line by line so that you can start to understand how a Ragel state chart is specified and what each bit of syntax means. The Hub's machine is simpler than the Connection's so we'll be able to cover the various features and understand it. First up, here's the diagram from the above machine for you to take a quick look at (click for a larger version):
- 001: This starts off the Hub machine. The closing parenthesis is on 020.
- 002: The start: is a label. We're basically telling Ragel where the Hub machine should start its life.
- 003: This is the first event > state transition we're making. We're saying that when the genkey_ event happens, transition to the GenKeys state. In this case GenKeys: is on line 006.
- 004: A very important point is that each of these labeled states must have a ',' character separating them. Ragel won't report an error but the machine won't work right without it.
- 006: Here's our state for handling the key generation process. There's three events that this state can accept.
- 007: The first event we handle is another genkey_ so that we can report status during the lengthy key generation process. That's why this transitions> GenKeys again.
- 008: At the end of 007 there was a | (pipe, OR symbol) that separated genkey_ event transitions from this one, genkeydone.
- 009: Just like genkeydone event the keyfileloaded event causes the machine to transition toCryptoReady_ indicating it's done.
- 012014: These lines are just like start: except that we're waiting for the server's socket to be ready for listening. Once we get the listen event we transition> Listening.
- 016: Our Listening state that we'll now loop continuously inside until we get a done event.
- 017-019: Here we process the Connection open/close events, and the done event for when the hub shuts down. The new thing to notice here are the
open_ and _close statements. These say to run the actions named "open" and "close" and are how you make the machine do things for the program.
- 022: This line ends the Hub machine and then appends a few new actions. Ragel uses a funky but very cool syntax for actions that we'll cover in a second.
- 024: The last line simply tells Ragel that the main machine to run is Hub and a small action with the %{ .. } syntax prints out a newline when the Hub exits.
Take a look at the machine, the hub.rl file and the hub state diagram and bounce between them trying to trace how the actions move when different character events are handed to the machine. Using the above description of the syntax you should be able to use the diagram to sort out how the Hub works. If not, try picking an event and then matching it to lines in the diagram.
Actions In Ragel
Ragel's unique feature is that you can embed an "action" anywhere in the state machine, and at the same time control what stage of the machine should run the action. Ragel uses a wide array of symbols prefixed to the action name to indicate when it should be run. Let's take our machine above and some of the actions:
- >begin on line 022 means run the begin action on entry to the Hub machine.
- %finish on line 022 means run the finish action when the Hub is finally exited.
*`!error means run the error action at any point where there's an error.
- The '
' symbol also means on each transition that's not an entry or exit. So on 017 and 018 where we doopen and `close we're basically saying to run those for that event and then transition.
The Ragel manual has a ton more of these kinds of specifiers and the syntax can get very advanced, especially once you start adding error terms and such. For now just know in a state chart machine when you want to run an action put it after the event and prefixed with an @ just like on lines 017 and 018 above.
Generating The Code
If you take a look at the hub.rl file you'll see how this is all worked into the middle of some C code. When we want to generate this file into C code we run this command:
$ ragel hub.rl | rlcodegen -o hub.c
The resulting hub.c file isn't much to look at but it compiles and then you can start running it. We'll show how it's run and unit tested in the next section.
When you want to get a diagram like the ones I'm showing you run this command:
$ ragel hub.rl | rlcodegen -V -p -o hub.dot
$ dot -Tpng hub.dot -o hub.png
To make the above work you have to install the Graphviz diagram system and make sure dot is in your path.
How the ragel and rlcodegen tools work is that ragel reads your state machine specification and then outputs XML on stdout (you can save it to a file). This gets passed to rlcodegen which reads it and produces code of different styles and for different languages. For example I can have rlcodegen produce a goto style machine (they're fast) for Java with this:
$ ragel -J ajavathing.rl | rlcodegen -o -G2 ajavathing.java
You can also control other options so read the Ragel PDF for your version (down about mid page).
Unit Testing The Hub
A state machine like this has some interesting testing properties. First we can actually unit test the logic for the hub without connecting it to any other part of the system until we're ready. Second we can actually fuzz the machine to see how it reacts to invalid inputs. Finally, testing the Hub involves feeding it varying streams of events, so we can try out different usage scenarios really easily.
Here's a sample using the CUT test suite where we just test a simple run:
001 void __CUT__UtuHub_Hub_state()
002 {
003 HubState fsm;
005 const char simple_events[] = {UEv_GEN_KEY, UEv_GEN_KEY_DONE,
006 UEv_KEY_FILE_LOAD, UEv_LISTEN, UEv_DONE, 0};
008 hub_exec(&fsm, simple_events, 1, 1);
009 }
Notice on line 005 we setup an array of a bunch of C constants. Each of those is set to the characters in our events section above, so we're basically feeding characters to the HubState fsm. The hubexec_ function used on 008 above looks like this:
001 int hub_exec(HubState *fsm, const char *events, int initialize, int finalize)
002 {
003 if(initialize) ASSERT(HubState_init(fsm), "failed to init HubState");
005 while(*events) {
006 if(HubState_exec(fsm, *events) == -1) return 0;
007 events++;
008 }
010 if(finalize) ASSERT_EQUALS(HubState_finish(fsm), 1, "failed to finish machine");
012 return 1;
013 }
The hubexec_ method cuts down on repetition in the test cases (which we'll demonstrate more with the Connection machine later). What it does is:
- 003: Initialize the Hub with HubStateinit but only if asked.
* 005-006: Process each event until it hits a 0 indicating the last
event. It uses HubStateexec to do this.
- 010: Finishes the HubState fsm if asked to using HubState_finish.
Using this setup we can test out fairly complex usage scenarios with just arrays of events and some function calls to hubexec_ to make them happen.
Utu Connection State
The Connection machine (in the connection.rl file) is setup almost identically but is more extensive. There's no new syntax in the file, so we'll just show the events it handles and the machine and cover the new stuff.
001 open='O';
002 key_present='P';
003 key_reject='p';
004 key_accept='a';
005 peer_fail='T';
006 member_fail='M';
007 member_register='m';
008 close='C';
009 svc_recv='s';
010 msg_sent='e';
011 msg_queued='Q';
012 msg_recv='R';
013 hate_apply='H';
014 hate_challenge='h';
015 hate_paid='b';
016 hate_valid='V';
017 hate_invalid='v';
Nothing new here other than a larger number of events to deal with. Notice that I did reuse some of the events from the Hub machine so that the C code is easier to maintain. In an ideal situation the Ragel code wouldn't even have these specified and instead they'd just come from C.
Here's the Connection's state machine specification, which is twice the size of the Hub's specification, but doesn't have anything new except for a single nested machine used to handle hatred:
001 Connection = (
002 start: ( open @open -> Accepting ),
004 Accepting: ( key_present @key_check -> KeyCheck ),
006 KeyCheck: (
007 key_reject @establish_failed -> Aborting |
008 key_accept @tune -> Tuning
009 ),
011 Tuning: (
012 peer_fail @establish_failed -> Aborting |
013 member_fail @establish_failed -> Aborting |
014 member_register @established -> Idle
015 ),
017 Idle: (
018 msg_recv @recv -> Delivering |
019 msg_queued @queued -> Sending |
020 svc_recv @service -> Servicing |
021 hate_apply @hate_apply -> Hated |
022 close @close -> final
023 ),
025 Hated: (
026 start: ( hate_challenge @hate_challenge -> Awaiting),
027 Awaiting: ( hate_paid @hate_paid -> Validating ),
028 Validating: (
029 hate_valid @hate_valid | hate_invalid @hate_invalid
030 ) -> final
031 ) -> Idle,
033 Aborting: ( close @aborted -> final ),
035 Delivering: ( msg_queued @delivered -> Idle ),
037 Sending: ( msg_sent @sent -> Idle ),
039 Servicing: ( msg_queued @delivered -> Idle )
041 ) >begin %finish;
043 main := ( Connection %{ printf("\n"); } )*;
Which is diagrammed by Ragel as (click to enlarge):
There's nothing new in the Connection state, it's just more complex. Each event triggers an action and then transitions to a new state in the Connection machine.
The main difference is we use a nested machine for the Hated label on line 025. Just like Connection is a machine with a bunch of labels in it, each label can also point at a machine with labels in it. Hated is such a nested machine and it handles the process of starting a hate calculation (012), paying it (027), validating the hate (029), and then going back to normal processing (031).
The big thing with nested machines is that you can only transition to labels in that machine or to final. This is why the whole Hated state machine has a transition to -> Idle on line 031.
Another thing you should see is I didn't include the
!error on the Connection machine like in the Hub machine previously. The reason is this makes the diagram more difficult to understand since it produces those "DEF/error" lines in "the Hub Diagram":HubState.png which are really annoying initially. What I do is add the!error action after I've worked out the logic more completely.
Unit Testing Connection State
Testing the Connection machine is just like the testing we did with the Hub machine:
001 void __CUT__UtuHub_Connection_state()
002 {
003 ConnectionState fsm;
005 const char simple_events[] = {UEv_OPEN,
006 UEv_KEY_PRESENT, UEv_KEY_ACCEPT,
007 UEv_MEMBER_REGISTER, UEv_CLOSE, 0};
009 ASSERT(conn_exec(&fsm, simple_events, 1, 1), "simple events failed");
011 const char default_setup[] = {UEv_OPEN,
012 UEv_KEY_PRESENT, UEv_KEY_ACCEPT,
013 UEv_MEMBER_REGISTER, 0};
015 const char hate_paid_valid[] = {UEv_HATE_APPLY, UEv_HATE_CHALLENGE,
016 UEv_HATE_PAID, UEv_HATE_VALID,
017 UEv_CLOSE, 0};
019 const char hate_paid_invalid[] = {UEv_HATE_APPLY, UEv_HATE_CHALLENGE,
020 UEv_HATE_PAID, UEv_HATE_VALID,
021 UEv_CLOSE, 0};
023 ASSERT(conn_exec(&fsm, default_setup, 1, 0), "default setup failed");
024 ASSERT(conn_exec(&fsm, hate_paid_valid, 0, 1), "hate paid valid failed");
025 ASSERT(conn_exec(&fsm, default_setup, 1, 0), "default setup failed");
026 ASSERT(conn_exec(&fsm, hate_paid_invalid, 0, 1), "hate paid invalid failed");
027 }
The connexec_ function is almost identical to the hubexec_ function and it's just used to reduce repetition in the test code. In this test we're trying out different interactions like a simple test then a few tests based on hate.
Otherwise there's nothing more to the whole thing than just running different lists of events through the machines and making sure they are still operating.
When you start to compare the specification with the diagram you should be able to tell where the Hated machine starts working, how it's transitioned into, and follow the path of other events. Ragel uses numbers for the states, but with a machine this small it's not hard to figure out what's what.
Next Steps
With my new found knowledge of Ragel state charts I'm starting to work out the Utu machines and testing their logic more extensively. The next step is to obviously make them do something useful. What will happen is based on this diagram you saw previously:
You can see the Connection gets events from the Hub and the sockets it's managing. The events from the Hub are combinations of hateapply_ for transferring hate between people over the connections and open/close events for when the Hub needs to stop a Connection.
Events from the socket will come from two little threads that parse data off the wire into messages for the machine, or send out messages that are generated from the machine.
The follow-up to this article explain how these state machines are actually used in practice to make the server operate, and how well they do when compared with hand coding. I'll explore things like whether it reduced the code compared to the previous version, how changes were handled, how robust the new version is, and probably see what fuzzing the machine does to it.
Stay tuned.


text:
- Options
Temporarily Out Of Stock
Item # SCI0022
Don't get too bummed. This item is on the way and will be available for purchase as soon as it rolls into the warehouse.
Can't wait? Consider one of the other Seat Bags we have in stock.View Similar Products
Load master.
You can easily fit two tubes, tire levers, a patch kit, and a multitool, in the Anatomico Roller Saddlebag, but SciCon gives you the option to expand it from 820cc to 1610cc in volume. In its larger form, you can also easily hold energy bars, snacks, a telephone, and other personal items.
Its versatility doesn't stop there either. You can strap a small air pump or foldable tire on the outside of the bag too. The Anatomico Roller Saddlebag attaches to the saddle using the lightweight, quick release SciCon Roller system. It is available in black and reflective silver.
View more Seat Bags
Reviews & Community
- Familiarity: I've used it once or twice and have initial impressions
I had high hopes for this bag. I took this bag on a mountainous excursion in the Sierras, the bag was great in carrying everything I wanted it to, the expansion feature is a plus. Unfortunately on our last descent down a bumpy road the bag broke off the seat mount, the 4 plastic fasteners that attach the bag to the plastic sheared right off. The manufacturer uses the same fastener for its smaller (compact) bags all the way to the largest bag they make. I also own the compact saddlebag and have had NO issues. So, if you know that you will never hit a pothole on your ride I highly recommend this bag! :D
I have a question about the capabilities...
I have a question about the capabilities of this particular saddle. Would you be able to fit everything said in the description, for example; "two tubes, tire levers, a patch kit, multitool, etc.." ALL AT ONCE ? Because I've bought a SciCon saddle in the past but unfortunately it was limited in space, leaving me with enough space to fit a multi-tool& patchkit... So I've been riding without any spare tube haha ! But hopefully someone can shed some light on this matter. Thanks again !
This bag will fit two ROAD tubes, tire levers, a SMALL patch kit, a SMALL multitool. Its larger than the average Scicon bag at 820cc
Warning: attaches to seat post
I was looking for a saddle bag that didn't attach to the seat post, to avoid the velcro attachment that rips up lycra bike shorts. I thought SciCon only made bags that attach to the saddle rails directly, but this bag attaches to the saddle rails AND has the typical velcro attachment to the seat post. This is the only SciCon bag I've seen that has this feature. So, although I was excited about the large size of this bag, I returned it and replaced it with another smaller SciCon that only attaches to the saddle rails. This would be a great bag for a touring bike or cruiser bike where you're not wearing lycra bike shorts, though.


text:
Dasboard wrote:mutestorm wrote:There's one video I saw ...I think he dies in the end.
Eeerrr... Micheal Jackson - Thriller? http://www.youtube.com/watch?v=p_MuUcxHATo
No. But it has the same video and music.
Moderators: SecondTalon, Moderators General, Prelates
Dasboard wrote:mutestorm wrote:There's one video I saw ...I think he dies in the end.
Eeerrr... Micheal Jackson - Thriller? http://www.youtube.com/watch?v=p_MuUcxHATo
Dasboard wrote:What the heck?
heuristically_alone wrote:I want to write a DnD campaign and play it by myself and DM it myself.
heuristically_alone wrote:I have been informed that this is called writing a book.
It does sound a lot like that song and I remember seeing the Sunglasses At Night's video around that time. However, it's not the same song. I'm pretty sure when they said, "LIE!" in the song the screen flashed red and it said the word LIE on it, it was like a jury verdict type of thing I think.Microscopic cog wrote:I suspect Corey Hart - Sunglasses at Night?
Dystopian - Check
Sunglasses - Check
Eighties - Check
Techno-rock - Check
Lyrics - uuuuuuuuuh
Edit: The thing in this video is that the government forces people to wear sunglasses at night. What?
I saw it on MTV, like I said mid-80s. I don't think it was a remix but I was probably about 10 at the time and didn't know much about such things. I guess I either misheard the lyrics, or the song is so obscure that nobody has bothered to post them on the internet.Microscopic cog wrote:Damn, I was pretty sure I had it.
I tried searching on lyrics, but that didn't work out, so I looked up a list of dystopian videos which gave me Sunglasses at Night.
Couldn't find anything with such lyrics. Do you know anything about where you saw it? On TV or online?
Edit: Could be a remix of the song with also a different video?
Sexts From The Void wrote:i struggle to maneuver on a chessboard of dicks
poxic wrote:Halp! I can't remember the artist or title of a song that was popular (at least on YouTube, judging from how often it was linked to) a while back. It was built up largely from samples of the sounds of logging the Amazon rainforest, plus some instrumentation. There was a distinct anti-something feel to it (anti-logging? anti-capitalism?) including some scenes of glossy magazines being printed.
Sexts From The Void wrote:i struggle to maneuver on a chessboard of dicks
Alistair.S wrote:Ok I'm not sure what the song name is or whose it by. All I remember was watching the music video it was in slow motion and everything was happening backwards. It had a reporter or some type of civilian woman in some army camp and they come under fire and it ends with her alone in a room with a soldier shes in love with or something
I saw it a few months ago
Jar'O'Jam wrote:Howdy, xkcd!
I'm looking for a music video I saw quite a while ago ( lets say five to seven years ), which was set on the beach, and something tells me it had a sort-of "caveman" figure slowly going through the stages of evolution. It received heavy airplay from MTV2 or VH1, so it was something indie or rock-related. The name of the band or the song could've had the word "alpha" in it, but I might be making that up.
Thanks in advance!
SenseiMillion wrote:Hi I'm trying to identify a music video that I saw only once in the late 90's. It featured a man stumbling around a town looking sick, and basically puking up a bunch of gadgets, from a game boy to a mobile phone. I haven't got a clue what the music was like but the video was so well done I'd love to see it again! Any ideas?
Users browsing this forum: No registered users and 8 guests