text:
Friday, August 15, 2008
Turkey Adobo Quinoa Chili
Now that I've overcome my trepidation of cooking with quinoa, I wanted to try the protein powerhouse in something other than a salad or at a cold temperature. I browsed the web for awhile, and of course, remembered that Kevin of Closet Cooking had posted some tasty recipes using quinoa. If you haven't visited Closet Cooking yet, first you're a little crazy and second, you certainly should as Kevin posts tempting & creative recipes nearly everyday. Using his Black Bean and Quinoa Chili as an inspiration, I embarked on creating my first quinoa chili.
Trying to make Kevin's recipe by heart, I knew I would forget some essential ingredients, but I tend to like cooking soups/chili on the go. Well, I erroneously thought Kevin hadn't included water in his recipe. While mixing the ingredients, I couldn't get over how thick it was. Though he used 2 cups of water, I only used 3/4 cup so mine's pretty thick in comparison. I tend to like it a little thick so feel free to add water if you're more of a soup gal/guy. I also added in some extra ground turkey I had on hand and liked the heartiness it adds. If you omit the turkey, you have an easy vegetarian meal on your hands!
Hope you all have a great weekend! It's been a tough week for me in between work issues & condo flooding so I'm glad some rest is finally on the way!
Turkey Adobo Quinoa Chili
Adapted from Closet Cooking
1 cup quinoa (rinsed thoroughly) + 2 cups water for boiling
1 tablespoon oil
1 onion, chopped
4 cloves garlic, minced
1/2 lb ground turkey
1/2 teaspoon cinnamon
1 tablespoon chili powder
1 tablespoon cumin
1 28 ounce can crushed tomatoes
3/4 cups water
2 19 ounce cans black beans, drained and rinsed
1 red bell pepper, chopped
1 zucchini, chopped
1 chipotle chili in adobo sauce, chopped with 1 tbsp of sauce
1 teaspoon dried oregano
salt and pepper to taste
1 cup corn (fresh, frozen or canned)
1 handful cilantro (chopped)
1. Rinse quinoa thoroughly in a fine sieve until water runs clear. Toast the quinoa in a dry skillet for approximately 2 minutes. Combine quinoa and and 2 cups water in a saucepan and bring to a boil. Reduce to a simmer, cover and cook for about 15 minutes.
2. Heat the oil in a large wok. Add the onions and saute until tender, about 2 minutes. Add garlic and ground turkey. Continue to saute until turkey is no longer pink, but not cooked through completely.
3. Add cinnamon, chili powder, cumin and continue to saute an additional 4 minutes.
4. Add 3/4 cup water, tomatoes, black beans, peppers, zucchini, chipotle chili & sauce, oregano, salt and pepper and simmer for 20 minutes.
6. Add the quinoa and corn and simmer for an additional 5 minutes.
7. Remove from the heat and stir in the cilantro.
28 comments:
- LizNoVeggieGirl said...
I looove quinoa, chili, AND lots of spice, so that's a perfect recipe! :0)
- August 15, 2008 at 11:41 AM
- That Girl said...
That's quite a mouthful! I should add quinoa to my chili!
- August 15, 2008 at 1:02 PM
- LucyinStLou said...
You know...I've never cooked with quinoa. I keep thinking that I need to experiment with it since it is supposed to be so healty. Perhaps this recipe will be my inspiration!
- August 15, 2008 at 2:13 PM
- vanillasugarblog said...
I remember kevin making that! Chili that's good for you, I'm game! Where should I sit, I brought my own bowl! lol
- August 15, 2008 at 3:09 PM
- MrOrph said...
What's KEEN-wa? :-)
Now that is one great looking chili. Perfect for summer.
Don't you just love getting that perfect food into your diet? I just got two more bags from RG AND I found several varieties at WF. It's on now! - August 15, 2008 at 3:52 PM
- test it comm said...
Your quinoa chili looks good! Sometimes I like a nice thick chili as well. I like the addition of the turkey.
- August 15, 2008 at 4:55 PM
- Aggie said...
I'm still working on my quinoa making abilities...I've only made it once as a side dish and it was good...I need to try some new things with it. This looks great! I love one pot meals like this!
- August 15, 2008 at 6:28 PM
- Prudy said...
I've got to get my hands on quinoa before the fall when chili is on the menu every week. The shrimp and orzo look so good and what a crack up about fat free yogurt.
- August 15, 2008 at 9:37 PM
This does look good and I like the thick chili too, I'll stick with the 3/4 cup.
- August 15, 2008 at 11:30 PM
- grace said...
i like my chili thick, fiery, and beany, so i'm loving this. it's purty and healthy and easy and altogether sensational. very nice, even on a toasty day. :)
- August 16, 2008 at 6:07 AM
- Garrett said...
Hmmm, I've never used quinoa...sounds enticing. Randomly, I was looking for a vegetarian chili recipe (I'm not even vegetarian), so this could be a big help. I might have to try it out!
- August 16, 2008 at 9:15 AM
- Maria said...
your chili looks good even on a hot day
- August 16, 2008 at 5:19 PM
- RecipeGirl said...
I'm still a quinoa virgin. Never thought to use it in a chili though! Nice idea...
- August 17, 2008 at 8:08 AM
- Sophie said...
You have me beat, I've never used quinoa before :). Looks so hearty!
- August 17, 2008 at 3:06 PM
- Clumbsy Cookie said...
Ok you've convinced me, i'll buy quinoa next time I'm in the supermarket!
- August 17, 2008 at 3:56 PM
- La Bella Cooks said...
I am going to have to give quinoa a try as well. This looks delicious and healthy. Can't beat that!
- August 17, 2008 at 6:30 PM
This looks amazing! I am so excited to make this for a fall football food!
Your pictures are amazing too! - August 17, 2008 at 7:35 PM
- Emily said...
He has the most perfect pictures on his blog. I'm jealous.
This looks very good! Was it spicy?
Sorry about the flooding. - August 18, 2008 at 1:59 AM
- Jenny said...
Now this looks so tasty! I know I'd be a fan for sure. Bring on the quinoa!
- August 18, 2008 at 4:42 AM
- Katie said...
this looks so good. i love coming to your blog to get some great food ideas. i loved the last one with the shrimp too, so delicious.
- August 18, 2008 at 5:56 AM
- Sharon said...
veggiegirl - agreed!
that girl - I always come up with these long, preposterous names, huh? :)
lucyinstlou - You should try, its just as easy as cooking rice and soo much more healthy!
dawn - I'd be happy to make you some, anytime!
mrorph - are you challenging me to a keen-o-ah cook off?
kevin - thanks for the great recipe & inspiration!
aggie - this is only my 2nd attempt. I'm eager to try different variations as well
prudy - I think I'll be adding a touch of quinoa to other chili recipes just to boost the protein factor
noble pig - I like all my soups thick!
grace - as long as you crank up the a/c, chili is great in the summer!
garrett - hope it works out. Just omit the turkey and you have a veggie recipe.
maria - thanks!
recipe girl - I'm sure you could come up with a creative use for quinoa.
sophie - I'm on a mission to have everyone try it!
clumbsy cookie - yea! Glad to hear it.
bridgett - I'm sure it'd be good as a side dish to some of your yummy Italian creations.
healthyhostess - that's a great idea!
emiline - nope, not too spicy. Nothing I could is particularly spicy :)
jenny - it sure is healthy...can't go wrong!
katie - thanks so much!! - August 19, 2008 at 5:49 AM
This looks lovely, I wish I could get my husband into whole grains - I try to "trick" him sometimes (whole wheat pasta, brown rice), but it never works. :)
- August 19, 2008 at 5:52 AM
- tigerfish said...
you are one hot lady...or wife? :P
- August 19, 2008 at 6:03 AM
- Mary said...
I might try to make this with a meat substitute like Match or the Morningstar Farms fake meat crumbles. It looks so tasty!
- August 19, 2008 at 8:57 AM
- Elle said...
Condo flooding? Oh no! Well, at least you're still eating well--this looks incredible.
- August 19, 2008 at 12:35 PM
That sounds great! One of these days I'm going to buy quinoa and try it.
- August 29, 2008 at 2:57 PM
- lucysmom said...
I made this the other day and it is amazing. I loved it. The only thing I would do different maybe is have more liquid. It really didn't have much after the first day. It was great for scooping up into baked tostidos. Thanks for sharing this recipe. I love it and will make it for many more years to come.
- December 15, 2008 at 6:24 PM
- Dazy said...
This is something new to me. This recipe is really going to keep me busy in the kitchen with all its glamor. This is another must for the weekend!
- May 26, 2009 at 12:41 AM


text:
Here is the direct MP3 download for the Evil Genius Chronicles podcast, January 27 2015. This is my interview with Garrick van Buren about his book Rebuilding Blocks. It is a fascinating book that combines personal anecdotes with a business and self-help book as well as a strategy guide for the game of Kubb.
Links mentioned in this episode:
- Garrick's personal site
- Rebuilding Blocks at Amazon
- Planet Kubb, many Kubb resources
- First Crack podcast at Archive.org
- Open Loop podcast
- Auphonic podcast production tool is so good!
- Dog Days of Podcasting
NewSponsor: Audible.com! Go to audiblepodcast.com/egc for your free trial and free download! -
is nowwas our sponsor: (Still) Use coupon code EGC to save 10% on domain registrations - Theme song provided by the Gentle Readers
- My Google+
You can subscribe to this podcast feed via RSS. To sponsor the show, contact BackBeat Media. Don't forget, you can fly your EGC flag by buying the stuff package. This show as a whole is Creative Commons licensed Attribution-NonCommercial 3.0 Unported. Bandwidth for this episode is provided by Cachefly.
Podcast: Play in new window | Download

subset: commoncrawl


text:
Karl Klessig holds a cow's activity collar on his family's farm Wednesday Aug. 28, 2013, in Cleveland, Wis. The collar carries a motion detector and microphone that picks up the sound of chewing. Data from the collar is scanned and sent to a computer when cows leave the milking parlor. Klessig and his partners use the information to determine when the cows should be bred. More farmers using these types of systems to reduce reliance on drugs in breeding and cut labor costs. (AP Photo/M.L. Johnson) |
MADISON, Wis. (AP) — Every step a cow takes and every mouthful she eats at Saxon Homestead Farm is recorded by an electronic device on a collar around her neck. Since cows in heat move more and digest less, farmers can use the data to determine when to breed them.
Karl Klessig, whose family has a dairy farm and cheese-making business in eastern Wisconsin, describes it as a kind of natural family planning system for bovines.
Activity tracking systems have been available for decades, but interest in them has grown as the technology becomes more accurate and easier to use. The collars don't eliminate the use of hormones because some cows, like some people, have difficulty getting pregnant, but farmers said the systems reduce drug use, help cut labor costs and provide an added benefit — early warnings of illness.
The collars are designed for and almost exclusively used by dairy farmers who must keep cows pregnant to keep the milk flowing. If the animals don't give birth about once a year, their milk will dry up, similar to a woman who stops breastfeeding. Cows then cost more to feed than they earn, and eventually, they're sold for slaughter.
Klessig's family was among the first in the U.S. to invest three years ago in a system sold by Israel-based SCR. Their collars carry motion detectors and microphones that pick up the sound of chewing, which reflects digestion. Cows leaving the milking parlor go through a gate where the electronic boxes on their collars are scanned. The gate sends cows in heat in one direction and the rest in another. A vet comes to the farm each morning to breed the animals that are ready.
"For us, with our cheese factory, we want to be as wholesome and natural as we can be," said Klessig, whose family milks 550 cows in Cleveland, Wis.
Successful breeding usually involves artificial insemination within a matter of hours after cows ovulate. Some farms use a combination of hormones to induce ovulation so the cows can be bred at the right moment. Others have workers watch cows for signs of heat; monitoring systems are a labor-saving alternative.
Stephen LeBlanc, an associate professor at the Ontario Veterinary College, said during the recent World Dairy Expo in Madison that the attraction of a monitoring system is that farms that don't want to use hormones don't need as many workers to watch the cows.
"There's really no public health threat at all from the hormones that are used in cows for managing reproduction," LeBlanc said. "Nevertheless, it's absolutely appealing to producers to not need to employ that tool. It's more pleasant for them; it's more pleasant for the cows."
There are no totals for how many dairy farms use activity monitoring because most companies don't release sales. But Tom Breunig, SCR's general manager in the U.S., said 2 million cows worldwide wore his company's collars at the end of last year, and that number was expected to double in two years.
Activity monitoring doesn't work on all cows because some don't show signs of heat, and others may not ovulate at all without a hormonal boost. Klessig said it has been effective with 95 percent of his herd — well above the 70 percent that Paul Fricke, a University of Wisconsin-Madison dairy science professor, said is typical.
Dejno Acres in Independence, Wis., has used activity monitors for 15 years, but it bought a new system two and a half years ago that provides more accurate, timely information and is easier to use, herd manager Monica Dejno said.
Older systems were essentially pedometers that counted cows' steps. Newer ones track three-dimensional motion, catching turns and other horizontal movements the earlier technology may have missed. Some collars, like the ones Dejno's family bought from the Swedish company DeLaval, transmit data wirelessly every hour, and new software converts the data into easy-to-read graphs.
Unbehaun Acres near Richland Center switched from a hormone program to activity monitoring last year, paying $18,000 for a system that covers 220 cows.
Herd manager Lucas Unbehaun said his farm has cut its drug costs and increased its conception rate, but he's been even more impressed by the system's ability to flag a drop in activity, which is an early sign of illness.
"We would have eventually have noticed that (the cow) was ill, but the system shows you a lot faster," Unbehaun said, adding, "I think for us, it's made a vast improvement and will hopefully continue to do so."
SCR: http://scrdairy.com
DeLaval: http://www.delaval.com


text:
Built at the Internet Archive
Sites and collections from this organization are listed below. Narrow your results at left, or enter a search query below to find a collection, site, specific URL or to search the text of archived webpages.
Page 1 of 1 (1 Total Results)
Sort By:
Collection: Opioid Epidemic web archive
Description: blog post titled, "Launching the Opioid Mapping Initiative," by Jeremiah Lindemann published on the New America Website on October 17, 2017. Linderman is responsible for creating the Opioid Mapping Initiative, an interactive map that allows families to share their stories and a photo of their loved one. Linderman ultimately hopes that map will help to create awareness of addiction and explain that it impacts people from all walks of life.
Loading Wayback Capture Info...
Loading video data...
Creator: New America , Lindemann, Jeremiah
Language: English
Type: Blog
Collector: National Library of Medicine (U.S.)
Page 1 of 1 (1 Total Results)


text:
The campus is built around former railway lines and train repairshop buildings, and it has become a privileged space for teaching, research, cultural development and social interaction among members of UNSAM's community.
It has developed strong, research-led partnerships with a range of leading universities in the world: UNSAM has signed nearly 400 international agreements, which have resulted in various research projects, as well as students and teachers' exchange programs. The University is constantly open to new partnerships based on academic exchanges, teaching, joint research projects, special programs and innovation with universities and institutions.


text:
Some time ago, an online discussion of NFP took an interesting turn. I remember it especially because I got off a pretty good zinger. (And that's what we Catholic bloggers do to advance the kingdom of God: We zing people.)
The Other Guy's argument went like this: Sure, sure, the Church permits NFP to space out pregnancies in serious circumstances. Because we are a stiff-necked people, she even turns her head while we stretch the definition of "serious." But really, if we truly want to follow God, shouldn't we learn to let go? Isn't the lesson of faith that God will provide for our needs, whether emotional, physical, spiritual, or even financial? NFP, more often than not, is a crutch that interferes with our radical dependence on God. He is calling us to loosen up that death grip of control and abandon ourselves more generously to his will.
Orthodox. Faithful. Free.
Sign up to get Crisis articles delivered to your inbox daily
The answer, of course, is that He is calling some people to give up control. To others, the call is entirely different: Take charge, be responsible, grow up. Some people are already quite good at living with abandonment, thank you very much, and what God wants from them is a little self-control. It's not even necessarily about having or not having a baby: It's about taking responsibility for your life in general.
Different people, different situations, different lessons to be learned.
And I was gratified when several people said, "Wow, thanks, you're right. I never thought of it that way before." You're welcome, and may God bless you and someday make you as insightful as I am.
I had it set in my head that it was a battle of prudence vs. generosity — that some people were called to one and some to the other. And secretly, I thought that we overly abandoned types had chosen the better part, even in our weakness. I admired people with prudence in much the same way as I admired Superman for flying: Nice trick, and I wish I could do it — but who really wants to be Superman? Is this a guy who could fall in love? How clean he is . . . and how cold.
Prudence, like temperance, is such a dreary virtue. Justice and fortitude are about getting stuff done — but prudence and temperance are all about holding back, clamping down, cutting back, saying no. It's all about the negative: wait, stop, think, don't do it, hold your horses, cut it out.
Or . . . not.
In this season of our life, it seems that another baby is a joy to be postponed for a while yet. With growing astonishment, I'm discovering that there is no tension between prudence and generosity. Prudence is a kind of generosity. Of course it is! Everything that comes from God overflows. What is the Promised Land? Not a static place, a spot on the map, but a state of motion, of spilling over — a land flowing with milk and honey. And if virtuous behavior imitates God, then how could some virtues be more petty than others?
You can do it wrong. You can exercise self-control with a mean heart, with a bitterness of restraint, or with fear. But that's not true prudence, any more than it's true fortitude to sit dozing in a car that someone else is steering through the storm. With prudence comes an openness of heart, that same sensation of welling up, of cracking open and flowing over that often comes (but doesn't always hang around!) when we immerse ourselves in the will of God. I did not know how much warmth and love were at the heart of this misunderstood virtue.
I know it's not all about the feeling. I know (or, at least, I'm learning) the dangers of depending on those occasional spiritual gifts of religious emotion, discussed so lucidly by Jen Fulwiler. On the other hand, when we decided to be more prudent, I wasn't expecting any emotion at all. I was expecting something utterly dry and mechanical, something contrary to my nature, something foreign to my relationship with my husband.
Instead? It's like one of those dreams where you're wandering around on the top floor of your house, looking and looking for something — and what is this? An entirely new room. You open the door, and step inside — and there you find what you were looking for.
There are no petty virtues. Everything that comes from God is a form of love. Why do I need to learn this so many times?


text:
Try These Make-Ahead Freezer Meals Perfect For Weeknights
Meal prep is great for knocking out various components to use in breakfast, lunch, and dinner throughout the week, but complete make-ahead freezer recipes can be even better for those nights you just can't manage anything beyond reheating.
It's hard to get a home-cooked meal on the table after a long day at work, after all, especially if you have a commute that's 30 minutes or longer—and even now that many of us don't have commutes, working from home (particularly if you're also wrangling kids all day) doesn't necessarily make it any easier.
But you value homemade dinner, and all the benefits that come with it: healthier meals, conversation with your loved ones, a feeling of closeness and connection, saving money, and better eating habits in general. The solution for many of us is to make a big batch of something on Sunday and use it for the week. Even better? Double your freezer-friendly meals whenever you're already cooking, and freeze the extra half for another time, next week or next month.
Related Reading: 5 Big Batch Recipes and Tips to Save You From Cooking Every Single Night
What Freezes Best
- Hearty soups and stews (e.g., beef and barley, chili, lentil, bean)
- Long-cooked braised dishes (beef short ribs, osso buco, curries)
- Casseroles and baked pastas (e.g., sausage and peppers, enchiladas, mac and cheese, lasagna)
- Juicy meats cooked in (or to be served with) sauces
- Pot pies
Related Reading: 10 Staple Foods You Can Freeze Besides Meat and Produce
Tips for Freezing Food
- Divide recipes into whatever portion sizes work for your needs before freezing. If you have space, make multiple batches at once, then divide.
- Be sure to label each package with contents, preparation date, and reheating instructions.
- Another trick is to line small gratin dishes with non-stick foil (or spray it with oil), fill the dishes, and freeze. Once the food's frozen, you can peel the foil off and pop the frozen "bricks" of food into freezer bags, which stack neatly. When it's time to reheat, the packets fit right back into the gratin dishes for serving. It's an idea Chowhound funwithfood gave us.
- Small foil takeout containers and lids from a restaurant supply house are another easy solution. These are the right-size for single servings of entrees or doubles of soup and they're easy to freeze, stack, and reheat. Sixteen-ounce hot/cold cups (sold at Costco) are also good for freezing and reheating soups.
- Always allow food to cool completely before freezing it.
Related Reading: The Best Way to Store Food in Your Freezer
Make-Ahead Freezer Meal Recipes
Visit our recipe page for more make-ahead weeknight dinner ideas, and check out the Chowhound community for more favorite freezable meals. See Rachael Ray's Top 20 Freezeable Recipes too. And consider our favorite recipes to freeze below:
1. Jerk Turkey Chili
With its not-so-secret ingredient of a wedge of bittersweet chocolate to add depth, this chili develops even more flavor after a day or two, so make some on the weekend and stash it in the fridge or freezer to eat later in the week. Get our Jerk Turkey Chili recipe.
2. Roasted Butternut Squash Soup
This simple fall-winter soup using one of our favorite squashes is pretty straight-forward to make. It gets a bit more complexity with sautéed onion, apple, and sage, and a bit more rich with a hit of heavy cream. Once you let it cool, store it in the freezer for up to a month. Get our Roasted Butternut Squash Soup recipe.
3. Swedish Meatballs
Make and freeze these meatballs in their creamy sauce. When it's time for dinner, all you have to do is boil those egg noodles and defrost the saucy meatballs. Add vegetables if you wish. Get our Swedish Meatballs recipe. (Or try IKEA's Swedish Meatball recipe!)
4. Slow Cooker Split Pea Soup
This filling, comforting soup infused with ham flavor from a bone or hock is easy to make in a Crock-Pot first off, and then it's easy to freeze for the week. Get our Slow Cooker Split Pea Soup recipe.
Related Reading: 21 Cheap & Easy Recipes for Breakfast, Lunch, and Dinner
5. Cheesy Enchiladas
You can make the enchiladas through step 3, then cover and freeze for up to two weeks. To finish, bake it at 350°F uncovered and straight from the freezer, until the cheese is all melty and awesome, about 40 minutes. Get our Cheesy Enchiladas recipe.
6. Chinese Brisket and Turnip Stew
Brisket can handle time in the freezer. It's already falling apart, and it's supposed to. You can swap turnips for daikon radish or another hearty root vegetable. Get our Chinese Brisket and Turnip Stew recipe.
7. Easy Spinach Lasagna
If you're new to making lasagna, this recipe is a good starter one. Learn the basics and then throw in the twists and substitutions. You can freeze it cooked or uncooked. If you freeze it cooked, let it cool down first, and then cut it into single servings, placing the portions in Ziplock bags or Tupperware. If you freeze it whole and cover it with aluminum foil, spray or rub oil on the foil so it doesn't stick to the cheese and you can get it off when it's frozen. For unbaked versions, people often don't cook the noodles beforehand to avoid mushiness. Get our Easy Spinach Lasagna recipe.
8. Cauliflower Green Curry
Besides the name sake vegetable, you get green beans, yellow onion, and chickpeas in there, and the sauce made with Thai green curry paste (bottled or canned … it's a weeknight, OK?), coconut milk, soy sauce, garlic, and lime juice. You might want to use only half the salt suggested in the recipe, and then add more after it's ready, to taste. Get our Cauliflower Green Curry recipe.
9. Beefy Macaroni Casserole
No one will complain about this simple, comfort food classic. It's like Hamburger Helper, but from scratch and without all the time and effort if you're pulling it out of the freezer to reheat. There are peppers, onions, and tomatoes in there too, so it's not just meat, cheese, and pasta. Get our Beefy Macaroni Casserole recipe.
10. Pressure Cooker Cola-Braised Beef Short Ribs
Meat like short ribs in sauce does well when reheated, and it can be time-consuming to start from the beginning on a weeknight. But not so much if you make it in an Instant Pot—or, even better, make it ahead and pull it out of the freezer to thaw and reheat. Get our Pressure Cooker Cola-Braised Beef Short Ribs recipe.
11. Easy Lentil Soup
Use any color of lentils, except the red ones, to make this soup that you can adjust to your liking. It's got the fiber, protein, and vegetables you need, all in one bowl. Get our Easy Lentil Soup recipe.
12. Broccoli, Mushroom, and Gouda Quiche
You can switch up the add-ins depending on what you have on hand, but make sure your baked quiche is fully cooled before you freeze it, and bake it straight from frozen when ready to eat (i.e, don't thaw it first). See how to freeze unbaked quiche too. Get our Broccoli, Mushroom, and Gouda Quiche recipe. Or freeze our Bacon Cheddar Mini Quiches for snacks or impromptu appetizers.
13. Empanadas
Empanadas are great on the plate or on the go. These handheld pies can be filled with whatever you like (beef, chicken, veggies, even breakfast), and a big batch will last a while. You can freeze them before or after baking; if freezing before, skip the egg wash in the recipe and apply it just before you bake them later on. One on its own makes a great lunch or snack, while two or three (depending on how big you make them) plus a salad is a perfect easy dinner. Get our Empanada recipes.
Written by Amy Sowder and provided by CBS sister site Chowhound.com. All featured products are curated independently by Chowhound editors. When you buy something through their retail links, they may receive a commission.
for more features.


text:
As regular readers of this blog might remember, I occasionally make mention on here of
books that really strike me, that I feel ought to get as much attention as is
possible. Well, this post is about just
such a book (which, even though I only finished it yesterday, has become my joint favourite read of the year).
When I was at FantasyCon, I went to the Spectral Press
readings (my own Spectral Press chapbook - sold out in advance of publication -
was delivered over that weekend too), which was a two-hander between Simon
Bestwick, a friend of long-standing whose work I admire a great deal and Stephen Volk, a writer I am - to be frank
- somewhat in awe of. He was reading
from a novella called "Whitstable", which wouldn't be published until May
2013 and as he described the way his lead character smoked, wearing a glove, I thought 'that's
Peter Cushing' - and it was (May 2013 marks the centenary of his birthday).
The reading whetted my appetite and so when Simon Marshall
Jones, head honcho of Spectral Press, mentioned that the book was available for
pre-order, I put my name down and suggested that if it was possible to read it
beforehand, I'd love to do so. Simon
sent me the ms as a Word document and I read it quickly, enjoying and savouring
every last word.
This is my review, which I posted at Goodreads.
In 1971, a recently bereaved Peter Cushing locks himself
away in his Whitstable home, intending to cut himself off from day-to-day life
in order to grieve privately. For years,
as the star of numerous horror films, he has despatched creatures of the night
with their fake fangs, pelts and blood but after a trip to the beach and an
encounter with a young boy, he quickly discovers that some monsters are
human. With grief weighing heavily on
him but a strong desire to protect the innocent, Peter Cushing now faces a very
real terror.
Using certain real-life events, Volk deftly creates a loving
- if occasionally harsh and unblinking - fictional biography of an actor most
(if not all) genre fans are familiar with and through the strength of his
writing, we come to love Peter Cushing, feeling his immense hurt and pain and
wanting the absolute best for him.
Interwoven with this is a beautifully underplayed horror story - with no
ghosts or ghoulies - where Cushing comes up against Les Gledhill, a man whose
step-son-to-be thinks of as a vampire but is, in reality, much worse. Their two key exchanges, once on the doorstep
of Cushing's house and another, at the local cinema, are fantastic, with
tour-de-force writing that managed to enthral, terrify and appal this reader. In addition, the latter confrontation takes
place whilst the two men are watching "The Vampires Lovers" and Volk
intersperses scenes from the film in a way I've never read before, that is
about as cinematic as it's possible to be on the printed page.
Richy detailed (1971 is lovingly and painstakingly
reproduced and even if you've never been to Canterbury, you have been in that
tea shop), with some amusing exchanges (Carl, the boy who starts it all off,
can't quite work out what connection this Peter Cushing person might have to
Van Helsing ) and nicely written memories (of Morecombe & Wise and the
personalities he worked with on the Hammer films) this is the kind of book you
wish you could read anew each and every time.
Darkly elegant and full of almost poetic moments ("Cushing
trembled a smile…"), showing the horrors of life and the consequences of losing
a beloved whilst also remaining strong in the belief that love is forever, this
is a truly beautiful book, scary, moving and hopeful in equal measures, that
should be read by everyone who has even a passing interest in the horror
genre. Highly recommended.
If this sounds like your cup of tea, the book can be
pre-ordered direct from the Spectral Press website here


text:
Business Intelligence Resources
Explore your data in memory.
The power of SAS® Visual Analytics lies in its in-memory analytics engine, which delivers fast, accurate insights.
Watch video
We're the world's largest independent vendor in business intelligence.
SAS® Business Intelligence offers a flexible portfolio of solutions to meet the needs of any enterprise, department or small-to-midsize business. We deliver approachable analytics and self-service capabilities while providing insights where users work most – through mobile devices or in applications.
Learn more about our solutions
Explore More on SAS Business Intelligence
SAS is a Leader in The Forrester Wave™: Customer Analytics Technologies, Q2 2022.
SAS Visual Analytics allows employees to just pull out an iPad® and show the clients all the data, face to face, and answer any questions they might have. That exchange of knowledge on a personal basis is crucial.
Colin Nugteren, Chief Analytics Officer at DirectPay
SAS® Visual Analytics
Visually explore your relevant data and get insights that inspire action.
Contact us to learn more about SAS Business Intelligence.
Need additional information? Get details on solutions, licensing, deployment and more.
Ready to get started? Take the next step toward getting more value from your data.


text:
Skip to Content Skip to Main Navigation Skip to Footer Skip to Search
You Are Here: University Sports Center
The University Sports Center, HSZ for short, is a central institution at RWTH Aachen and organizes qualified sports and movements offers based on the needs of the Aachen universities. The HSZ is supported by the student Sports Department at the Aachen universities, SR for short. The SR is the elected representative body for university sports of the RWTH and FH Aachen students.
more...zu: RWTH Aachen University Sports Center
more...zu: Press
more...zu: Partners
more...zu: Projects
more...zu: Partner University of Top-Class Sport
more...zu: Sponsoring
more...zu: Academic Credit for FH Aachen
more...zu: Team
more...zu: Jobs
more...zu: Information for Instructors
more...zu: Photo Galleries


text:
In another stunning failure of leadership, President Obama today asked Congress to delay the scheduled across-the-board spending cuts, including those that will decimate the national defense budget—but once again offered no specific policies that he would support.
"Obama did not outline a specific proposal," wrote The Washington Post, but he said that "Congress should adopt measures to postpone the automatic spending reductions, known as the sequester, for a few months."
Congress should—while the just-re-elected President leads from behind. Obama did, however, call for more tax increases—he terms them "reforms"—to be included. This is another round of his increasingly tiresome "balanced approach" to reducing his massive deficits.
Sequestration, which threatens to slash defense spending by roughly 10 percent, has hung over the budget for more than a year. Twice the House of Representatives has passed a package of alternative spending reductions to replace the defense cuts for one year. The Senate ignored them. Obama ignored them. On January 2, when the cuts were supposed to start, Congress and the President simply chose to put them off for another two months.
What's needed, of course, is a serious plan to address the spending crisis. Sequestration is not that, yet the President offered no proposals for reprioritizing these cuts in a thoughtful way. Moreover, his complete lack of any substantive proposals that would put the government on a path to a balanced budget at any time—let alone within a decade—is appalling. Instead of showing the way with responsible spending cuts, the President wants to put off the only cuts he and Congress have enacted.
Now, with the President's budget delayed until at least mid-March, Obama tells lawmakers that they need to come up with a solution—but offers nothing of his own. Thus Obama makes himself commander in chief of a military establishment in danger of being hollowed out by reckless, mechanical spending cuts that he refuses to address and an economy drowning in spending and debt.


text:
Interchange Blog
Soda tax ballot measures fizzle in California
LOS ANGELES – Voters in two California cities rejected measures that would have imposed the nation's first penny-per-ounce taxes on businesses that sell sodas and other sugary drinks in an effort to boost municipal revenue and fight obesity.
In El Monte, 76.8 percent of voters said no, while in Richmond, 66.9 percent opposed the measure, according to final results from Tuesday's election.
Calls to tax sugary drinks have gathered steam as more cities and states struggle to close budget gaps and American waistlines continue to expand.
The American Beverage Association – which represents PepsiCo Inc, Coca-Cola Inc, Dr Pepper Snapple Group Inc and other beverage companies – has spent millions of dollars to beat back soda taxes around the country. The ABA has a strong record of defeating soda tax efforts.
In September New York City passed the first U.S. ban of oversized sugary drinks.
A health board outlawed sugary drinks larger than 16 ounces nearly everywhere they are sold, except groceries and convenience stores. Violators of the ban, which does not include diet sodas, face a $200 fine.
About one-third of Americans are obese, and about 10 percent of the nation's healthcare bill is tied to obesity-related diseases, such as Type 2 diabetes, heart disease and hypertension, according to the Organization for Economic Co-operation and Development.
(Editing by Xavier Briand)


text:
Gsharp is an interactive, extensible editor for musical scores.
The goal of the project is to provide, as free software, an interactive score editor giving a high-quality presentation on the screen as well as on paper output
The main part of the project is distributed according to the GNU General Public License (GPL), and parts that are clearly reusable as libraries in other projects are distributed according to the GNU Lesser General Public License (LGPL).
Gsharp is a very ambitious project that has been going on for years, mainly because I only work on it part time, but also that the design of such a program is very difficult and I have had several bad starts and made several bad design decisions in the past.
This time, things are looking much better, although the program is nowhere near completion. Gsharp is now a pure Common Lisp application using CLIM, the Common Lisp Interface Manager, as its library for managing the graphic user interface.
This screenshot demonstrates editing of four-part polyphony (Les Cris de Paris by Clément Janequin) shortly after scrolling was implemented, in May 2006.
This screen shot shows the state of Gsharp around 2004. Beam slant, stem lengths, line breaks and spacing have been computed automatically. You can clearly distinguish between the active layer (all black) and the other layer (gray). If you look carefully, you will see the gray-scale (anti-aliased) fonts that are used. If you look even more carefully, you will see that drawing is not perfect yet: for one thing, noteheads that are too close are painted over each other. You can also see that the key signature is not displayed, nor is the time signature.
This screen shot is similar to the previous one, but uses our smallest font, only 6 pixels between two adjacent staff lines. The main defect you can see in this screen shot is that some notes are still drawn AFTER some of the ledger lines, whereas the gray-level font idea depends on the order being reversed.
This screen shot shows a more complicated piece (for piano) in that voices come and go. The clusters are also more complicated than those of a Bach chorale. We have also set the spacing much tighter than in the previous two screen shots. The result of this tightness is that you see some exceptional beaming in the first line. The first line being tighter than the second, similar beam groups on the first line will have a smaller beam slope than the corresponding cluster in the second line. All of this is computed automatically. The score used as a model for this example contains some blatant violations of the rules (beaming in particular) given by Ross, whereas the beaming algorithm of Gsharp does not have that problem.
This screen shot shows the automatic placement of accidentals in complicated clusters. These examples all comply with the rules announced by Ted Ross in his book about music engraving.
Help to improve Gsharp is greatly needed. The documentation contains some hints regarding future directions. However, aside from bug fixes and trivial improvements, it would be highly desirable to contact me before starting to work on a substantial piece of code. It is not always crystal clear what it is that I imagine as the future for this project, and sometimes I do not even know myself.
The newest formalrelease is 0.2 as of 2003-09-06 which is available as a compressed tar file; development has continued since 2003, and we make snapshots available by asdf-install. More frequently updated snapshots are also available from version control (see the "Git" section below). In the sources you will find some documentation, that you can also download as a compressed PostScript file, or as an uncompressed PostScript file
Version 0.2 adds important new features compared to 0.1, but many basic features are still lacking. However, the basic infrastructure feels quite good. The line breaking algorithm seems to work, and is fast despite not being optimized. Calculation of stem lengths and beam slant (single beam at the moment), and beam positions is in place. Automatic placement of accidentals in very complicated clusters also appears to work.
You will find a longer list of what works and what does not work in the documentation.
You can browse our git repository, clone it for local development using git clone git://common-lisp.net/projects/gsharp/gsharp.git, or download a development snapshot.


text:
Associated Press
McALLEN, Texas — Building and operating a private rocket launch site along the coast in the southernmost tip of Texas is unlikely to jeopardize the existence of protected animal species and create few unavoidable impacts, according to a final federal environmental review.
The Federal Aviation Administration released the environmental impact statement for California-based SpaceX on Thursday. It does not guarantee that the FAA would issue launch licenses there, but it is an essential step in that direction.
SpaceX proposed launching 12 rockets per year from the site east of Brownsville and 3 miles north of the U.S.-Mexico border called Boca Chica Beach, but did not make any promises Thursday. If built, it would be the first commercial orbital launch site.
"Though Brownsville remains a finalist for the development of a commercial orbital launch complex, the decision will not be made until all technical and regulatory due diligence is complete," SpaceX spokeswoman Hannah Post said in an email.
She noted several more steps have to be cleared. "While the timing of some of these critical steps is not within SpaceX's control, we are hopeful that these will be complete in the near future."
The U.S. Fish and Wildlife Service, which had raised concerns about possible impact on habitat for some endangered species, ultimately concluded that "the project is not likely to jeopardize the continued existence of any listed or proposed to be listed species nor adversely modify piping plover critical habitat."
But wildlife officials don't expect the project to be harmless. Two individual cats, either from the endangered ocelot or jaguarondi species, could be lost as a result of the project in spite of efforts to avoid just that with measures such as posting warning signs along the road leading to the launch site. And federal wildlife officials also anticipate that more than 7 miles of beachfront used by nesting sea turtles could be disturbed by security patrols, though driving is already permitted on the beach.
SpaceX has agreed to a list of measures aimed at minimizing the environmental impact including educating workers about threatened and endangered animals. It also plans to adopt a 3-mile section of the beach and participate in beach cleanups and educational programs.
The Texas launches would create unavoidable noise for residents of a nearby neighborhood and dramatically alter the landscape of sand dunes, wetlands and grasses, but other environmental impacts can be mitigated, the report said.
SpaceX already launches from Cape Canaveral in Florida and Vandenberg Air Force Base in California. In addition to serving commercial satellite customers, SpaceX also resupplies the International Space Station.
SpaceX Founder and Chief Executive Elon Musk indicated last month that the company planned to develop the launch site in Texas. Sites in Florida, Georgia and Puerto Rico had been considered as well, but the Texas site was always much further along in the planning process.
The document released Thursday describes why SpaceX eliminated sites in Florida (too much beachfront development) and Puerto Rico (difficulty of transporting cargo from mainland) from contention, but does not mention Georgia.


text:
A top official at the Veterans Affairs Department says he is sorry that VA employees have suffered retaliation after making complaints about poor patient care, long wait times and other problems.
James Tuchschmidt, the No. 2 official at the Veterans Health Administration, the VA's health care arm, apologized on behalf of the department at a congressional hearing Tuesday night.
"I apologize to everyone whose voice has been stifled," Tuchschmidt said after listening to four VA employees testify for nearly three hours about VA actions to limit criticism and strike back against whistleblowers. "That's not what I stand for. I'm very disillusioned and sickened by all of this."
A federal investigative agency said Tuesday it was examining 67 claims of retaliation by VA supervisors against employees who filed whistleblower complaints — including 25 complaints filed since June 1, after a growing health care scandal involving long patient waits and falsified records at VA hospitals and clinics became public.
The independent Office of Special Counsel said 30 of the complaints about retaliation have passed the initial review stage and were being investigated further for corrective action and possible discipline against VA supervisors and other executives. The complaints were filed in 28 states at 45 separate facilities, Special Counsel Carolyn Lerner said.
Instead of using information provided by whistleblowers as an early warning system, the VA often "has ignored or attempted to minimize problems, allowing serious issues to fester and grow," Lerner told the House Veterans' Affairs Committee hearing. Worse, officials have retaliated against whistleblowers instead of investigating their complaints, she said.
Lerner said her office has been able to block disciplinary actions against several VA employees who reported wrongdoing, including one who reported a possible crime at a VA facility in New York.
The counsel's office also reversed a suspension for a VA employee in Hawaii who reported seeing an elderly patient being improperly restrained in a wheelchair. The whistleblower was granted full back pay and an unspecified monetary award, and the official who retaliated against the worker was suspended, Lerner said.
The VA said earlier Tuesday it was restructuring its Office of Medical Inspector following a scathing report by Lerner's agency last month.
Acting VA Secretary Sloan Gibson said the department would appoint an interim director of the medical inspector's office from outside the current office and was suspending the office's hotline immediately. All complaints would be referred to the VA's Office of Inspector General.
The head of the medical inspector's office retired June 30 following a report by the Office of Special Counsel saying that his office played down whistleblower complaints pointing to "a troubling pattern of deficient patient care" at VA facilities.
"Intimidation or retaliation — not just against whistleblowers, but against any employee who raises a hand to identify a problem, make a suggestion or report what may be a violation in law, policy or our core values — is absolutely unacceptable," Gibson said in a statement. "I will not tolerate it in our organization."
A doctor at the Phoenix veterans hospital, where dozens of veterans died while on waiting lists for appointments, said she was harassed and humiliated after complaining about problems at the hospital.
Dr. Katherine Mitchell said the hospital's emergency room was severely understaffed and could not keep up with "the dangerous flood of patients" there. Mitchell, a former co-director of the Phoenix VA hospital's ER, told the House committee that strokes, heart attacks, internal head bleeding and other serious medical problems were missed by staffers "overwhelmed by the glut of patients."
Her complaints about staffing problems were ignored, Mitchell said, and she was transferred, suspended and reprimanded.
Mitchell, a 16-year veteran at the Phoenix VA, now directs a program for Iraq and Afghanistan veterans at the hospital. She said problems she pointed out to supervisors put patients' lives at risk.
"It is a bitter irony that our VA cannot guarantee high-quality health care in the middle of cosmopolitan Phoenix" to veterans who survived wars in Iraq, Afghanistan, Vietnam and Korea, she said.
Scott Davis, a program specialist at the VA's Health Eligibility Center in Atlanta, said he was placed on involuntary leave after reporting that officials were "wasting millions of dollars" on a direct mail marketing campaign to promote the health care overhaul signed by President Barack Obama. Davis also reported the possible purging and deletion of at least 10,000 veterans' health records at the Atlanta center. More records and documents could be deleted or manipulated to mask a major backlog and mismanagement, Davis said. Those records would be hard to identify because of computer-system integrity issues, he said.
Rep. Jeff Miller, R-Fla., chairman of the House veterans panel, praised Mitchell and other whistleblowers for coming forward, despite threats of retaliation that included involuntary transfers and suspensions.
"Unlike their supervisors, these whistleblowers have put the interests of veterans before their own," Miller said. "They understand that metrics and measurements mean nothing without personal responsibility."
Rather than push whistleblowers out, "it is time that VA embraces their integrity and recommits itself to accomplishing the promise of providing high-quality health care to veterans," Miller said.
Follow Matthew Daly on Twitter at httpss://twitter.com/MatthewDalyWDC
Copyright © 2013 Capitol Hill Blue
Copyright © 2013 The Associated Press. All rights


text:
When an abuser can beat their significant other, sending them to the emergency room (for a bill of approximately $2,000), and the abuser gets to plead to a charge of disorderly conduct and given a $5 fine, there is something wrong.
Now I can understand why so many abuse victims choose not to seek legal help in the situation they find themselves in. Where is the justice in that?


text:
Tell the White House: Stop stonewalling and fire Carmen Ortiz already!
Tens of thousands of people have used the White House's petition site to demand that President Obama fire Aaron Swartz's prosecutor Carmen Ortiz -- easily surpassing the 25,000 signature threshold that's supposed to guarantee a response. Aaron died more than two weeks ago, but the White House still hasn't even issued a statement.
We've been waiting far too long. Help us demand answers from the White House. It's enough already: They need to respond to our calls and fire Ortiz.
PETITION TO THE WHITE HOUSE: Aaron died more than two weeks ago. We want answers, Congress wants answers. Stop ignoring us and fire Carmen Ortiz already!
There's some good news to report: The House Oversight Committee has responded to our requests and is calling for a briefing on Aaron's prosecution from the Department of Justice.
That's because what happened to Aaron looks far more like a persecution than a prosecution: Ortiz wanted him to serve upwards of 35 years in federal prison for downloading too many ACADEMIC ARTICLES.
We've demanded answers, Congress is demanding answers. It's time for the White House to stop ignoring us.
Add your name at right to tell Obama to stop stonewalling us and fire Ortiz!
You can read the House's letter to the DOJ here.
If you're already on Facebook, click here to share with your friends. | |
If you're already on Twitter, click here to tweet about the campaign: |


text:
Introducing the methods of geoscience to physical geology students
Beth Dushman, Natural Sciences, Del Mar CollegeAs a geology instructor at a community college, I teach mostly non-majors students in my Physical Geology lectures and labs. These classes may be these students' only introduction to science at a college level, and it may be the first science class they have had in years. These students are often science-phobic and lack the confidence to engage in discovery learning. At the same time, I often have a few majors in my classes. Thus, my challenge is to teach the majors geoscience skills they will need for future classes, while engaging the rest of the class in activities that will improve their understanding of basic science and geology. The most important methods of geoscience that I think students should learn in my classes are critical reasoning, observation of natural phenomena, synthesis of multiple ideas, the basics of how the scientific method is applied in geology, and communicating scientific information.
I use a variety of strategies to teach these science methods in my lecture and laboratory classes. I start each semester with an overview of the scientific method, and compare the traditional 5-step process (observation, hypothesis, experimental design, data collection and analysis, and conclusion) to how the scientific method is applied in Geology. For example, many students learn that science is conducted through experiments with strict controls and a few variables. Geoscientists, however, lack an extra planet to use as a control when we study the Earth. Instead, we make approximations in labs and using computer models, but often data are gathered through field observations.
As the class investigates various topics in geology, I explicitly identify ways in which the scientific method (and other geoscience methods) has improved our understanding of the Earth. The development of the theory of plate tectonics works an an excellent example. We discuss the initial observations, gathering of evidence, original ideas and criticisms about continental movement, through the discoveries that resulted in the theory of plate tectonics. Throughout the semester, I encourage students to ask, "how do we know that?" about any topic. Each time this question is raised, it presents an opportunity to share the observational and analytical methods that laid the foundation for our current understanding of that geological phenomenon.
Of all the science methods my students should learn, critical reasoning skills are the most important. Critical reasoning is essential in most fields, and yet students are often overwhelmed by any problem that requires effort beyond simple memorization and regurgitation. This problem may be compounded by the perception that science is too hard, or that students are "bad at science." As a way to demonstrate to my students that they can be competent problem solvers, I work with them to break problems down into simple steps, and then to integrate those steps to make a whole story. For example, while interpretation of a simple stratigraphic section may be daunting at first, students gain confidence as they decipher the geological history of that area.
In my lab classes, students apply some of these methods through hands-on experimentation. For example, students practice observation of natural phenomena in lab exercises using stream tables and Google Earth, while simultaneously synthesizing information from lecture, lab, and observations. As part of the lab where students experiment with small stream tables, students are asked to describe how the models succeed or fail at approximating Earth processes. This question helps to engage students in a discussion of the limitations and advantages of using models in geoscience in general.
Another important geoscience method is clearly and effectively communicating scientific information. My students complete a writing assignment for which they must find and evaluate sources of scientific information, then summarize into a coherent synopsis of a significant geologic event. This exercise introduces students to how scientists collect, interpret, and communicate their data. While the students are not conducting original research for these assignments, this project may be their first introduction to scientific reseach. Furthermore, by delving deeper into the information available for a given geologic event, students begin to recognize the differences between scientific media and popular media. For majors, this project gives students an idea of where to start looking for science resources and introduces them to the peer-review process. For nonmajors, students gain an appreciation for how scientific information is developed and disseminated to public.
Prior to taking this class, many students were only exposed to geology when natural disasters occurred, resulting in a somewhat skewed perception of the role geologists play in forecasting or mitigating these events. By developing a deeper understanding of the ways in which geoscientists study the earth, students are better able to assess the information they see in the mainstream media. To this end, we discuss methods geologists employ to study hazards, such as seismic surveys, mapping of earthquake foci, gravitational studies, and volcanic hazards monitoring, and how geologists describe risk using recurrence intervals. Then, when we address the limitations of these methods as applied to natural hazards, students recognize why we cannot predict or prevent many geological events.
Lastly, any discussion of how science works should include a discussion of how scientific thought changes over time. I emphasize that while geologists do have a very strong framework for contextualizing most Earth processes-- Plate Tectonics-- there is still a lot about how the Earth works that we do not yet understand. As students consider applications of geoscience methods to these unanswered questions about the Earth, they gain an appreciation for ongoing geological research. Even better, some are inspired to become geoscientists themselves.


text:
Edge out the competition
...with the Nemesis expansion for the Magic: The Gathering trading card game.
Check out the Laccoliths, a new creature type that hacks apart the weak links in your opponent's defense. Blocking them is only the start of your opponent's troubles.
And then there are fading cards, a fine assortment of card types that give you the edge - ahead of schedule.
There are currently no products to display within this category!


text:
BDB - Asynchronous Berkeley DB access
use BDB; my $env = db_env_create; mkdir "bdtest", 0700; db_env_open $env, "bdtest", BDB::INIT_LOCK | BDB::INIT_LOG | BDB::INIT_MPOOL | BDB::INIT_TXN | BDB::RECOVER | BDB::USE_ENVIRON | BDB::CREATE, 0600; $env->set_flags (BDB::AUTO_COMMIT | BDB::TXN_NOSYNC, 1); my $db = db_create $env; db_open $db, undef, "table", undef, BDB::BTREE, BDB::AUTO_COMMIT | BDB::CREATE | BDB::READ_UNCOMMITTED, 0600; db_put $db, undef, "key", "data", 0, sub { db_del $db, undef, "key"; }; db_sync $db; # when you also use Coro, management is easy: use Coro::BDB; # automatic event loop integration with AnyEvent: use AnyEvent::BDB; # automatic result processing with EV: my $WATCHER = EV::io BDB::poll_fileno, EV::READ, \&BDB::poll_cb; # with Glib: add_watch Glib::IO BDB::poll_fileno, in => sub { BDB::poll_cb; 1 }; # or simply flush manually BDB::flush;
See the BerkeleyDB documentation (http://www.oracle.com/technology/documentation/berkeley-db/db/index.html). The BDB API is very similar to the C API (the translation has been very faithful).
See also the example sections in the document below and possibly the eg/ subdirectory of the BDB distribution. Last not least see the IO::AIO documentation, as that module uses almost the same asynchronous request model as this module.
I know this is woefully inadequate documentation. Send a patch!
Every request method creates a request. which is a C data structure not directly visible to Perl.
During their existance, bdb requests travel through the following states, in order:
Immediately after a request is created it is put into the ready state, waiting for a thread to execute it.
A thread has accepted the request for processing and is currently executing it (e.g. blocking in read).
The request has been executed and is waiting for result processing.
While request submission and execution is fully asynchronous, result processing is not and relies on the perl interpreter calling poll_cb (or another function with the same effect).
The request results are processed synchronously by poll_cb.
The poll_cb function will process all outstanding aio requests by calling their callbacks, freeing memory associated with them and managing any groups they are contained in.
Request has reached the end of its lifetime and holds no resources anymore (except possibly for the Perl object, but its connection to the actual aio request is severed and calling its methods will either do nothing or result in a runtime error).
All of these are functions. The create functions simply return a new object and never block. All the remaining functions take an optional callback as last argument. If it is missing, then the function will be executed synchronously. In both cases, $! will reflect the return value of the function.
BDB functions that cannot block (mostly functions that manipulate settings) are method calls on the relevant objects, so the rule of thumb is: if it's a method, it's not blocking, if it's a function, it takes a callback as last argument.
In the following, $int signifies an integer return value, bdb_filename is a "filename" (octets on unix, madness on windows), U32 is an unsigned 32 bit integer, int is some integer, NV is a floating point value.
Most SV * types are generic perl scalars (for input and output of data values).
The various DB_ENV etc. arguments are handles return by db_env_create, db_create, txn_begin and so on. If they have an appended _ornull this means they are optional and you can pass undef for them, resulting a NULL pointer on the C level.
The SV *callback is the optional callback function to call when the request is completed. This last callback argument is special: the callback is simply the last argument passed. If there are "optional" arguments before the callback they can be left out. The callback itself can be left out or specified as undef, in which case the function will be executed synchronously.
SV *callback
For example, db_env_txn_checkpoint usually is called with all integer arguments zero. These can be left out, so all of these specify a call to DB_ENV->txn_checkpoint, to be executed asynchronously with a callback to be called:
db_env_txn_checkpoint $db_env, 0, 0, 0, sub { }; db_env_txn_checkpoint $db_env, 0, 0, sub { }; db_env_txn_checkpoint $db_env, sub { };
While these all specify a call to DB_ENV->txn_checkpoint to be executed synchronously:
db_env_txn_checkpoint $db_env, 0, 0, 0, undef; db_env_txn_checkpoint $db_env, 0, 0, 0; db_env_txn_checkpoint $db_env, 0;
Functions in the BDB namespace, exported by default:
$env = db_env_create (U32 env_flags = 0) flags: RPCCLIENT db_env_open (DB_ENV *env, bdb_filename db_home, U32 open_flags, int mode, SV *callback = 0) open_flags: INIT_CDB INIT_LOCK INIT_LOG INIT_MPOOL INIT_REP INIT_TXN RECOVER RECOVER_FATAL USE_ENVIRON USE_ENVIRON_ROOT CREATE LOCKDOWN PRIVATE REGISTER SYSTEM_MEM db_env_close (DB_ENV *env, U32 flags = 0, SV *callback = 0) db_env_txn_checkpoint (DB_ENV *env, U32 kbyte = 0, U32 min = 0, U32 flags = 0, SV *callback = 0) flags: FORCE db_env_lock_detect (DB_ENV *env, U32 flags = 0, U32 atype = DB_LOCK_DEFAULT, SV *dummy = 0, SV *callback = 0) atype: LOCK_DEFAULT LOCK_EXPIRE LOCK_MAXLOCKS LOCK_MAXWRITE LOCK_MINLOCKS LOCK_MINWRITE LOCK_OLDEST LOCK_RANDOM LOCK_YOUNGEST db_env_memp_sync (DB_ENV *env, SV *dummy = 0, SV *callback = 0) db_env_memp_trickle (DB_ENV *env, int percent, SV *dummy = 0, SV *callback = 0) db_env_dbremove (DB_ENV *env, DB_TXN_ornull *txnid, bdb_filename file, bdb_filename database, U32 flags = 0, SV *callback = 0) db_env_dbrename (DB_ENV *env, DB_TXN_ornull *txnid, bdb_filename file, bdb_filename database, bdb_filename newname, U32 flags = 0, SV *callback = 0) db_env_log_archive (DB_ENV *env, SV *listp, U32 flags = 0, SV *callback = 0) db_env_lsn_reset (DB_ENV *env, bdb_filename db, U32 flags = 0, SV *callback = 0) db_env_fileid_reset (DB_ENV *env, bdb_filename db, U32 flags = 0, SV *callback = 0) $db = db_create (DB_ENV *env = 0, U32 flags = 0) flags: XA_CREATE db_open (DB *db, DB_TXN_ornull *txnid, bdb_filename file, bdb_filename database, int type, U32 flags, int mode, SV *callback = 0) flags: AUTO_COMMIT CREATE EXCL MULTIVERSION NOMMAP RDONLY READ_UNCOMMITTED THREAD TRUNCATE db_close (DB *db, U32 flags = 0, SV *callback = 0) flags: DB_NOSYNC db_verify (DB *db, bdb_filename file, bdb_filename database = 0, SV *dummy = 0, U32 flags = 0, SV *callback = 0) db_upgrade (DB *db, bdb_filename file, U32 flags = 0, SV *callback = 0) db_compact (DB *db, DB_TXN_ornull *txn = 0, SV *start = 0, SV *stop = 0, SV *unused1 = 0, U32 flags = DB_FREE_SPACE, SV *unused2 = 0, SV *callback = 0) flags: FREELIST_ONLY FREE_SPACE db_sync (DB *db, U32 flags = 0, SV *callback = 0) db_key_range (DB *db, DB_TXN_ornull *txn, SV *key, SV *key_range, U32 flags = 0, SV *callback = 0) db_put (DB *db, DB_TXN_ornull *txn, SV *key, SV *data, U32 flags = 0, SV *callback = 0) flags: APPEND NODUPDATA NOOVERWRITE db_exists (DB *db, DB_TXN_ornull *txn, SV *key, U32 flags = 0, SV *callback = 0) (v4.6) db_get (DB *db, DB_TXN_ornull *txn, SV *key, SV *data, U32 flags = 0, SV *callback = 0) flags: CONSUME CONSUME_WAIT GET_BOTH SET_RECNO MULTIPLE READ_COMMITTED READ_UNCOMMITTED RMW db_pget (DB *db, DB_TXN_ornull *txn, SV *key, SV *pkey, SV *data, U32 flags = 0, SV *callback = 0) flags: CONSUME CONSUME_WAIT GET_BOTH SET_RECNO MULTIPLE READ_COMMITTED READ_UNCOMMITTED RMW db_del (DB *db, DB_TXN_ornull *txn, SV *key, U32 flags = 0, SV *callback = 0) db_txn_commit (DB_TXN *txn, U32 flags = 0, SV *callback = 0) flags: TXN_NOSYNC TXN_SYNC db_txn_abort (DB_TXN *txn, SV *callback = 0) db_c_close (DBC *dbc, SV *callback = 0) db_c_count (DBC *dbc, SV *count, U32 flags = 0, SV *callback = 0) db_c_put (DBC *dbc, SV *key, SV *data, U32 flags = 0, SV *callback = 0) flags: AFTER BEFORE CURRENT KEYFIRST KEYLAST NODUPDATA db_c_get (DBC *dbc, SV *key, SV *data, U32 flags = 0, SV *callback = 0) flags: CURRENT FIRST GET_BOTH GET_BOTH_RANGE GET_RECNO JOIN_ITEM LAST NEXT NEXT_DUP NEXT_NODUP PREV PREV_DUP PREV_NODUP SET SET_RANGE SET_RECNO READ_UNCOMMITTED MULTIPLE MULTIPLE_KEY RMW db_c_pget (DBC *dbc, SV *key, SV *pkey, SV *data, U32 flags = 0, SV *callback = 0) db_c_del (DBC *dbc, U32 flags = 0, SV *callback = 0) db_sequence_open (DB_SEQUENCE *seq, DB_TXN_ornull *txnid, SV *key, U32 flags = 0, SV *callback = 0) flags: CREATE EXCL db_sequence_close (DB_SEQUENCE *seq, U32 flags = 0, SV *callback = 0) db_sequence_get (DB_SEQUENCE *seq, DB_TXN_ornull *txnid, int delta, SV *seq_value, U32 flags = DB_TXN_NOSYNC, SV *callback = 0) flags: TXN_NOSYNC db_sequence_remove (DB_SEQUENCE *seq, DB_TXN_ornull *txnid = 0, U32 flags = 0, SV *callback = 0) flags: TXN_NOSYNC
This is not actually a Berkeley DB function but a BDB module extension. The background for this exytension is: It is very annoying to have to check every single BDB function for error returns and provide a codepath out of your transaction. While the BDB module still makes this possible, it contains the following extensions:
When a transaction-protected function returns any operating system error (errno > 0), BDB will set the TXN_DEADLOCK flag on the transaction. This flag is also set by Berkeley DB functions themselves when an operation fails with LOCK_DEADLOCK, and it causes all further operations on that transaction (including db_txn_commit) to fail.
The db_txn_finish request will look at this flag, and, if it is set, will automatically call db_txn_abort (setting errno to LOCK_DEADLOCK if it isn't set to something else yet). If it isn't set, it will call db_txn_commit and return the error normally.
How to use this? Easy: just write your transaction normally:
my $txn = $db_env->txn_begin; db_get $db, $txn, "key", my $data; db_put $db, $txn, "key", $data + 1 unless $! == BDB::NOTFOUND; db_txn_finish $txn; die "transaction failed" if $!;
That is, handle only the expected errors. If something unexpected happens (EIO, LOCK_NOTGRANTED or a deadlock in either db_get or db_put), then the remaining requests (db_put in this case) will simply be skipped (they will fail with LOCK_DEADLOCK) and the transaction will be aborted.
You can use the $txn->failed method to check wether a transaction has failed in this way and abort further processing (excluding db_txn_finish).
Methods available on DB_ENV/$env handles:
DESTROY (DB_ENV_ornull *env) CODE: if (env) env->close (env, 0); $int = $env->set_data_dir (const char *dir) $int = $env->set_tmp_dir (const char *dir) $int = $env->set_lg_dir (const char *dir) $int = $env->set_shm_key (long shm_key) $int = $env->set_cachesize (U32 gbytes, U32 bytes, int ncache = 0) $int = $env->set_flags (U32 flags, int onoff = 1) $int = $env->log_set_config (U32 flags, int onoff = 1) (v4.7) $int = $env->set_intermediate_dir_mode (const char *modestring) (v4.7) $env->set_errfile (FILE *errfile = 0) $env->set_msgfile (FILE *msgfile = 0) $int = $env->set_verbose (U32 which, int onoff = 1) $int = $env->set_encrypt (const char *password, U32 flags = 0) $int = $env->set_timeout (NV timeout_seconds, U32 flags = SET_TXN_TIMEOUT) $int = $env->set_mp_max_openfd (int maxopenfd); $int = $env->set_mp_max_write (int maxwrite, int maxwrite_sleep); $int = $env->set_mp_mmapsize (int mmapsize_mb) $int = $env->set_lk_detect (U32 detect = DB_LOCK_DEFAULT) $int = $env->set_lk_max_lockers (U32 max) $int = $env->set_lk_max_locks (U32 max) $int = $env->set_lk_max_objects (U32 max) $int = $env->set_lg_bsize (U32 max) $int = $env->set_lg_max (U32 max) $int = $env->mutex_set_increment (U32 increment) $int = $env->mutex_set_tas_spins (U32 tas_spins) $int = $env->mutex_set_max (U32 max) $int = $env->mutex_set_align (U32 align) $txn = $env->txn_begin (DB_TXN_ornull *parent = 0, U32 flags = 0) flags: READ_COMMITTED READ_UNCOMMITTED TXN_NOSYNC TXN_NOWAIT TXN_SNAPSHOT TXN_SYNC TXN_WAIT TXN_WRITE_NOSYNC $txn = $env->cdsgroup_begin; (v4.5)
use AnyEvent; use BDB; our $FH; open $FH, "<&=" . BDB::poll_fileno; our $WATCHER = AnyEvent->io (fh => $FH, poll => 'r', cb => \&BDB::poll_cb); BDB::min_parallel 8; my $env = db_env_create; mkdir "bdtest", 0700; db_env_open $env, "bdtest", BDB::INIT_LOCK | BDB::INIT_LOG | BDB::INIT_MPOOL | BDB::INIT_TXN | BDB::RECOVER | BDB::USE_ENVIRON | BDB::CREATE, 0600; $env->set_flags (BDB::AUTO_COMMIT | BDB::TXN_NOSYNC, 1);
Methods available on DB/$db handles:
DESTROY (DB_ornull *db) CODE: if (db) { SV *env = (SV *)db->app_private; db->close (db, 0); SvREFCNT_dec (env); } $int = $db->set_cachesize (U32 gbytes, U32 bytes, int ncache = 0) $int = $db->set_flags (U32 flags) flags: CHKSUM ENCRYPT TXN_NOT_DURABLE Btree: DUP DUPSORT RECNUM REVSPLITOFF Hash: DUP DUPSORT Queue: INORDER Recno: RENUMBER SNAPSHOT $int = $db->set_encrypt (const char *password, U32 flags) $int = $db->set_lorder (int lorder) $int = $db->set_bt_minkey (U32 minkey) $int = $db->set_re_delim (int delim) $int = $db->set_re_pad (int re_pad) $int = $db->set_re_source (char *source) $int = $db->set_re_len (U32 re_len) $int = $db->set_h_ffactor (U32 h_ffactor) $int = $db->set_h_nelem (U32 h_nelem) $int = $db->set_q_extentsize (U32 extentsize) $dbc = $db->cursor (DB_TXN_ornull *txn = 0, U32 flags = 0) flags: READ_COMMITTED READ_UNCOMMITTED WRITECURSOR TXN_SNAPSHOT $seq = $db->sequence (U32 flags = 0)
my $db = db_create $env; db_open $db, undef, "table", undef, BDB::BTREE, BDB::AUTO_COMMIT | BDB::CREATE | BDB::READ_UNCOMMITTED, 0600; for (1..1000) { db_put $db, undef, "key $_", "data $_"; db_key_range $db, undef, "key $_", my $keyrange; my ($lt, $eq, $gt) = @$keyrange; } db_del $db, undef, "key $_" for 1..1000; db_sync $db;
Methods available on DB_TXN/$txn handles:
DESTROY (DB_TXN_ornull *txn) CODE: if (txn) txn->abort (txn); $int = $txn->set_timeout (NV timeout_seconds, U32 flags = SET_TXN_TIMEOUT) flags: SET_LOCK_TIMEOUT SET_TXN_TIMEOUT $bool = $txn->failed # see db_txn_finish documentation, above
Methods available on DBC/$dbc handles:
DESTROY (DBC_ornull *dbc) CODE: if (dbc) dbc->c_close (dbc); $int = $cursor->set_priority ($priority = PRIORITY_*) (v4.6)
my $c = $db->cursor; for (;;) { db_c_get $c, my $key, my $data, BDB::NEXT; warn "<$!,$key,$data>"; last if $!; } db_c_close $c;
Methods available on DB_SEQUENCE/$seq handles:
DESTROY (DB_SEQUENCE_ornull *seq) CODE: if (seq) seq->close (seq, 0); $int = $seq->initial_value (db_seq_t value) $int = $seq->set_cachesize (U32 size) $int = $seq->set_flags (U32 flags) flags: SEQ_DEC SEQ_INC SEQ_WRAP $int = $seq->set_range (db_seq_t min, db_seq_t max)
my $seq = $db->sequence; db_sequence_open $seq, undef, "seq", BDB::CREATE; db_sequence_get $seq, undef, 1, my $value;
Returns the string corresponding to the given errno value. If no argument is given, use $!.
Note that the BDB module also patches the $! variable directly, so you should be able to get a bdb error string by simply stringifying $!.
Return the request result pipe file descriptor. This filehandle must be polled for reading by some mechanism outside this module (e.g. Event or select, see below or the SYNOPSIS). If the pipe becomes readable you have to call poll_cb to check the results.
See poll_cb for an example.
Process some outstanding events on the result pipe. You have to call this regularly. Returns the number of events processed. Returns immediately when no events are outstanding. The amount of events processed depends on the settings of BDB::max_poll_req and BDB::max_poll_time.
If not all requests were processed for whatever reason, the filehandle will still be ready when poll_cb returns.
Example: Install an Event watcher that automatically calls BDB::poll_cb with high priority:
Event->io (fd => BDB::poll_fileno, poll => 'r', async => 1, cb => \&BDB::poll_cb);
These set the maximum number of requests (default 0, meaning infinity) that are being processed by BDB::poll_cb in one call, respectively the maximum amount of time (default 0, meaning infinity) spent in BDB::poll_cb to process requests (more correctly the mininum amount of time poll_cb is allowed to use).
Setting max_poll_time to a non-zero value creates an overhead of one syscall per request processed, which is not normally a problem unless your callbacks are really really fast or your OS is really really slow (I am not mentioning Solaris here). Using max_poll_reqs incurs no overhead.
Setting these is useful if you want to ensure some level of interactiveness when perl is not fast enough to process all requests in time.
For interactive programs, values such as 0.01 to 0.1 should be fine.
Example: Install an EV watcher that automatically calls BDB::poll_cb with low priority, to ensure that other parts of the program get the CPU sometimes even under high load.
# try not to spend much more than 0.1s in poll_cb BDB::max_poll_time 0.1; my $bdb_poll = EV::io BDB::poll_fileno, EV::READ, \&BDB::poll_cb);
If there are any outstanding requests and none of them in the result phase, wait till the result filehandle becomes ready for reading (simply does a select on the filehandle. This is useful if you want to synchronously wait for some requests to finish).
See nreqs for an example.
Waits until some requests have been handled.
Returns the number of requests processed, but is otherwise strictly equivalent to:
BDB::poll_wait, BDB::poll_cb
Wait till all outstanding BDB requests have been handled.
Strictly equivalent to:
BDB::poll_wait, BDB::poll_cb while BDB::nreqs;
BerkeleyDB comes in various versions, many of them have minor incompatibilities. This means that traditional "at least version x.x" checks are often not sufficient.
Example: set the log_autoremove option in a way compatible with <v4.7 and v4.7. Note the use of & on the constants to avoid triggering a compiletime bug when the symbol isn't available.
$DB_ENV->set_flags (&BDB::LOG_AUTOREMOVE ) if BDB::VERSION v0, v4.7; $DB_ENV->log_set_config (&BDB::LOG_AUTO_REMOVE) if BDB::VERSION v4.7;
The BDB::VERSION function, when called without arguments, returns the Berkeley DB version as a v-string (usually with 3 components). You should use lt and ge operators exclusively to make comparisons.
Example: check for at least version 4.7.
BDB::VERSION ge v4.7 or die;
Returns true if the BDB version is at least the given version (specified as a v-string), false otherwise.
Example: check for at least version 4.5.
BDB::VERSION v4.7 or die;
Returns true of the BDB version is at least version min-version (specify undef or v0 for any minimum version) and less then max-version.
Example: check wether version is strictly less then v4.7.
BDB::VERSION v0, v4.7 or die "version 4.7 is not yet supported";
Set the minimum number of BDB threads to $nthreads. The current default is 8, which means eight asynchronous operations can execute concurrently at any one time (the number of outstanding requests, however, is unlimited).
BDB starts threads only on demand, when an BDB request is queued and no free thread exists. Please note that queueing up a hundred requests can create demand for a hundred threads, even if it turns out that everything is in the cache and could have been processed faster by a single thread.
It is recommended to keep the number of threads relatively low, as some Linux kernel versions will scale negatively with the number of threads (higher parallelity => MUCH higher latency). With current Linux 2.6 versions, 4-32 threads should be fine.
Under most circumstances you don't need to call this function, as the module selects a default that is suitable for low to moderate load.
Sets the maximum number of BDB threads to $nthreads. If more than the specified number of threads are currently running, this function kills them. This function blocks until the limit is reached.
While $nthreads are zero, aio requests get queued but not executed until the number of threads has been increased again.
This module automatically runs max_parallel 0 at program end, to ensure that all threads are killed and that there are no outstanding requests.
max_parallel 0
Under normal circumstances you don't need to call this function.
Limit the number of threads (default: 4) that are allowed to idle (i.e., threads that did not get a request to process within 10 seconds). That means if a thread becomes idle while $nthreads other threads are also idle, it will free its resources and exit.
This is useful when you allow a large number of threads (e.g. 100 or 1000) to allow for extremely high load situations, but want to free resources under normal circumstances (1000 threads can easily consume 30MB of RAM).
The default is probably ok in most situations, especially if thread creation is fast. If thread creation is very slow on your system you might want to use larger values.
This is a very bad function to use in interactive programs because it blocks, and a bad way to reduce concurrency because it is inexact: Better use an aio_group together with a feed callback.
Sets the maximum number of outstanding requests to $nreqs. If you to queue up more than this number of requests, the next call to the poll_cb (and poll_some and other functions calling poll_cb) function will block until the limit is no longer exceeded.
The default value is very large, so there is no practical limit on the number of outstanding requests.
You can still queue as many requests as you want. Therefore, max_oustsanding is mainly useful in simple scripts (with low values) or as a stop gap to shield against fatal memory overflow (with large values).
Sets a callback that is called whenever a request is created without an explicit callback. It has to return two code references. The first is used as the request callback (it should save the return status), and the second is called to wait until the first callback has been called (it must set $! to the return status).
This mechanism can be used to include BDB into other event mechanisms, such as Coro::BDB.
To allow other, callback-based, events to be executed while callback-less ones are run, you could use this sync prepare function:
sub { my $status; ( sub { $status = $! }, sub { BDB::poll while !defined $status; $! = $status }, ) }
It works by polling for results till the request has finished and then sets $! to the return value. This means that if you don't use a callback, BDB would simply fall back to synchronous operations.
By default, or if the sync prepare function is set to undef, is to execute callback-less BDB requests in the foreground thread, setting $! to the return value, without polling for other events.
Returns the number of requests currently in the ready, execute or pending states (i.e. for which their callback has not been invoked yet).
Example: wait till there are no outstanding requests anymore:
Returns the number of requests currently in the ready state (not yet executed).
Returns the number of requests currently in the pending state (executed, but not yet processed by poll_cb).
Remember that, by default, BDB will execute requests in parallel, in somewhat random order. That means that it is easy to run a db_get request on the same database as a concurrent db_close request, leading to a crash, silent data corruption, eventually the next world war on terrorism.
If you only ever use foreground requests (without a callback), this will not be an issue (unless you use threads).
Remember that, by default, BDB will execute requests in parallel, which easily leads to deadlocks (even concurrent put's on the same database can deadlock).
You either need to run deadlock detection (and handle the resulting errors), or make sure only one process ever updates the database, ine one thread, e.g. by using only foreground requests (without a callback).
This module should do "the right thing" when the process using it forks:
Before the fork, BDB enters a quiescent state where no requests can be added in other threads and no results will be processed. After the fork the parent simply leaves the quiescent state and continues request/result processing, while the child frees the request/result queue (so that the requests started before the fork will only be handled in the parent). Threads will be started on demand until the limit set in the parent process has been reached again.
In short: the parent will, after a short pause, continue as if fork had not been called, while the child will act as if BDB has not been used yet.
Win32 note: there is no fork on win32, and perls emulation of it is too broken to be supported, so do not use BDB in a windows pseudo-fork, better yet, switch to a more capable platform.
Per-request usage:
Each aio request uses - depending on your architecture - around 100-200 bytes of memory. In addition, stat requests need a stat buffer (possibly a few hundred bytes), readdir requires a result buffer and so on. Perl scalars and other data passed into aio requests will also be locked and will consume memory till the request has entered the done state.
This is not awfully much, so queuing lots of requests is not usually a problem.
Per-thread usage:
In the execution phase, some aio requests require more memory for temporary buffers, and each thread requires a stack and other data structures (usually around 16k-128k, depending on the OS).
Perl on Win32 supports only ASCII filenames (the reason is that it abuses an internal flag to store wether a filename is Unicode or ANSI, but that flag is used for somethign else in the perl core, so there is no way to detect wether a filename is ANSI or Unicode-encoded). The BDB module tries to work around this issue by assuming that the filename is an ANSI filename and BDB was built for unicode support.
Known bugs will be fixed in the next release, except:
If you use a transaction in any request, and the request returns with an operating system error or DB_LOCK_NOTGRANTED, the internal TXN_DEADLOCK flag will be set on the transaction. See C<db_txn_finish>, above.
AnyEvent::BDB (event loop integration), Coro::BDB (more natural syntax), IO::AIO (nice to have).
Marc Lehmann <firstname.lastname@example.com> http://home.schmorp.de/
To install BDB, copy and paste the appropriate command in to your terminal.
cpanm BDB
CPAN shell
perl -MCPAN -e shell install BDB
For more information on module installation, please visit the detailed CPAN module installation guide.


text:
$15.8 Billion in Mortgage Relief to 164,000 Bank of America Customers Delivered Through National Mor
$15.8 Billion in Mortgage Relief to 164,000 Bank of America Customers Delivered Through National Mortgage Settlement
Performance Through September 30 Shows Progress in All Consumer Relief Programs; Bank on Pace to Meet Total Obligations in First Year of Three-Year Agreement
CALABASAS, Calif.--(BUSINESS WIRE)-- Bank of America completed or approved a total of $15.8 billion in consumer relief for about 164,000 homeowners as of September 30 through programs established under the National Mortgage Settlement. Quarterly progress reports from all five banks involved in the agreement with federal and state governments will be filed today with participating state attorneys general and the federal program monitor.
Bank of America's performance across all programs reflects significant gains during the third quarter, and the bank reinforced that it is on track to meeting its total financial obligations within the first year of the three-year agreement. Progress across consumer relief programs through September 30 includes:
First-Lien Principal Forgiveness - 30,000 customers were approved or had completed first-lien modifications providing $4.75 billion in principal reduction. Additionally, $230 million in pre-settlement forbearance has now been completely forgiven.
Home Equity Relief - Nearly 45,000 customers had received a qualifying modification or complete extinguishment of a home equity loan or line of credit, totaling $2.5 billion in relief.
Other Programs - More than 62,000 customers have completed qualifying short sales or deeds-in-lieu of foreclosure, providing a total of $7.4 billion in relief from unpaid principal balances on the loans. In addition, the bank provided an additional $617 million combined in enhanced relocation assistance and pre-settlement deficiency waivers.
Interest Rate Relief - In implementing the settlement programs, Bank of America's priority was to establish traction with first-lien and home equity forgiveness programs to assist customers at greatest risk of foreclosure. With momentum now built in these programs, the bank is quickly ramping up activity on its interest rate reduction program for borrowers who are making on-time payments but have limited or no equity in their homes. As of October 31, 23,000 homeowners - more than half of the bank's estimated eligible population - have been offered this assistance. The majority of this activity has occurred since the end of September and, as a result, will be reflected in completed rate reductions in future quarterly reports. Through September 30, approximately 1,000 rate reductions were completed, providing interest rate relief on loans representing nearly $250 million in unpaid balances.
Bank of America customers in all 50 states have received assistance from the settlement programs, with the largest numbers of customers benefiting to date residing in California, Florida, New York, New Jersey, Illinois, Maryland, Arizona and Nevada.
Principal reductions on first liens
Of the 30,000 homeowners approved for offers of first-lien principal reduction, nearly 5,800 had completed their required three monthly trial payments and converted to a completed modification as of September 30. About 85 percent of those approved for trial plans are successfully completing the process.
The program is resulting in an average of nearly $150,000 in reduced principal balance and 35 percent reduction in monthly payments.
Bank of America is offering principal reductions on loans it owns and services, as well as loans it services for other mortgage investors under delegated authority agreements. Fannie Mae, Freddie Mac, FHA, VA are not participating in the principal reduction program.
Second-lien extinguishments and modifications
The overwhelming majority of assistance to second-lien holders - more than $2.4 billion of the $2.5 billion total in home equity relief through September 30 - has been provided through home equity debt elimination and extinguishment of the lien, releasing any claim to the mortgaged property. The average financial relief provided through lien extinguishment to about 43,000 customers is more than $56,000.
About 1,400 additional loans that did not meet the parameters of the extinguishment program have been modified, reducing the balances owed by a total of $100 million.
The second-lien extinguishment and modification programs are intended to place the homeowners in an improved financial situation by reducing their monthly debt obligations and, potentially, help them regain equity in their property. Only loans that are both owned and serviced by Bank of America qualify for these programs under the settlement.
Interest rate reductions
Bank of America is providing interest rate reductions at no cost to qualified customers who have remained current on their first-lien mortgage payments but owe more than 80 percent of the value of their home today.
The bank's process features rate reduction with no associated fees or costs and allows eligible homeowners to benefit from an expedited approval process with significantly reduced documentation requirements.
Currently, Bank of America is reducing the interest rate on qualifying loans to 4.25 percent. The individual modified rate will be offered on the basis of market rates in effect at the time the homeowner's eligibility is confirmed. Bank of America estimates that eligible customers will realize nearly a 2 percent average reduction in rate, which may provide hundreds of dollars in savings on their monthly mortgage payments, depending on their principal balance and loan terms. The interest rate reduction program is available on loans that are both owned and serviced by Bank of America and meet certain other criteria.
Short sales and deeds-in-lieu
While Bank of America's first goal is to keep customers in their homes, transition becomes the inevitable or chosen route for some customers. In these cases, Bank of America encourages consideration of a short sale or deed-in-lieu as alternatives to foreclosure because they are less disruptive for the borrower, have less negative impact on credit reporting and can benefit local housing market conditions.
Borrowers completing short sales or deeds-in-lieu may receive additional relief under the settlement through enhanced relocation assistance payments above $1,500 and permanent waivers of the deficiency amount.
Servicing standards
More than 300 servicing standards were established in the settlement, covering loss mitigation, foreclosure and bankruptcy documentation and processes; third-party vendor oversight; restrictions on dual-tracking, and requiring a single point of contact, among other categories. Bank of America is in compliance with the requirements of all of the servicing standards.
Bank of America
Bank of America is one of the world's largest financial institutions, serving individual consumers, small- and middle-market businesses and large corporations with a full range of banking, investing, asset management and other financial and risk management products and services. The company provides unmatched convenience in the United States, serving more than 55 million consumer and small business relationships with approximately 5,500 retail banking offices and approximately 16,300 ATMs and award-winning online banking with 30 million active users. Bank of America is among the world's leading wealth management companies and is a global leader in corporate and investment banking and trading across a broad range of asset classes, serving corporations, governments, institutions and individuals around the world. Bank of America offers industry-leading support to more than 3 million small business owners through a suite of innovative, easy-to-use online products and services. The company serves clients through operations in more than 40 countries. Bank of America Corporation stock (NYS: BAC) is a component of the Dow Jones Industrial Average and is listed on the New York Stock Exchange.
For more Bank of America news, visit the Bank of America newsroom.
Reporters May Contact:
Dan Frahm, Rick Simon or Jumana Bauwens, Bank of America, 1.800.796.8448
KEYWORDS: United States North America California
The article $15.8 Billion in Mortgage Relief to 164,000 Bank of America Customers Delivered Through National Mortgage Settlement originally appeared on Fool.com.
Try any of our Foolish newsletter services free for 30 days. We Fools may not all hold the same opinions, but we all believe that considering a diverse range of insights makes us better investors. The Motley Fool has a disclosure policy.
Copyright © 1995 - 2012 The Motley Fool, LLC. All rights reserved. The Motley Fool has a disclosure policy.


text:
In Which Fox Suggests The Affordable Care Act Won't Insure Babies
Written by Ellie Sandmeyer
Fox News suggested that new parents are unable to add their babies onto health care plans under the Affordable Care Act (ACA) in order to stoke fears about the law, even though parents are able to add new dependents onto ACA plans by directly contacting their insurance provider. Fox called the process more difficult than going through labor.
The January 3 edition of Fox News' Fox & Friends purported to report that the portion of HealthCare.gov that would allow consumers to report major life changes -- such as having a baby -- is not yet online and available to consumers, airing a graphic claiming "Obamacare lacks easy way to add baby to plan." Co-host Brian Kilmeade attempted to explain the sign-up process by comparing it to labor: "A lot of people think having a baby's tough. Know what's harder? Under Obamacare, getting that baby insured. So labor might be easier than getting insurance paperwork done." But co-host Steve Doocy took it even further, claiming that new babies cannot be added to ACA plans, saying "You might have a new dependent who's dependent on you and dependent on health care, but right now, you can't put them in on the Affordable Care Act."
But while the ACA's website, Healthcare.gov, is still working on its reporting system for consumers to add new dependents online, this information can be given directly to insurance providers in order to update ACA plans. As the Associated Press (AP) reported, parents can directly contact their insurer "to include the child immediately" on existing policies, and will "have to contact the government at some point later on." Parents must notify the government of the birth of a new baby because "[s]uch changes affect financial assistance available under the law," and may qualify for increased financial assistance under the ACA, AP wrote:
After the federal system is ready to process changes, parents will have to contact the government to formally bring their records up to date. Albright said parents will be able to add a new child to their policy for 30 days.
Having a baby could increase a family's monthly premiums, but it could also mean that the parents are eligible for a bigger tax credit to help with the cost. Under some circumstances, it could make the child or the family eligible for Medicaid, a safety-net program that is virtually free of cost to low-income beneficiaries.
In fact, having a child counts as a qualifying life event, that allows consumers enrolled in health insurance under the ACA to alter their coverage outside of the open enrollment period.
Fox has previously attacked provisions in the ACA designed to aid pregnant women and new mothers, claiming that a ban on discrimination against women in the health insurance market constitutes "sticking it to men" and denying the need for improved access to maternity coverage -- while ignoring the benefits of improved maternity care under the ACA.


text:
Komunitas gamer di Dragon Net. Kompleks Poris Indah Blok A9D No. 32 , Tangerang.
Sticky Threads
Normal Threads
Use this control to limit the display of threads to those newer than the specified time frame.
Allows you to choose the data by which the thread list will be sorted.
Order threads in...
Note: when sorting by date, 'descending order' will show the newest results first.
Forum Rules