text:
Stories From Patients & Staff
First-hand stories from our patients and staff
The latest news from our medical humanitarian programs
Statements & Opinion
Official statements from Médecins Sans Frontières, and Opinion-Editorials from our spokespeople.
Where you can find coverage of our work in Australian and New Zealand news media.
Find information about the work we are doing in countries around the world
How we respond to emergencies and disasters and help those in greatest need, no matter where they are.
Find out more about our medical approach in emergency and resource-poor contexts.
Read our activity reports and publications.
MSF Australia
Find out more about Médecins Sans Frontières' office in Australia.
Read our annual financial reports and find out more about our finances
Approved fundraising events are a great way to support our work.
Help us bear witness to the plight of our patients through social media.
Join us at one of our public events.
Send an eCard to your family or friends.
Resources for teachers and students
South Sudan: "People tell us these are the worst floods they have ever seen"
Kim Phillips, an MSF logistics coordinator in South Sudan has been part of the MSF emergency team responding to the severe flooding seen in the country.
A flooded village along the Sobat river, South Sudan. © Nicola Flamigni / MSF
"One of the worst-affected areas is Ulang in the north east. The devastation that we're witnessing there is unprecedented. The people in these areas are used to flooding, but they're telling us that these are the worst floods they've ever seen.
Many people have lost everything. They've lost their houses, they've lost their cattle and they've lost their crops. These are people who had very little in the first place, but they're now in a desperate situation.
Our emergency teams are out there every day, travelling in boats from village to village. As an emergency organisation, we need to go where the people are. We're providing healthcare through mobile clinics and distributing essential items, such as plastic sheet, blankets, cooking pots and mosquito nets and water. We've also set up water treatment facilities in two areas.
Galadriel Lopez Rozada, Emergency Nurse Coordinator, at work, during a mobile clinic. © Nicola Flamigni / MSF
We're doing our best to move people who need further medical care out of the area. Our biggest concern at the moment, however, is the risk of a cholera outbreak. We're also on the look-out for an increase in cases of diarrhoea and for a spike in patients with malaria.
The people here are incredibly resilient. So many areas have been cut off, and whole villages are underwater or have been turned into swamps. Under these conditions, it's very difficult for people to move around. They can't wade out of the area, as there is a real risk of snakes and crocodiles.
There was one woman we met who had lost virtually everything. Her home was a wreck, but she was determined to do something to help. She had taken the wooden walls of her house and had built a makeshift raft to ferry children to dry ground. She was doing what she could.
Getting around this area of South Sudan is a challenge, even at the best of times. It's a remote, inaccessible region, with few roads to speak of. Even though we've had a couple of days without rain, there are no signs that the floods are receding. The water is still coming in from Ethiopia along the Sobat river.
A father covers his daughter's eyes during a malaria test. © Nicola Flamigni / MSF
Even when the water does finally recede, the people here will still face serious difficulty. People will need new shelters and, with agriculture wiped out and people's cattle destroyed, malnutrition will be a real and ongoing risk.
It's heart-breaking to think about the years of conflict and civil war that these people have already lived through. And now they're suffering even more. It's difficult not to get emotional about it. Sometimes, after I've been out on the boats and I go back to my tent, where it's dry and I have food, I ask myself if there's more we could and should be doing. 'How can we reach more people? What else can we do to help?' I know the rest of the team feel the same.
But it does spur us on. I've been with MSF for many years now, but I never tire of the job. I'm always grateful to be able to do what I do. That's because I know the impact that MSF has. Even after this flooding is over, I know we will still be here, providing vital assistance where we can."
People stranded, cut off from care in severe flooding in South Sudan
South Sudan: "The only way to move around the hospital now is by boat"
Our medical approach
Work overseas
Work in our office
Volunteer in our office
Donate one-off
Find Médecins Sans Frontières Australia | Doctors Without Borders on FacebookFind Médecins Sans Frontières Australia | Doctors Without Borders on TwitterFind Médecins Sans Frontières Australia | Doctors Without Borders on LinkedInFind Médecins Sans Frontières Australia | Doctors Without Borders on Youtube
Médecins Sans Frontières Australia Ltd. ABN: 74 068 758 654. Registered Charity Number: CFN 11960.
All donations are processed in AUD. Donations over $2 are tax-deductible in Australia only.


text:
Wandfluh bezeichnet:
 den Grat Wandflue im Kanton Solothurn
 den Schweizer Politiker Hansruedi Wandfluh (* 1952)

redpajama_set_name: RedPajamaWikipedia


text:
Home >News >HACSU win registration and accreditation scheme for disability workforce
HACSU win registration and accreditation scheme for disability workforce
Today hundreds of HACSU members, with the support of other unions disrupted the Victorian State ALP Conference with a protest against plans by the Andrews Labor Government to privatise public disability services.
Delegates walked off the conference floor to meet HACSU members, people with disabilities and their friends and families out the front of the Moonee Valley Racecourse where the message was loud and clear: NO TO THE PRIVATISATION OF PUBLIC DISABILITY!
At the Conference today, HACSU put forward a resolution demanding the Government stand by the 2014 ALP Platform and keep public disability services in public hands. This resolution was passed unanimously by the 609 Conference Delegates.
In other developments at the Conference, the Government announced they will establish a legislated accreditation and registration scheme for the disability support workforce. This announcement is a result of today's action, along with the continued and intensive lobbying from HACSU members and officials who over the past 12 months have contacted and met with MPs, participated in community demonstrations and actions and provided evidence for HACSU submissions to various government inquiries.
The key benefit of a registration and accreditation scheme is that it will provide a much-needed layer of quality assurance and professionalism to the disability sector. This scheme will improve the quality and skills of workers and the safety of participants, particularly those who are highly vulnerable and unable to self-advocate. The scheme will also assist in improving perceptions of the sector to prospective workers by demonstrating that delivering supports to people with disability requires a skilled and qualified workforce.
Most importantly, this announcement has come about because of HACSU.
In other developments at today's conference, the Andrews Government announced that they are "committed to protecting the ongoing employment standards of public sector disability workers" and that they will "ensure that not a single one will be worse off as a result of the NDIS." Importantly, the Andrews' Labor Government will also fight for fair NDIS pricing and challenge the Commonwealth Government to deliver an NDIS which we can all be proud of. Whilst these are strong commitments, they do not commit to keeping public disability services in public hands.
Our campaign is delivering wins, but there's still more to do.
Together we can win the fight for quality disability services.
Let's keep up the campaign and demand Certainty for Disability.
Lloyd Williams
State Secretary
HACSU

redpajama_set_name: RedPajamaCommonCrawl


Angel investing involves individuals providing initial capital to an entrepreneur or start-up.
Angel investing is typically done by wealthy individuals who use their own money. It's usually a bridge between funds provided by friends or family members associated with the entrepreneur, or start-up owner, and more formal venture capital funds.
An angel investor typically provides the first funds in exchange for debt that can be converted into equity or for direct ownership equity.
Professional angel investors seek to invest in a range of investments with what they hope are clear exit strategies such as being acquired or conducting initial public offerings (IPOs).
An initial public offering, or IPO, is the first sale of stock by a company as it goes public. Initial public offerings often have a turbulent start on the stock market. Stakeholders (including angel investors) often sell a portion of their shares to recoup their investment during the first weeks and months that the stock is traded.
In the U.S., angel investing is generally done by individuals with a net worth of at least $1 million and who make at least $200,000 per year. Meeting these requirements allows them to be accredited by the Securities Exchange Commission (SEC).
Angel investors often want to see that raising additional funds is viable for the company before choosing to invest.
Discover how to make the most out of your savings and build the financial future of your dreams, claim your FREE digital copy of Wealth Management & Retirement Planning: Canada RRSP Contribution Limit, RRSP Interest Rates, TFSA Contribution Limit and More now.


text: Q: Multiplicativity of the Euler characteristic in an equivariant setting Let $E$ and $B$ be two complex varieties with finite group $G$-actions. Suppose there is a $G$-equivariant morphism $f\colon E\to B$ such that $f$ is a locally trivial fiber bundle with fiber $F$ in the complex topology. Denote by $[e(X)]:=\sum_{i}(-1)^{i}[H_{c}^{i}(X,\mathbb{C})]$ the alternating sum of the compactly supported singular cohomology groups as virtual $G$-representations. Assume that $B$ is irreducible. Is there a $G$-action on the cohomology groups of $F$ such that $[e(E)]=[e(B)][e(F)]$ as virtual $G$-representations $?$ For example, when $E\to B$ is a trivial bundle, although there may not be a well-defined action of $G$ on $F$, I think there is a well-defined action of $G$ on the cohomology groups of $F$.

redpajama_set_name: RedPajamaStackExchange


text:
Q: Scipy curve_fit gets stuck at bounds? (This is less a technical how-to question than trying to understand what's going on under the hood and whether what I'm encountering is a common issue. Please don't flag me!)
I've been running some nonlinear regressions with scipy.optimize.curve_fit and have been noticing that the optimization seems to get stuck at parameter bounds pretty often. For context, I've done a fair bit of nonlinear optimization with other software though I'm not expert at what goes into the algorithms; this is my first time using scipy for it, and it's just... getting stuck a lot more than I would expect.
A example of a function I'm feeding into curve_fit - here t and dn are various data series, length ~100-150:
def dynamic(exogs, alpha_0, delta, theta, beta):
    t, dn = exogs
    alpha_f = alpha_0 * delta
    return np.log(beta) - (alpha_0 + (1 - np.exp(-t/theta)) * (alpha_f - alpha_0)) * dn

non_bds = ([1e-02, 0.1, 5, 0],
           [1e02, 10, 1e03, 10])

fit_non = curve_fit(dynamic, [df['t'], df['dn']], Y, bounds=non_bds, loss='huber', max_nfev=1e06)

In this case, delta is getting stuck at bounds (0.1 or 10) about 90% of the time, and theta at bounds about 50% of the time, neither of which I expect.
I've found this answer where it seems curve_fit does sometimes behave weirdly, so am wondering - is it common for the optimizer for curve_fit to get stuck at bounds? Is this a known issue, and are there any good ways to address it either by tweaking any of the settings or with other workarounds?


text:
Proposed bill to cap out-of-pocket insulin costs
Posted 5:29 PM, September 4, 2019, by Samantha Galvez
Pa. - Diabetics across the country are rationing insulin because of the high cost. Several people have even died.
There's a proposed bill in the Pennsylvania House though that would put a cap on the monthly cost of insulin to $100 a month for people paying out-of-pocket. Which means a lot of things: people won't have to cut back their doses, they can get the better brands they need, and the most important - fewer deaths across the country.
According to the Health Care Cost Institute, a non-profit research group, in 2016, the average annual cost for a person with type one diabetes was $5,705 - a 600% increase over the last 18 years. Prices for other diabetics supplies have also skyrocketed each year.
"Nobody should have to make a decision on whether or not using a life-sustaining medication," State Representative Jeanne McNeill, of Lehigh County (D), the sponsor of the bill, said. "And if we can make legislation to help stop this then that's what we need to do."
It's a decision Red Lion native Donna Stough, a type two diabetic, has thought about but thankfully never had to do.
"I'm scared to do it," Stough said. "I do know that if I'm late in taking it, I can feel my numbers going up. And that puts a burden on your body. You can feel it. You get dizzy, you get light headed, blurred vision."
She has had to switch to lesser-preferred brands though. A similar bill was passed in Colorado earlier this year.
"My prescriptions are running me 300 dollars a month," Stough said. "For everything. But my insulin is the high ticket one."
This bill hasn't been introduced yet. McNeill is in the process of getting co-sponsors now. It will likely be officially introduced after lawmakers return to session later this month.
Topics: diabetes, diabetics, galvez, insulin, out-of-pocket, samantha galvez, type one, type one diabetic, type two
Families discuss costs of life-saving medicine as lawmakers propose new legislation
FAA to allow pilots with diabetes to fly commercial jets
1 in 5 US adolescents is now prediabetic, study says
Bill aims to protect domestic violence victims
Eating in a 6-hour window and fasting for 18 hours might help you live longer
Special flags needed at Indiantown Gap National Cemetery
No cash for the red kettle? Salvation Army now taking mobile payments
Northern York County Regional Police adds 3 municipalities to coverage area: Chief says seamless transition
Medical students take to the streets to give free care to Detroit's homeless
Shiloh Water System to remove fluoride from water
New Jersey bill would eliminate religion as a reason not to vaccinate schoolchildren
State lawmakers unveil legislation to lower prescription drug costs, ensure access to life-saving medications


Check the schedule and find out when & where hearings on the bills you're interested in will be held. Set time aside in your schedule and make sure you arrive early. And don't forget to take note of the room number.
Once you have determined the when & where of the hearing, contact your legislators to let them know you'll be coming to testify. They may be able to help make introductions to the committee members. Contact info for your senators can be found here and contact info for your representatives is available here.
Take time to prepare your testimony in advance. Practice what you are going to say. It's especially helpful to read your testimony to yourself out loud or to record yourself practicing and go back and listen. Weak phrasings that seem good on paper often reveal themselves when spoken out loud. Harvard has great advice on public speaking, here.
In your testimony, make sure you include your: (1) name and the town/city you live in, (2) personal connection to the bill, (3) accurate facts & evidence, and (4) a thank you to the committee for their time.
(Optionally) Print out 24 copies of your testimony to bring with you. These copies can be given to the committee members as a reference to look back on.
When speaking, be sure to keep your testimony short & to the point, remain calm and unhurried, and stay concise while answering any questions the committee may have for you.
For updates on bills we'll be following through the session, keep checking back at our action center. Now get out and participate in your democracy!


Jeremiah, known as the weeping prophet, knew the meaning of that promise at the core of his being.
Anyone who has suffered the death of a loved one, knows the meaning of it. To feel the jagged waves of gut-wrenching, heart-ripping pain of losing a husband, a wife, a child, a friend.
Anyone who has gone through betrayal by close friends, financial ruin, shattered dreams, accidents and sicknesses that forever altered the course of your life – knows the meaning of this promise too.
How can we still praise in our pain?
Last year, a friend of mine lost her 42-year-old husband to cancer – 8 months after he was diagnosed with it. After 20 years of marriage, she was left a widow with three children in elementary and high school. This month marks 9 months since her husband died. She agreed to let me share her recent reflections from her CaringBridge site.
God's refining and comfort are amazing. I am thankful that He is doing both in my life. I have been able to recognize that my biggest dream in life is still there, to grow closer to God each day.
The lie that Satan would want me to believe is that all my dreams are gone. There are many dreams and desires that God has taken away, and it is hard to let go of those. There is comfort in things staying the way they were when my husband was here. But God has a purpose for every thing that He allows.
We are learning what complete surrender looks like. We are also learning to trust God when the path we would like to take is not the path He wants us to walk down. It sounds so easy but it comes to a daily choice to say no to self-pity and bitterness.
A friend and I have a phrase that we text to remind each other…live above your circumstances. That is our reminder that our home is in heaven and all that we desire is there. God will give us the strength and wisdom to walk this road until He calls us home.
I have never understood what God says when He says to not let your hearts be troubled, and yet I think it is the balance of living in pain while resting in God's strength. It is peaceful and awful at the same time. It is broken and whole. It is a heart that is ripped out that knows that God is the only way to heal. It is knowing that it will hurt, but I will heal.


text:
Home / Healthy Eating / 23 Thanksgiving Food Facts That Will Blow Your Mind!
23 Thanksgiving Food Facts That Will Blow Your Mind!
Everything you wanted to know but were afraid to ask about your most important—and highest calorie—meal of the year!
By Lauren Brown West-Rosenthal
Published on November 8, 2016 | 8:00 PM
Thanksgiving is the ultimate meal of the entire year. For many people, months of planning and prepping go into some of the mouthwatering staples like turkey, stuffing, sweet potatoes, pumpkin pie, and more. But how much—beyond the fact that the pilgrims held the first Thanksgiving feast—do you really know about the food served at this beloved meal?
We dug deep and found some interesting, surprising, fun and even shocking facts to impress your friends and family as you gather 'round the table to give thanks for the abundance this season. Check 'em out and then discover the amazing truths behind What Happens to Your Body on Thanksgiving!
It's Pumpkin Pie Madness
For some of us, the main event is the dessert—and if you're all about tradition, then a nice slice of pumpkin pie satisfies your Turkey Day sweet tooth. Or maybe more than just a slice for you, since approximately 50 million pumpkin pies are consumed each Thanksgiving. (If there are eight slices per pie, that's 400 million slices…but there are only 320 million Americans.) Luckily, it's one of the healthier pies, as shown in our exclusive list of the 25 Most Popular Pies—Ranked!
"Stuffed" Is an Understatement
If you feel full, bloated, and ready to never eat again after your Thanksgiving feast, take solace in knowing you're not alone. The average person consumes an average of 3,000 calories at their Thanksgiving meal.
Those Turkeys Are Heavy…
Since turkey is typically considered the main event, have you ever wondered just how much turkey is consumed? Well, we're looking at around 736 million pounds of turkey that Americans eat on just Thanksgiving Day. For reference, that's about the weight of the Empire State Building.
…But Not Making You Sleepy
After that giant meal, you know how you can barely stay awake for the big football games but everyone blames it on the tryptophan in turkey? The truth is that the tryptophan doesn't really take effect because of all the other amino acids present in the meal. If you're tired, it's likely from all the preparation, socializing, cleaning, and bottomless glasses of wine and beer you had with your meal! Start bouncing back with these 15 Tips for Damage Control After You Ate Too Much!
Back to Pumpkin Pie
Are you a pumpkin pie aficionado? This one's for you: The book of Guinness World Records clocks in the largest pumpkin pie ever baked at 2,020 pounds and just over 12 feet long. It used 900 pounds of pumpkin, 62 gallons of evaporated milk, 155 dozen eggs, 300 pounds of sugar, 3.5 pounds of salt, 7 pounds of cinnamon, and 2 pounds of pumpkin spice. For something a bit smaller, look for your new favorite pie on this list of 20 Healthy Pie Recipes for Pie Lovers.
If You Prefer Pecan Pie …
Surprisingly, the most fattening item on your Thanksgiving menu is most likely the pecan pie. It has around 503 calories per slice, which isn't that much less than a McDonald's Big Mac. You can thank pecan pie's high calories to the massive amounts of sugar and corn syrup used to make it.
It's Green Bean Casserole's Big Day, Too
There are 40 million green bean casseroles made each year. That's a lot of Campbell's soup and fried onions for a side that you either love, hate, or love to hate! For a casserole that's a little bit easier on your waistline and will make your morning easier, check out these 20 Tips and Tricks for Better Breakfast Casseroles.
Thank You, Honest Abe
When it comes to the version of Thanksgiving that we know and love today, there's a lot to thank Abraham Lincoln for. It wasn't a national holiday until Honest Abe made it one in 1863 and declared that it would fall on the fourth Thursday of November. But Franklin D. Roosevelt moved the date in 1939 to the third Thursday to try and stimulate the economy toward holiday shopping. It stayed that way for two years until Roosevelt decided to move it back to the fourth Thursday we continue to celebrate today.
What the Fork?
Guess what the pilgrims neglected to use at the first Thanksgiving? Forks! Instead, they ate with spoons, knives, and their hands. Forks simply weren't a regular utensil back then.
Is It Even Possible to Burn Off the Calories?
Not to be downers, but it will take you awhile to burn off your Thanksgiving feast. A 150-pound person would have to run an average of 29 miles to burn off 2,800 calories. So, basically, you have to run a marathon. The good news? Here are 36 Ways to Cut 50 Calories or More to slash your intake elsewhere in your life!
Minnesota is Home of the Gobble Gobble
We're thankful for the great state of Minnesota; they provide the most turkeys each year at around 46 million birds. North Carolina comes in second at 32 million and then Arkansas at 30.5 million.
Cranberries Have Secret Clues
If you've been tasked with making some cranberry sauce from scratch, how can you tell if cranberries are ripe? Impress your guests by first throwing them on the floor to see if they bounce. If they're ripe and ready to eat, the air pockets inside allow them to bounce. If a cranberry is old or damaged, it will go limp.
If You Cooked the Meal, Some Calories Won't Count
If you're in charge of cooking Thanksgiving dinner from top to bottom, we have some excellent news for you: It's estimated that if you ran around the kitchen all day, you've probably burned about 700 calories! Get the place back in order—and better than ever—with these 25 Ways to Organize Your Kitchen for Weight Loss Success.
Pilgrims and Turkey Were Never a Match
We hate to bust the image that's been in your head since elementary school, but historians say turkeys weren't served at the first Thanksgiving! Instead, the pilgrims dined on deer or venison, ducks, geese, oysters, lobster, eel, and fish. They probably ate pumpkins, but not pumpkin pies. Also missing from the table: mashed potatoes, sweet potatoes, and cranberry sauce, just to name a few.
Thanksgiving Gave Birth to the TV Dinner
Food manufacturers are pretty clever, but this fact is a memorable one. Swanson created there frozen dinner meals in 1953 because Swanson had 260 tons of extra turkey that year. Unsure what to do with it, a salesman suggested packaging it onto aluminum trays with other sides like sweet potatoes. (Airline meals are also said to have helped inspire the trays!) Regardless, we hope that Swanson employee got a big bonus that year. It's not our favorite brand among the 22 Best & Worst Frozen Dinners but we appreciate the clever way they avoided food waste!
Thanksgiving Could Have Been a Fast
If it wasn't for the Wampanoag Indians, Thanksgiving dinner might have looked very different today. In fact, so different that it would have been the complete opposite of abundance and instead be about not having food. You see, the early settlers actually gave thanks by praying and abstaining from food. They were even going to do that when they celebrated the first harvest, but thankfully the Indians joined them and their fast turned into a three-day feast! Phew!
Pardon You, Mr. Turkey
Each year, the president of the U.S pardons a turkey from being killed and eaten at a Thanksgiving dinner. The first turkey pardon ceremony started with President Truman in 1947. How this hasn't become a meme yet, we don't know.
The Biggest, Fattest Turkey
According to the book of Guinness World Records, the heaviest turkey on record weighed in at 86 pounds. To give some perspective on how massive that is for the bird, the average Thanksgiving day turkey weighs around 15 pounds. Feeling a little bit like that oversized bird? Try these 26 Most Overlooked Ways to Lose Weight.
California Dreams, Too
With so many vegetarians in California, you might think the west coast state wouldn't be so into the turkey thing. But it turns out that Californians actually consume the most turkey out of any other state in the U.S. on Thanksgiving Day! Probably because it's such a huge state, but it's still a fun fact.
It's Butterball to the Rescue
If you're new to the turkey cooking game, there's nothing better than the Butterball Turkey Talk-Line to get you through the uncertainty and panic! It opened nearly 30 years ago with just six home economists to field questions that came in from about from 11,000 panicked home chefs. Today, there's about 50 professionally-trained, college-educated home economists and nutritionists who answer the questions of more than 100,000! Need the number? 1-800-BUTTERBALL
DON'T MISS: 23 Questions for Nutritionists from People Who Love to Drink
We teach our kids that turkeys say "gobble gobble"—and they do—but it's only the male turkeys that say it. In fact, they say it so loudly that they can be heard up to a mile away!
Know These Food Safety Numbers
Keep in mind that your turkey is safe to eat, as measured with a meat thermometer at 165 degrees Fahrenheit. And if your Turkey Day feast is long and lingering, just remember that two hours is the max amount of time that food should be left at room temperature.
Pie Liars Are in the House
According to the American Pie Council (yep, that's a thing!), six million men ages 35 to 54 have admitted to eating the last slice of pie but denying it when asked. Also, one in five Americans has eaten an entire pie by themselves. FYI, an 8-inch pumpkin pie clocks in at about 2,000 calories, while an apple pie has around 2,500 calories and a pecan pie has 4,000. Not that it stops us—35 percent of Americans say they've have had pie for breakfast! Sounds like one of the 20 Worst Breakfast Habits for Your Waistline to us, unfortunately!
Facts // Holiday // Thanksgiving
More in Healthy Eating
8 Healthy Foods That Can Also Be Toxic
How To Stop Avocados From Going Bad Too Soon
High-Carb Foods That Won't Make You Fat
Toxic Fad Diets That Could Shorten Your Life
Grab-&-go Breakfasts With High-quality Ingredients


Eight days ago, we welcomed Seth into the world. Having made us wait nine days beyond his due date, he obviously panicked about his apparent tardiness, as he then proceeded to arrive just two and a half hours after Jill started feeling the contractions, and a mere 30 minutes after we arrived at the hospital. The considerate kid must understand I have a blog to write, and that is some prime material with which to fill these digital pages. This baby is paying back immediately.
It's been a hectic week-and-a-bit so far, but it's striking how much I must have forgotten about Elsa's early days. Stuff that has come flooding back now that I am partially responsible for young Seth.
Babies are, generally speaking, the smallest humans, but the scale of their minuscularity is particularly striking when you are used to dealing with a toddler. Before Seth was born, I could happily pick three-year-old Elsa up, lift her over my head and tickle her without giving it a second thought. Now, after handling the boy for a week or so, he seems as if he's filled with helium and lifting Elsa makes me feel like Geoff Capes placing the final Atlas stone atop the podium.
I am used to helping a toddler dress and undress, which means being shouted at and told "I can do it, daddy" on a regular basis and keeping quiet as she attempts to force her arms down two trouser legs. Despite this, on the whole, she really can do it. Seth most certainly cannot.
It was a shock to rediscover that dressing a baby is much like trying to thread overcooked spaghetti through one of those curly drinking straws.
Did you have a birthing playlist? We certainly did the first time round, but there wasn't enough time to take the CDs out before Seth arrived. I presume you'll have had some of those delightful soothing classics on your playlist – Air, Sigur Rós, that kind of thing.
As we waited to be discharged, I passed the time by perusing the CDs that had been left in the birthing suite to see what else people had been blasting out as their children were born. The results were not quite what I expected.
Do you really want your infant's first experience of the world to be Johnny Rotten slurring about being an antichrist? And imagine being able to say that, albeit for a short time, 100 percent of the music your child had heard in their life was recorded by long lost X Factor series one winner, Steve Brookstein.
I get the idea that she would be able to tell you, "excuse me, but your arms appear to be on fire" without panicking you in the slightest.
Due to the speed of his birth, Seth developed this occasional shudder that meant he struggled for the first few days of his life to lie on his back for any amount of time without waking himself up. He's actually a pretty good sleeper, but for a while, one of us had to be awake as he slept on their chest. The plus side is that I have caught up on a whole host of Netflix content that I'd missed in recent years through the early nights, but parenting two children on no sleep is challenging to say the least.
The happy news is that I think we may have now cracked getting him to settle in the cot, which means that we might also be able to sleep in our own bed at the same time for the first time since he was born. Annoyingly, I was only one episode into Making a Murderer by this point, but I guess sometimes you have to be pragmatic.
Giving birth standing up, with no drugs and out of range of the gas and air? Yeah, I'm not messing with Jill any time soon. From now on, I will note down every hair appointment she books in my calendar, so I don't fail to notice and incur her wrath. Again.
Any more to add? Stick them in the comments.


of sales, it is the third biggest Stockmann department store, after the. Kindly post your comments, Complaints and Reviews below. La 721, su 1021, tapahtumat info, vantaa Jumbo, vantaanportinkatu 3, 01510 Vantaa.
La 921, su 1118, tapahtumat info. Wir verwenden Cookies, um Inhalte zu personalisieren, Werbeanzeigen maßzuschneidern und zu messen sowie die Sicherheit unserer Nutzer zu erhöhen. Helsingin keskusta, aleksanterinkatu 52, 00100 Helsinki, tavaratalo: Mape 921. Tampere, hämeenkatu 4, 33100 Tampere, tavaratalo: Mape 920, la 919, su 1118, tapahtumat info. Helsinki centre and, tapiola stores. Turku, yliopistonkatu 22, 20100 Turku, tavaratalo: Mape 920 La 919 Su 1118 Herkku: Mape 721 La 721 Su 1018 Tapahtumat info Aukioloajat Baltiassa.
La 919, su 1118, herkku: Mape 722. How Satisfied are you with Forex Stockmann? Tockmann Tampere by floors *The bottom floor has the Stockmann Herkku food store and an Alko store. The third floor has a Stockmann Buffet café-restaurant, domestic textiles, domestic equipment, gifts, glass and porcelain, pet supplies, a Micronia electronics store, CDs xe btc euroa and DVDs, radios and TVs, cleaning equipment, washing and cleaning detergents, domestic supplies, sports equipment, plants and bedsheets. It moved to its current quarters on Hämeenkatu near the Tampere railway station in 1981. History * 1957, 1965: Stockmann's first "local department store" was opened at Hämeenkatu in Tampere, and significantly expanded in 1965. The One Way youth fashion store is located at Kyttälänkatu.


BAR readers have long enjoyed learning about the Biblical world's most important and exciting finds from the actual archaeologists who excavate and study them—legendary archaeologists and Biblical scholars like Yigael Yadin, William F. Albright and William Dever. Now, in these articles and interviews, hand-selected by Biblical Archaeology Society editors especially for members of the BAS Library, you can learn even more about the intriguing life stories and professional accomplishments of these brilliant scholars.
Kathleen Kenyon's Anti-Zionist Politics—Does It Affect Her Work?


Noboru Takizawa built a mysterious school, but it has problems. At the troubled school, 7 transfer students appear and they all have the first name Kakeru. These 7 students are actually sent to the school on a mission. It is to improve the school's problems from the inside.
Stream Blazing Transfer Students - Season 01 2017 Free Online Episodes - Yify TV.


Urban Muser: to break or not to break?
So, I think I am going to participate in the August Break. Well, sort of. Kind of. Maybe like an August mini-break.
Over the next month--here and there--I will just post a photo with no a few words. But then again sometimes I might just blog one of my regular posts with lots of pictures and words. I don't know. And I will still be linking up at my usual weekly spots. And for sure, I'll still be coming around and commenting on all your lovely blogs. That part is for sure.
Oh boy, yes, let's just call it an August mini-break.
Oh, seems everyone is hopping on the band wagon of August break ... what to do, what to do!
I thought about it... it is everywhere! But i dont like being trapped into wordless posts everyday. So just plodding along as usual over here.
P.S i have a few little ideas for the smiles project, now i just need time!
i agree with nancy... trying to let the photos speak for themselves. but today had to add some words.
PS. Sorry I've been quiet, I'm now back from a blogging break.
I did plan on just photos and will be having just photo posts but sometimes words seem appropriate. I, like you am going to plan on one thing without any rules and see where that takes me. Look forward to your posts!
Great shot - I wish I could just shutup for a month but like you, I'd probably still have words. I can't help myself.
I love your urban shots...each one tells a story! Really, there are no rules for the August Break, so you can do whatever. I decided to start with one word, but then started adding one each day, and maybe I'll continue that, or not.
I was in the same dilemma - thanks for the solution! A 'mini-break- it is!
this photo is the real deal! love it!
I may follow your example and participate when I feel like it.
You do whatever you want...just post. Love this image. Your street photography is the bomb. Great catch-her outfit is perfect for the scene.
So glad you'll be doing the August Break! Nice thing about it is that there are no strict rules. Just a relaxing good time, and so many nice people!! I love your street shots, and this one is fantastic!
Love the patterning in this capture! Life on NY's streets sure is picturesque!


text:
Q: Solve the following in vector form:
So i did a substitution to solve the system normally, and got
$x=17.67$
$y=9.67$
$z=10.67$
Where I am stuck is how to represent something like this in a vector form, maybe my solution was wrong in the first place.

A: For example
\begin{align}
(1,2,-3)^T \cdot x &= 5 \\
(2,1,-3)^T \cdot x &= 13 \\
(-1,1,0)^T \cdot x &= -8
\end{align}
where $x = (x_1,x_2,x_3)^T$.
But more usual is using a matrix equation
$$
A x = b
$$
with $A$ using the above first argument vectors as row vectors and
$b = (5, 13, -8)^T$.
The solution would be $x = A^{-1} b$, if $A$ is invertible.
In your case it is not. Your solution works, so there must be infinite many solutions.
$$
(A | b) = \\
\left(
\begin{array}{rrr|r}
 1 & 2 & -3 & 5 \\
 2 & 1 & -3 & 13 \\
-1 & 1 &  0 & -8
\end{array}
\right)
\to \\
\left(
\begin{array}{rrr|r}
1 &  2 & -3 &  5 \\
0 & -3 &  3 &  3\\
0 &  3 & -3 & -3
\end{array}
\right)
\to \\
\left(
\begin{array}{rrr|r}
1 & 0 & -1 &  7 \\
0 & 1 & -1 & -1 \\
0 & 0 &  0 &  0
\end{array}
\right)
$$
This gives the general solution $x = (7 + x_3,-1 + x_3, x_3)^T$ with arbitrary $x_3 \in \mathbb{R}$.

A: Write your solution as $(17.67,9.67,10.67)$, then it is in vector form.


Dana means donations. Monasteries, Zendos, Ashrams and spiritual teachers survive on the donations they receive from those they serve. For a long time I offered my teaching and healing for free. It seemed right to do this. After all, this really flows through me and not from me as an individual separate person. I felt I could neither take personal credit for it nor charge for it. But now that I am serving many more people and reaching people on-line as well, expenses have arisen that were not here before.
Charging for spiritual work can be a tricky business and I am very aware of this. Too often I have seen spiritual teachers place money over the pure flow of infinite wisdom that is owned by no individual person. And this has certainly lessened and even corrupted the effectiveness of their teaching in spite of its apparent popularity. I am very committed that this will not happen here. My only concern is your awakening. My purpose and the purpose of all human consciousness is same – your awakening.
There is another aspect to this that involves you. I clearly give a great deal in the group and individual sessions. I give of myself completely. I am rewarded in doing this far more than any amount of money could give. I am committed to you 100% because you and I are not separate. And this is why your awakening is so rewarding to me. But your commitment to your awakening must also be strong. If you are not committed to this through your entire life, then an Enlightenment Experience session will only be a temporary vacation not a transformation.
We are asking nothing less than a complete transformation of your entire life. From suffering to freedom. From alternating swings between pain and pleasure to unchanging peace, love and well-being. From the personal to the infinite. We are asking nothing less than Enlightenment. To do this, you must be fully committed both during the sessions with me (which is relatively easy) and outside of them (which can be more challenging). When you make a commitment of dana, you are committing more of yourself than you would if you paid nothing. So it is useful for you too.
These amounts were arrived at in the following way. My only concern is your awakening so I want the amount to be affordable for everyone yet also be the minimum you would need to feel a sense of commitment and energy exchange. $10 seemed to be the right amount as it is less than a walk-in yoga session so should be affordable to everyone. If even this amount is more than you can afford, if you're really struggling financially, then don't worry about it. I won't turn anyone away who is committed to waking up. If you would like to pay more and can afford it, this is also welcome.
The $50 fee for individual sessions was arrived at in a similar way. It is $25 less than most people charge. Again, if you are really struggling financially at the moment, but are deeply committed to your awakening, then this fee can be lessened or waived entirely. If you would like to pay more, you are welcome to do this as well.
I have also done this with my paintings. I realized that many people could benefit from these paintings but could not afford the originals. So I now only sell them as prints so everyone has access to them. And I feel the same way about the Enlightenment Experience sessions. Nobody should be turned away for lack of funds. This is not about money. It's about waking up. And that's far more important.
You can sign up, schedule and pay for your session in the following pages.
Sign up and pay for the Living Awake Group sessions here.
Pay $10 per group session. Pay Per Session.
Pay $32 for four sessions. Pay Per Month.
Sign up, schedule and pay for individual session here. Individual Sessions.
If you are financially unable to pay, please contact me directly and we can make other arrangements. Contact me.
Appreciate your integrity! …..am contemplating my options….and thank you!


text:
// Copyright 2010-2014, Google Inc.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are
// met:
//
//     * Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
//     * Redistributions in binary form must reproduce the above
// copyright notice, this list of conditions and the following disclaimer
// in the documentation and/or other materials provided with the
// distribution.
//     * Neither the name of Google Inc. nor the names of its
// contributors may be used to endorse or promote products derived from
// this software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

// TODO(hsumita): Introduces Closure library into mozc code tree if we release
// this file as an open source.

goog.require('goog.array');
goog.require('goog.testing.MockControl');
goog.require('goog.testing.mockmatchers.ArgumentMatcher');
goog.require('goog.testing.mockmatchers.IgnoreArgument');

/**
 * Finds an item in an array, returns the index, or -1 if not found.
 * @param {Array.<Object>} array Target array.
 * @param {Object} target Taret you want to get a index.
 * @return {number} -1 if array doesn't contain the item, or index of the item.
 */
function findInArray(array, target) {
  return goog.array.findIndex(array, function(elem) {
    return elem === target;
  });
}

/**
 * Overwrite the function by empty one.
 * @param {!Object} obj Target object.
 * @param {string} fullName The name of the function.
 * @return {function} An original function.
 */
function overwriteByEmptyFunction(obj, fullName) {
  var names = fullName.split('.');
  var original = obj[names[0]];

  for (var i = 0; i < names.length; ++i) {
    obj = obj[names[i]] = function() {};
  }

  return original;
}

var ENGINE_ID = '12345';
var CONTEXT = {
  contextID: 67890,
  type: 'text'
};

var mockControl = null;
var callbackMatcher = null;
var _ = null;

function setUp() {
  mockControl = new goog.testing.MockControl();
  callbackMatcher =
      new goog.testing.mockmatchers.ArgumentMatcher(function(obj) {
    return typeof(obj) == 'function';
  });
  _ = new goog.testing.mockmatchers.IgnoreArgument();
}

function tearDown() {
  mockControl.$tearDown();
  mockControl = null;
}

function getIme() {
  // Sets a dummy method, activates IME, and restores original one.
  var api = chrome.input.ime;

  if (!api.onActivate) {
    fail('api.onActivate is not defined!');
  }
  if (!chrome.input.ime.onActivate) {
    fail('chrome.input.ime.onActivate is not defined!');
  }
  if (!chrome.input.ime.onActivate.addListener) {
    fail('chrome.input.ime.onActivate.addListener is not defined!');
  }

  var originalOnActivateListener =
      overwriteByEmptyFunction(api, 'onActivate.addListener');
  var originalOnDeactivatedListener =
      overwriteByEmptyFunction(api, 'onDeactivated.addListener');
  var originalOnFocusListener =
      overwriteByEmptyFunction(api, 'onFocus.addListener');
  var originalOnBlurListener =
      overwriteByEmptyFunction(api, 'onBlur.addListener');
  var originalOnInputContextUpdateListener =
      overwriteByEmptyFunction(api, 'onInputContextUpdate.addListener');
  var originalOnKeyEventListener =
      overwriteByEmptyFunction(api, 'onKeyEvent.addListener');
  var originalOnCandidateClickedListener =
      overwriteByEmptyFunction(api, 'onCandidateClicked.addListener');
  var originalOnMenuItemActivatedListener =
      overwriteByEmptyFunction(api, 'onMenuItemActivated.addListener');
  var originalSetMenuItems = overwriteByEmptyFunction(api, 'setMenuItems');

  var ime = new sampleImeForImeExtensionApi.SampleIme;
  ime.onActivate(ENGINE_ID);

  api.onActivate = originalOnActivateListener;
  api.onDeactivated = originalOnDeactivatedListener;
  api.onBlur = originalOnBlurListener;
  api.onInputContextUpdate = originalOnInputContextUpdateListener;
  api.onKeyEvent = originalOnKeyEventListener;
  api.onCandidateClicked = originalOnCandidateClickedListener;
  api.onMenuItemActivated = originalOnMenuItemActivatedListener;
  api.setMenuItems = originalSetMenuItems;

  ime.onFocus(CONTEXT);

  return ime;
}

function testInsertCharacters() {
  var ime = getIme();

  assertEquals('', ime.inputText_);
  assertEquals(0, ime.segments_.length);
  assertEquals(0, ime.cursor_);
  assertEquals(sampleImeForImeExtensionApi.SampleIme.State.PRECOMPOSITION,
               ime.state_);

  ime.insertCharacters_('a');
  assertEquals('a', ime.inputText_);
  assertEquals(1, ime.segments_.length);
  assertEquals(1, ime.cursor_);
  assertEquals(0, ime.focusedSegmentIndex_);
  assertEquals(sampleImeForImeExtensionApi.SampleIme.State.COMPOSITION,
               ime.state_);

  ime.insertCharacters_('bc');
  assertEquals('abc', ime.inputText_);
  assertEquals(1, ime.segments_.length);
  assertEquals(3, ime.cursor_);
  assertEquals(0, ime.focusedSegmentIndex_);
  assertEquals(sampleImeForImeExtensionApi.SampleIme.State.COMPOSITION,
               ime.state_);

  ime.moveCursor_(1);
  ime.insertCharacters_('A');
  assertEquals('aAbc', ime.inputText_);
  assertEquals(1, ime.segments_.length);
  assertEquals(2, ime.cursor_);
  assertEquals(0, ime.focusedSegmentIndex_);
  assertEquals(sampleImeForImeExtensionApi.SampleIme.State.COMPOSITION,
               ime.state_);
}

function testRemoveCharacter() {
  var ime = getIme();

  ime.insertCharacters_('abcde');
  assertEquals('abcde', ime.inputText_);
  assertEquals(5, ime.cursor_);
  assertEquals(sampleImeForImeExtensionApi.SampleIme.State.COMPOSITION,
               ime.state_);

  ime.moveCursor_(2);

  ime.removeCharacter_(0);
  assertEquals('bcde', ime.inputText_);
  assertEquals(1, ime.cursor_);
  assertEquals(sampleImeForImeExtensionApi.SampleIme.State.COMPOSITION,
               ime.state_);

  ime.removeCharacter_(3);
  assertEquals('bcd', ime.inputText_);
  assertEquals(1, ime.cursor_);
  assertEquals(sampleImeForImeExtensionApi.SampleIme.State.COMPOSITION,
               ime.state_);

  ime.removeCharacter_(-1);
  assertEquals('bcd', ime.inputText_);
  assertEquals(1, ime.cursor_);
  assertEquals(sampleImeForImeExtensionApi.SampleIme.State.COMPOSITION,
               ime.state_);

  ime.removeCharacter_(4);
  assertEquals('bcd', ime.inputText_);
  assertEquals(1, ime.cursor_);
  assertEquals(sampleImeForImeExtensionApi.SampleIme.State.COMPOSITION,
               ime.state_);

  ime.removeCharacter_(1);
  assertEquals('bd', ime.inputText_);
  assertEquals(1, ime.cursor_);
  assertEquals(sampleImeForImeExtensionApi.SampleIme.State.COMPOSITION,
               ime.state_);

  ime.removeCharacter_(0);
  ime.removeCharacter_(0);
  assertEquals('', ime.inputText_);
  assertEquals(0, ime.cursor_);
  assertEquals(sampleImeForImeExtensionApi.SampleIme.State.PRECOMPOSITION,
               ime.state_);
}

function testMoveCursor() {
  var ime = getIme();

  // Precomposition mode.
  ime.moveCursor_(1);
  assertEquals(0, ime.cursor_);

  // Composition mode.
  ime.insertCharacters_('abcde');
  ime.moveCursor_(2);
  assertEquals(2, ime.cursor_);
  ime.moveCursor_(-1);
  assertEquals(2, ime.cursor_);
  ime.moveCursor_(100);
  assertEquals(2, ime.cursor_);

  // Conversion mode.
  ime.focusCandidate_(1);
  ime.moveCursor_(0);
  assertEquals(2, ime.cursor_);
}

function testExpandShrinkSegment() {
  var ime = getIme();

  ime.isUpdated_ = [];
  ime.generateCandidates_ = function(opt_segmentIndex) {
    var segmentIndex = (opt_segmentIndex == null) ?
        this.focusedSegmentIndex_ : opt_segmentIndex;
    this.isUpdated_[segmentIndex] = true;
  };
  ime.clearUpdatedSegmentList_ = function() {
    this.isUpdated_ = [];
  };
  ime.compareUpdatedSegmentIndexes_ = function(indexes) {
    for (var i = 0; i < indexes.length; ++i) {
      if (!this.isUpdated_[indexes[i]]) {
        return false;
      }
    }
    return true;
  };

  ime.compareSegmentBoundaries_ = function(indexes) {
    if (this.segments_.length !== indexes.length) {
      return false;
    }
    for (var i = 0; i < this.segments_.length; ++i) {
      if (this.segments_[i].start !== indexes[i]) {
        return false;
      }
    }
    return true;
  };

  ime.insertCharacters_('abcde');
  assertEquals(sampleImeForImeExtensionApi.SampleIme.State.COMPOSITION,
               ime.state_);

  // abcde -> abcde
  ime.clearUpdatedSegmentList_();
  ime.expandSegment_();
  assertTrue(ime.compareUpdatedSegmentIndexes_([]));
  assertTrue(ime.compareSegmentBoundaries_([0]));
  assertEquals(sampleImeForImeExtensionApi.SampleIme.State.CONVERSION,
               ime.state_);

  // abcde -> abcd|e
  ime.clearUpdatedSegmentList_();
  ime.shrinkSegment_();
  assertTrue(ime.compareUpdatedSegmentIndexes_([0, 1]));
  assertTrue(ime.compareSegmentBoundaries_([0, 4]));

  // abcd|e -> abcde|
  ime.clearUpdatedSegmentList_();
  ime.expandSegment_();
  assertTrue(ime.compareUpdatedSegmentIndexes_([0]));
  assertTrue(ime.compareSegmentBoundaries_([0]));

  // abcde| -> ab|cde
  ime.shrinkSegment_();
  ime.shrinkSegment_();
  ime.shrinkSegment_();

  // ab|cde -> a|bcde
  ime.clearUpdatedSegmentList_();
  ime.shrinkSegment_();
  assertTrue(ime.compareUpdatedSegmentIndexes_([0, 1]));
  assertTrue(ime.compareSegmentBoundaries_([0, 1]));

  // a|bcde -> a|bcde
  ime.clearUpdatedSegmentList_();
  ime.shrinkSegment_();
  assertTrue(ime.compareUpdatedSegmentIndexes_([]));
  assertTrue(ime.compareSegmentBoundaries_([0, 1]));

  // a|bcde -> ab|cde
  ime.clearUpdatedSegmentList_();
  ime.expandSegment_();
  assertTrue(ime.compareUpdatedSegmentIndexes_([0, 1]));
  assertTrue(ime.compareSegmentBoundaries_([0, 2]));

  ime.focusedSegmentIndex_ = 1;

  // ab|cde -> ab|cd|e
  ime.clearUpdatedSegmentList_();
  ime.shrinkSegment_();
  assertTrue(ime.compareUpdatedSegmentIndexes_([1, 2]));
  assertTrue(ime.compareSegmentBoundaries_([0, 2, 4]));

  // ab|cd|e -> ab|cde
  ime.clearUpdatedSegmentList_();
  ime.expandSegment_();
  assertTrue(ime.compareUpdatedSegmentIndexes_([1]));
  assertTrue(ime.compareSegmentBoundaries_([0, 2]));

  // ab|cde -> ab|c|de
  ime.shrinkSegment_();
  ime.shrinkSegment_();

  // ab|c|de -> ab|c|de
  ime.clearUpdatedSegmentList_();
  ime.shrinkSegment_();
  assertTrue(ime.compareUpdatedSegmentIndexes_([]));
  assertTrue(ime.compareSegmentBoundaries_([0, 2, 3]));

  // ab|c|de -> ab|cd|e
  ime.clearUpdatedSegmentList_();
  ime.expandSegment_();
  assertTrue(ime.compareUpdatedSegmentIndexes_([1, 2]));
  assertTrue(ime.compareSegmentBoundaries_([0, 2, 4]));

  // ab|cd|e -> abc|d|e
  ime.focusedSegmentIndex_ = 0;
  ime.expandSegment_();

  // abc|d|e -> abcd|e
  ime.clearUpdatedSegmentList_();
  ime.expandSegment_();
  assertTrue(ime.compareUpdatedSegmentIndexes_([0]));
  assertTrue(ime.compareSegmentBoundaries_([0, 4]));
}

function testResetSegments() {
  var ime = getIme();

  ime.resetSegments_();
  assertEquals(sampleImeForImeExtensionApi.SampleIme.State.PRECOMPOSITION,
               ime.state_);
  assertEquals(0, ime.segments_.length);

  ime.insertCharacters_('abc');
  ime.resetSegments_();
  assertEquals(sampleImeForImeExtensionApi.SampleIme.State.COMPOSITION,
               ime.state_);
  assertEquals(1, ime.segments_.length);

  ime.state_ = sampleImeForImeExtensionApi.SampleIme.State.CONVERSION;
  ime.resetSegments_();
  assertEquals(sampleImeForImeExtensionApi.SampleIme.State.COMPOSITION,
               ime.state_);
  assertEquals(1, ime.segments_.length);

  ime.shrinkSegment_();
  ime.resetSegments_();
  assertEquals(sampleImeForImeExtensionApi.SampleIme.State.COMPOSITION,
               ime.state_);
  assertEquals(1, ime.segments_.length);
}

function testCandidates() {
  var ime = getIme();

  ime.insertCharacters_('foostar');
  assertEquals(1, ime.segments_.length);
  assertNotEquals(0, ime.segments_[0].candidates.length);
  assertEquals('\uFF46\uFF4F\uFF4F\uFF53\uFF54\uFF41\uFF52',  // 'foostar'
               ime.segments_[0].candidates[0]);

  // 'foostar' -> 'foo|star'
  ime.shrinkSegment_();
  ime.shrinkSegment_();
  ime.shrinkSegment_();
  ime.shrinkSegment_();

  assertEquals(2, ime.segments_.length);
  assertNotEquals(0, ime.segments_[0].candidates.length);
  assertNotEquals(0, ime.segments_[1].candidates.length);
  assertEquals('\uFF46\uFF4F\uFF4F',  // 'foo'
               ime.segments_[0].candidates[0]);
  assertEquals('\uFF53\uFF54\uFF41\uFF52',  // 'star'
               ime.segments_[1].candidates[0]);
  assertNotEquals(-1, findInArray(ime.segments_[1].candidates,
                                  '\u2606'));  // '☆'

  // Dummy candidates.
  var dummyCandidate = 'DummyCandidate1';
  ime.useDummyCandidates_ = false;
  ime.generateCandidates_(0);
  assertEquals(-1, findInArray(ime.segments_[0].candidates, dummyCandidate));
  ime.useDummyCandidates_ = true;
  ime.generateCandidates_(0);
  assertNotEquals(-1, findInArray(ime.segments_[0].candidates, dummyCandidate));

  var segmentLength = ime.segments_.length;
  ime.getInputTextOnSegment_(-1);
  assertEquals(segmentLength, ime.segments_.length);
  ime.getInputTextOnSegment_(100);
  assertEquals(segmentLength, ime.segments_.length);
}

function testSelectCandidate() {
  var ime = getIme();

  ime.focusCandidate_(0);
  assertEquals(sampleImeForImeExtensionApi.SampleIme.State.PRECOMPOSITION,
               ime.state_);
  assertEquals(0, ime.segments_.length);

  ime.insertCharacters_('abcde');
  ime.focusCandidate_(0);
  assertEquals(sampleImeForImeExtensionApi.SampleIme.State.CONVERSION,
               ime.state_);
  assertEquals(0, ime.segments_[0].focusedIndex);

  ime.focusCandidate_(1);
  assertEquals(sampleImeForImeExtensionApi.SampleIme.State.CONVERSION,
               ime.state_);
  assertEquals(1, ime.segments_[0].focusedIndex);

  ime.shrinkSegment_();
  ime.focusSegment_(1);
  ime.focusCandidate_(2);
  assertEquals(2, ime.segments_[1].focusedIndex);

  ime.focusCandidate_(100);
  assertEquals(2, ime.segments_[1].focusedIndex);

  ime.focusCandidate_(-1);
  assertEquals(2, ime.segments_[1].focusedIndex);
}

function testGetPreeditText() {
  var ime = getIme();

  assertEquals('', ime.getPreeditText_());

  ime.insertCharacters_('foo');
  assertEquals('\uFF46\uFF4F\uFF4F', ime.getPreeditText_());  // 'foo'

  ime.insertCharacters_('star');
  // 'foostar' -> 'foo|star'
  ime.shrinkSegment_();
  ime.shrinkSegment_();
  ime.shrinkSegment_();
  ime.shrinkSegment_();
  ime.focusSegment_(1);
  var index = findInArray(ime.segments_[1].candidates, '\u2606');  // '☆'
  assertNotEquals(-1, index);
  ime.focusCandidate_(index);
  assertEquals('\uFF46\uFF4F\uFF4F\u2606', ime.getPreeditText_());  // 'foo☆'
}

function testUpdatePreedit() {
  var ime = getIme();

  // Precomposition mode.
  mockControl.createMethodMock(chrome.input.ime, 'clearComposition')({
    contextID: CONTEXT.contextID
  }, callbackMatcher).$times(1);
  mockControl.$replayAll();
  ime.updatePreedit_();
  mockControl.$verifyAll();
  assertEquals(sampleImeForImeExtensionApi.SampleIme.State.PRECOMPOSITION,
               ime.state_);

  // Composition mode.
  ime.insertCharacters_('abstarc');
  ime.moveCursor_(2);
  mockControl.createMethodMock(chrome.input.ime, 'setComposition')({
    contextID: CONTEXT.contextID,
    text: '\uFF41\uFF42\uFF53\uFF54\uFF41\uFF52\uFF43',  // 'abstarc'
    segments: [{
      start: 0,
      end: 7,
      style: 'underline'
    }],
    cursor: 2
  }, callbackMatcher).$times(1);
  mockControl.$replayAll();
  ime.updatePreedit_();
  mockControl.$verifyAll();
  assertEquals(sampleImeForImeExtensionApi.SampleIme.State.COMPOSITION,
               ime.state_);

  // 'abstarc' -> 'ab|star|c'
  ime.shrinkSegment_();
  ime.shrinkSegment_();
  ime.shrinkSegment_();
  ime.shrinkSegment_();
  ime.shrinkSegment_();
  ime.focusSegment_(1);
  ime.shrinkSegment_();

  // Conversion mode.
  ime.focusCandidate_(findInArray(ime.segments_[1].candidates,
                                  '\u2606'));  // '☆'
  assertEquals('\uFF41\uFF42\u2606\uFF43', ime.getPreeditText_());
  mockControl.createMethodMock(chrome.input.ime, 'setComposition')({
    contextID: CONTEXT.contextID,
    text: '\uFF41\uFF42\u2606\uFF43',  // 'ab☆c'
    selectionStart: 2,
    selectionEnd: 3,
    segments: [
      {
        start: 0,
        end: 2,
        style: 'underline'
      }, {
        start: 2,
        end: 3,
        style: 'doubleUnderline'
      }, {
        start: 3,
        end: 4,
        style: 'underline'
      }
    ],
    cursor: 2
  }, callbackMatcher).$times(1);
  mockControl.$replayAll();
  ime.updatePreedit_();
  mockControl.$verifyAll();
  assertEquals(sampleImeForImeExtensionApi.SampleIme.State.CONVERSION,
               ime.state_);

  // Backs to composition mode.
  ime.resetSegments_();
  mockControl.createMethodMock(chrome.input.ime, 'setComposition')({
    contextID: CONTEXT.contextID,
    text: '\uFF41\uFF42\uFF53\uFF54\uFF41\uFF52\uFF43',  // 'abstarc'
    segments: [{
      start: 0,
      end: 7,
      style: 'underline'
    }],
    cursor: 2
  }, callbackMatcher).$times(1);
  mockControl.$replayAll();
  ime.updatePreedit_();
  mockControl.$verifyAll();
  assertEquals(sampleImeForImeExtensionApi.SampleIme.State.COMPOSITION,
               ime.state_);
}

function testUpdateCandidates() {
  var ime = getIme();

  // Precomposition mode.
  mockControl.createMethodMock(
      chrome.input.ime, 'setCandidateWindowProperties')({
        engineID: ENGINE_ID,
        properties: {
          visible: false,
          auxiliaryTextVisible: false
        }
      }, callbackMatcher).$times(1);
  mockControl.$replayAll();
  ime.updateCandidates_();
  mockControl.$verifyAll();

  // Simpe verifier for chrome.input.ime.setCandidates.
  var simpleVerifier = function(expected, actual) {
    assertEquals(expected[0].contextID, actual[0].contextID);
    var candidates = actual[0].candidates;
    assertTrue(candidates.length > 0);
    assertEquals('1st candidate', candidates[0].annotation);
    for (var i = 0; i < candidates.length; ++i) {
      assertEquals(i, candidates[i].id);
      assertTrue(!!candidates[i].candidate);
      var label_index = i % sampleImeForImeExtensionApi.SampleIme.PAGE_SIZE_;
      var label = String.fromCharCode(0x2160 + label_index);  // 'Ⅰ' + index
      assertEquals(label, candidates[i].label);
    }
    assertTrue(callbackMatcher.matches(actual[1]));
    return true;
  };

  // Composition and Conversion mode.
  ime.insertCharacters_('abcde');
  mockControl.createMethodMock(chrome.input.ime, 'setCandidates')({
    contextID: CONTEXT.contextID
  }).$registerArgumentListVerifier('setCandidates', simpleVerifier).$times(1);
  mockControl.createMethodMock(chrome.input.ime, 'setCursorPosition')({
    contextID: CONTEXT.contextID,
    candidateID: ime.segments_[0].focusedIndex
  }, callbackMatcher).$times(1);
  mockControl.createMethodMock(
      chrome.input.ime, 'setCandidateWindowProperties')({
        engineID: ENGINE_ID,
        properties: {
          visible: true,
          cursorVisible: true,
          vertical: true,
          pageSize: 5,
          auxiliaryTextVisible: true,
          auxiliaryText: 'Sample IME'
        }
      }, callbackMatcher).$times(1);
  mockControl.$replayAll();
  ime.updateCandidates_();
  mockControl.$verifyAll();
}

function testUpdateCommitText() {
  var ime = getIme();

  ime.insertCharacters_('abcde');
  ime.shrinkSegment_();
  ime.focusCandidate_(findInArray(ime.segments_[0].candidates, 'Abcd'));
  ime.focusedSegmentIndex_ = 1;
  // 'e'
  ime.focusCandidate_(findInArray(ime.segments_[1].candidates, '\uFF45'));

  var text = ime.getPreeditText_();
  assertEquals('Abcd' + '\uFF45', text);  // 'Abcd|e'
  ime.commit_();
  assertEquals(text, ime.commitText_);

  mockControl.createMethodMock(chrome.input.ime, 'commitText')({
    contextID: CONTEXT.contextID,
    text: text
  }, callbackMatcher).$times(1);
  mockControl.$replayAll();
  ime.updateCommitText_();
  mockControl.$verifyAll();
  assertEquals(null, ime.commitText_);

  // Shouldn't call chrome.input.ime.commitText() since it doesn't have
  // commitText_.
  mockControl.createMethodMock(chrome.input.ime, 'commitText')().$times(0);
  mockControl.$replayAll();
  ime.updateCommitText_();
  mockControl.$verifyAll();
}

function testUpdate() {
  var ime = getIme();

  mockControl.createMethodMock(ime, 'updatePreedit_')().$times(1);
  mockControl.createMethodMock(ime, 'updateCandidates_')().$times(1);
  mockControl.createMethodMock(ime, 'updateCommitText_')().$times(1);
  mockControl.$replayAll();
  ime.update_();
  mockControl.$verifyAll();
}

function testHandleKey() {
  var ime = getIme();

  mockControl.createMethodMock(ime, 'update_')().$times(0);
  mockControl.$replayAll();
  assertFalse(ime.handleKey_({key: '0'}));
  assertFalse(ime.handleKey_({key: '!'}));
  assertFalse(ime.handleKey_({key: 'a', altKey: true}));
  mockControl.$verifyAll();
  assertEquals(sampleImeForImeExtensionApi.SampleIme.State.PRECOMPOSITION,
               ime.state_);

  mockControl.createMethodMock(ime, 'update_')().$times(1);
  mockControl.$replayAll();
  assertTrue(ime.handleKey_({key: 'a'}));
  mockControl.$verifyAll();
  assertEquals(sampleImeForImeExtensionApi.SampleIme.State.COMPOSITION,
               ime.state_);
  assertEquals('a', ime.getInputTextOnSegment_());
}

function testHandleSpecialKey() {
  var ime = getIme();

  // Precomposition mode.
  assertFalse(ime.handleSpecialKey_({key: 'Backspace'}));
  assertFalse(ime.handleSpecialKey_({key: 'Delete'}));
  assertFalse(ime.handleSpecialKey_({key: 'Up'}));
  assertFalse(ime.handleSpecialKey_({key: 'Left'}));
  assertFalse(ime.handleSpecialKey_({key: 'Enter'}));
  assertFalse(ime.handleSpecialKey_({key: 'Left', ctrlKey: true}));
  assertFalse(ime.handleSpecialKey_({key: 'DUMMY'}));

  var verify = function(key, isCalled) {
    var expectedTimes = isCalled ? 1 : 0;
    mockControl.createMethodMock(ime, 'update_')().$times(expectedTimes);
    mockControl.$replayAll();
    assertTrue(ime.handleSpecialKey_(key));
    mockControl.$verifyAll();
  };

  // Composition mode.
  ime.insertCharacters_('abcdefgh');
  verify({key: 'Backspace'}, true);
  assertEquals('abcdefg', ime.getInputTextOnSegment_());
  verify({key: 'Left'}, true);
  assertEquals(6, ime.cursor_);
  verify({key: 'Delete'}, true);
  assertEquals('abcdef', ime.getInputTextOnSegment_());
  verify({key: 'Left'}, true);
  verify({key: 'Left'}, true);
  assertEquals(4, ime.cursor_);
  verify({key: 'Right'}, true);
  assertEquals(5, ime.cursor_);
  verify({key: 'DUMMY'}, false);

  // Conversion mode.
  verify({key: 'Left', shiftKey: true}, true);
  verify({key: 'Left', shiftKey: true}, true);
  assertEquals('abcd', ime.getInputTextOnSegment_());
  verify({key: 'Right', shiftKey: true}, true);
  assertEquals('abcde', ime.getInputTextOnSegment_());
  verify({key: 'Right'}, true);
  assertEquals('f', ime.getInputTextOnSegment_());
  verify({key: 'Left'}, true);
  assertEquals('abcde', ime.getInputTextOnSegment_());
  verify({key: 'Down'}, true);
  assertEquals(1, ime.segments_[0].focusedIndex);
  verify({key: ' '}, true);
  assertEquals(2, ime.segments_[0].focusedIndex);
  verify({key: 'Up'}, true);
  assertEquals(1, ime.segments_[0].focusedIndex);
  verify({key: 'DUMMY'}, false);

  // Check cursor key on Conversion mode.
  var lastCandidateIndex = ime.segments_[0].candidates.length - 1;
  verify({key: 'Up'}, true);
  assertEquals(0, ime.segments_[0].focusedIndex);
  verify({key: 'Up'}, true);
  assertEquals(lastCandidateIndex, ime.segments_[0].focusedIndex);
  verify({key: 'Up'}, true);
  assertEquals(lastCandidateIndex - 1, ime.segments_[0].focusedIndex);
  verify({key: 'Down'}, true);
  assertEquals(lastCandidateIndex, ime.segments_[0].focusedIndex);
  verify({key: 'Down'}, true);
  assertEquals(0, ime.segments_[0].focusedIndex);
  verify({key: 'Right'}, true);
  assertEquals(1, ime.focusedSegmentIndex_);
  verify({key: 'Right'}, true);
  assertEquals(1, ime.focusedSegmentIndex_);
  verify({key: 'Left'}, true);
  assertEquals(0, ime.focusedSegmentIndex_);
  verify({key: 'Left'}, true);
  assertEquals(0, ime.focusedSegmentIndex_);

  verify({key: 'Backspace'}, true);
  assertEquals(sampleImeForImeExtensionApi.SampleIme.State.COMPOSITION,
               ime.state_);
  verify({key: 'Left', shiftKey: true}, true);
  assertEquals(sampleImeForImeExtensionApi.SampleIme.State.CONVERSION,
               ime.state_);
  verify({key: 'Delete'}, true);
  assertEquals(sampleImeForImeExtensionApi.SampleIme.State.COMPOSITION,
               ime.state_);
  verify({key: 'Enter'}, true);
  assertEquals(sampleImeForImeExtensionApi.SampleIme.State.PRECOMPOSITION,
               ime.state_);
}

function testIgnoreKey() {
  var ime = getIme();

  ime.insertCharacters_('a');

  var keyEvent = {
    type: 'keydown',
    key: 'ChromeOSSwitchWindow',
    altKey: false,
    ctrlKey: false,
    shiftKey: false
  };

  assertTrue(ime.onKeyEvent(ENGINE_ID, keyEvent));
  keyEvent.ctrlKey = true;
  assertFalse(ime.onKeyEvent(ENGINE_ID, keyEvent));
  keyEvent.shiftKey = true;
  assertFalse(ime.onKeyEvent(ENGINE_ID, keyEvent));
  keyEvent.altKey = true;
  assertTrue(ime.onKeyEvent(ENGINE_ID, keyEvent));
}

function testSetUpMenu() {
  var ime = getIme();

  // Simpe verifier for chrome.input.ime.setUpMenu.
  var simpleVerifier = function(expected, actual) {
    assertEquals(ENGINE_ID, actual[0].engineID);
    assertEquals(4, actual[0].items.length);
    assertTrue(callbackMatcher.matches(actual[1]));
    return true;
  };

  mockControl.createMethodMock(chrome.input.ime, 'setMenuItems')()
      .$registerArgumentListVerifier('setMenuItems', simpleVerifier).$times(1);

  mockControl.$replayAll();
  ime.setUpMenu_();
  mockControl.$verifyAll();
}

function testOnActivate() {
  var ime = getIme();

  var ANOTHER_ENGINE_ID = 24680;

  mockControl.createMethodMock(ime, 'setUpMenu_')().$times(1);
  mockControl.createMethodMock(ime, 'clear_')().$times(1);
  mockControl.$replayAll();
  ime.onActivate(ANOTHER_ENGINE_ID);
  mockControl.$verifyAll();
  assertEquals(ANOTHER_ENGINE_ID, ime.engineID_);
}

function testOnDeactivated() {
  var ime = getIme();

  mockControl.createMethodMock(ime, 'clear_')().$times(1);
  mockControl.$replayAll();
  ime.onDeactivated(ENGINE_ID);
  mockControl.$verifyAll();
  assertEquals('', ime.engineID_);
}

function testOnFocusBlurUpdate() {
  var ime = getIme();

  assertEquals(CONTEXT, ime.context_);

  mockControl.createMethodMock(ime, 'clear_')().$times(1);
  mockControl.$replayAll();
  ime.onBlur(CONTEXT.contextID);
  mockControl.$verifyAll();
  assertEquals(null, ime.context_);

  mockControl.createMethodMock(ime, 'clear_')().$times(1);
  mockControl.$replayAll();
  ime.onFocus(CONTEXT);
  mockControl.$verifyAll();
  assertEquals(CONTEXT, ime.context_);

  var ANOTHER_CONTEXT = {
    contextID: 54321,
    type: 'text'
  };
  mockControl.createMethodMock(ime, 'clear_')().$times(0);
  mockControl.createMethodMock(ime, 'update_')().$times(1);
  mockControl.$replayAll();
  ime.onInputContextUpdate(ANOTHER_CONTEXT);
  mockControl.$verifyAll();
  assertEquals(ANOTHER_CONTEXT, ime.context_);
}

function testOnKeyEvent() {
  var ime = getIme();

  var input = [
    [false, false],
    [false, true],
    [true, false],
    [true, true]
  ];

  for (var i = 0; i < input.length; ++i) {
    mockControl.createMethodMock(ime, 'handleKey_')(_).
        $returns(input[i][0]).$anyTimes();
    mockControl.createMethodMock(ime, 'handleSpecialKey_')(_).
        $returns(input[i][1]).$anyTimes();

    mockControl.$replayAll();
    assertFalse(ime.onKeyEvent(ENGINE_ID, {type: 'keyup'}));
    assertEquals(input[i][0] || input[i][1],
                 ime.onKeyEvent(ENGINE_ID, {type: 'keydown'}));
    mockControl.$verifyAll();
    mockControl.$resetAll();
  }
}

function testOnCandidateClicked() {
  var ime = getIme();

  mockControl.createMethodMock(ime, 'focusCandidate_')().$times(0);
  mockControl.$replayAll();
  ime.onCandidateClicked(ENGINE_ID, CLICKED_ID, 'right');
  ime.onCandidateClicked(ENGINE_ID, CLICKED_ID, 'middle');
  mockControl.$verifyAll();

  var CLICKED_ID = 3;
  mockControl.createMethodMock(ime, 'focusCandidate_')(CLICKED_ID).$times(1);
  mockControl.createMethodMock(ime, 'update_')().$times(1);
  mockControl.$replayAll();
  ime.onCandidateClicked(ENGINE_ID, CLICKED_ID, 'left');
  mockControl.$verifyAll();
}

function testOnMenuItemActivated() {
  var ime = getIme();

  mockControl.createMethodMock(chrome.input.ime, 'updateMenuItems')().$times(0);
  mockControl.$replayAll();
  ime.onMenuItemActivated(ENGINE_ID, '__dummy_menu_item_name__');
  mockControl.$verifyAll();

  // Simpe verifier for chrome.input.ime.updateMenuItems.
  var simpleVerifier = function(expected, actual) {
    assertEquals(ENGINE_ID, actual[0].engineID);
    assertEquals(4, actual[0].items.length);
    assertTrue(callbackMatcher.matches(actual[1]));
    for (var i = 0; i < expected[0].length; ++i) {
      var expectedItem = expected[0][i];
      var actualItem = actual[0].items[i];
      for (var key in expectedItem) {
        assertEquals(expectedItem[key], actualItem[key]);
      }
    }
    return true;
  };

  // Initial state of menu items
  var expectedItems = [
    {
      id: 'enable_dummy_candidates',
      label: 'Enable dummy candidates',
      style: 'radio',
      checked: true,
      enabled: true,
      visible: true
    }, {
      id: 'disable_dummy_candidates',
      label: 'Disable dummy candidates',
      style: 'radio',
      checked: false,
      enabled: true,
      visible: true
    }, {
      id: 'enable_radio_menu',
      label: 'Enable radio menu',
      style: 'check',
      checked: true
    }, {
      id: 'display_radio_menu',
      label: 'Display radio menu',
      style: 'check',
      checked: true
    }
  ];

  // Disables dummy candidate.
  expectedItems[0].checked = false;
  expectedItems[1].checked = true;
  mockControl.createMethodMock(chrome.input.ime, 'updateMenuItems')(
      expectedItems).$registerArgumentListVerifier(
          'updateMenuItems', simpleVerifier).$times(1);
  mockControl.$replayAll();
  ime.onMenuItemActivated(ENGINE_ID, 'disable_dummy_candidates');
  mockControl.$verifyAll();
  assertFalse(ime.useDummyCandidates_);

  // Enable dummy candidate.
  expectedItems[0].checked = true;
  expectedItems[1].checked = false;
  mockControl.createMethodMock(chrome.input.ime, 'updateMenuItems')(
      expectedItems).$registerArgumentListVerifier(
          'updateMenuItems', simpleVerifier).$times(1);
  mockControl.$replayAll();
  ime.onMenuItemActivated(ENGINE_ID, 'enable_dummy_candidates');
  mockControl.$verifyAll();
  assertTrue(ime.useDummyCandidates_);

  // Disables radio menu item.
  expectedItems[0].enabled = false;
  expectedItems[1].enabled = false;
  expectedItems[2].checked = false;
  mockControl.createMethodMock(chrome.input.ime, 'updateMenuItems')(
      expectedItems).$registerArgumentListVerifier(
          'updateMenuItems', simpleVerifier).$times(1);
  mockControl.$replayAll();
  ime.onMenuItemActivated(ENGINE_ID, 'enable_radio_menu');
  mockControl.$verifyAll();

  // Enables radio menu item.
  expectedItems[0].enabled = true;
  expectedItems[1].enabled = true;
  expectedItems[2].checked = true;
  mockControl.createMethodMock(chrome.input.ime, 'updateMenuItems')(
      expectedItems).$registerArgumentListVerifier(
          'updateMenuItems', simpleVerifier).$times(1);
  mockControl.$replayAll();
  ime.onMenuItemActivated(ENGINE_ID, 'enable_radio_menu');
  mockControl.$verifyAll();

  // Hides radio menu item.
  expectedItems[0].visible = false;
  expectedItems[1].visible = false;
  expectedItems[3].checked = false;
  mockControl.createMethodMock(chrome.input.ime, 'updateMenuItems')(
      expectedItems).$registerArgumentListVerifier(
          'updateMenuItems', simpleVerifier).$times(1);
  mockControl.$replayAll();
  ime.onMenuItemActivated(ENGINE_ID, 'display_radio_menu');
  mockControl.$verifyAll();

  // Shows radio menu item.
  expectedItems[0].visible = true;
  expectedItems[1].visible = true;
  expectedItems[3].checked = true;
  mockControl.createMethodMock(chrome.input.ime, 'updateMenuItems')(
      expectedItems).$registerArgumentListVerifier(
          'updateMenuItems', simpleVerifier).$times(1);
  mockControl.$replayAll();
  ime.onMenuItemActivated(ENGINE_ID, 'display_radio_menu');
  mockControl.$verifyAll();
}

redpajama_set_name: RedPajamaGithub


Simply stunning, this very elegant, prewar corner 6-room home at 65 Central Park West offers grand scale, an open loft-like formal expanse, an abundance of old-world details and modern comforts in an excellent full-service Emery Roth building directly across from Central Park. This historic stretch of Central Park West is PRIME Upper West Side.This beautifully renovated home remains true to the old-world elegance, detail and scale of turn-of-20th century architecture, while enjoying a contemporary renovation with quality finishes and comforts. Full of exquisite architectural details including high-beamed ceilings, pristine crown and baseboard moldings, decorative trim, beautiful hardwood floors, open archways, pocket doors and a decorative fireplace. Modern comforts include a Crestron audio system, recessed lighting, HVAC system in the bedroom, through wall A/C in all other rooms, high-end stainless appliances, laundry and an enormous amount of custom-fitted, auto-lit closet storage.The gracious layout offers distinct entertaining and private living with a split bedroom design and two-and-a-half baths. Two corner suites on opposite ends of the home provide privacy and the den/library can easily serve as a third bedroom if desired. An open loft-like entertaining expanse was designed to maximize space, scale and light with a side-by-side formal living room and dining room, an elegant entry foyer, an open windowed kitchen with breakfast bar and a den/library or media room that can be closed by a pocket door if desired.The stylish open kitchen features an abundance of Brookhaven custom cabinetry that maximizes storage, a very large pantry, granite counters, an open breakfast bar and top of line appliances including a six-burner Viking range oven with professional hood, Sub-Zero refrigerator, Asko dishwasher and washer and dryer, and a microwave cabinet garage.65 Central Park West features a full-time doorman, concierge and live-in superintendent. There are central laundry facilities, bicycle room, and storage bins. The building is pet-friendly. Pied a terres are permitted.


Power+Energy, Inc. (P+E) has finalized a contract with the DOD's Office of Naval Research (ONR) to demonstrate its fuel processing technology, based on its patented membrane assemblies for the conversion of liquid fuels such as diesel, gasoline and ethanol into ultra pure hydrogen. The system will integrate P+E's membrane reactor into a unified, compact fuel processor that dramatically increases hydrogen recovery rates to unprecedented levels. This technology enables the availability of hydrogen on demand in both large and small quantities for fuel cells and related applications. Under this contract, P+E will deliver a micro-channel membrane reactor with 100 kW power capacity and will demonstrate the efficient transfer of the chemical energy in ethanol to ultra pure hydrogen.
P+E's fueling technology has significant implications for the implementation of fuel cells for vehicle applications as well such as auxiliary/backup power and remote power applications. This fuel processor technology will permit the use of widely available fuels and infrastructures (including high sulfur fuels) without the need for a sulfur removal step. P+E's high efficiency fuel processors in combination with PEM fuel cells can double the useful work derived from a gallon of any liquid fuel including synthetic and bio fuels. It will also reduce carbon dioxide emissions by half and will aid the nation in reducing its dependence on imported oil.


Salmon fishery boards have unveiled proposals for no salmon to be killed in Scotland – either by nets or rods – before min-May.
The Association of Salmon Fishery Boards (ASFB) has recommended no spring salmon should be killed before 15 May.
In order to protect vital salmon spring stocks on Scotland's main rivers, the Association of Salmon Fishery Boards (ASFB) called for an unprecedented moratorium on killing salmon amidst rising fears of a dramatic decline in stocks this year.
The call has come as anglers prepare for the new salmon fishing season which will open in the next few weeks.
The anglers in Scotland already operate a catch and release policy, but ASFB claims that additional protection measures are now needed as the number of returning salmon adults was very low in some areas.
ASFB chairman Alasdair Laing said: "Numbers of returning adults are so low that some stocks of spring salmon are close to, or below, being self-sustaining; the earliest running fish are the most vulnerable.
"It is a well-established management principle that breeding fish should not be killed where a stock is threatened or vulnerable. On that basis it is the ASFB recommendation that no fish should be killed before 15 May."
He continued: "Where local evidence demonstrates that additional protection is required, District Salmon Fishery Boards (DSFBs) may wish to maintain a zero exploitation policy for a longer period.
"Over recent years very high levels of catch and release have been achieved during the spring, largely through voluntary policies and we are encouraging all DSFBs to ensure that their conservation policies reflect this position".
Nick Yonge, from the River Tweed Commission, said: "The Tweed has very small stocks of spring salmon; these are distinct breeding populations of fish and we know that there are only just enough of them to sustain the populations.
"Without our Spring Conservation Scheme, which prohibits killing rod-caught spring fish, in some years there would be insufficient breeders to keep these stocks sustainable".
Keith Allan, the secretary of the netsmen's association, accused anglers of doing nothing for salmon conservation for 14 years while netsmen had suffered financially as a result of their voluntary postponement.
Netsmen are legally entitled to start netting in mid-February but the delay has meant that, since 1999, no spring salmon has been caught until April at the earliest. But the netsmen have voted to scrap the voluntary six week delay.


text:
Inside look at BioWare explains exactly how fake E3 2017's Anthem demo was
176 posts •
Kotaku report cites 19 sources from various BioWare studios to explain what went wrong.
infernal666
Tribus: Land of the Maple trees,where tornados don't roam. (Vt)
EA oversell and under deliver on a game? Never in history has that occurred.
Deputy Cartman
So internal competition, differing goals, technical glitches, poor documentation, being short-staffed, and the waking nightmare that is "having EA as your overlord" all merged together and resulted in this.
Hopefully this is yet another lesson that if EA offers to buy your company, tell them to piss off. And be sure to look for the red tail on the person or persons talking to you.
Tribus: Pennsylvania, U.S.A.
After the massive flop that was Mass Effect: Andromeda, is anyone surprised? The BioWare that created Baldur's Gate, Jade Empire, and Knights of the Old Republic is long dead. Heck, even the BioWare that created Star Wars: The Old Republic is dead. The various comments made since Anthem's debut that they couldn't account for all the various intricacies of running an online game before Anthem went live is rather telling, considering SWTOR went live eight years ago.
WireBug
EA kills amazing IP, news at 11.
mtgarden
The game development industry sounds increasingly like Hollywood. (see this for some reference: https://redef.com/original/disney-econo ... um-physics )
It'd be interesting to see some company operate like Pixar of the past Disney/Marvel/Pixar today. Having fewer games per year at higher quality could put a company like EA stratospheric. Currently, it sounds like they merely hope for enough hits to cover their losses.
Zthan
The Kotaku article was a pretty fascinating and damning read. It also seems like the grunt level developers *do* have an idea of what customers/fans really want, but it mostly gets overruled or ignored by higher-ups.
IncorrigibleTroll
The commenters putting all the blame on EA really need to read the Kotaku article. The only bit that can truly be laid at EA's feet is the Frostbite mandate. Most of the other screwups were entirely Bioware's own management.
I love to dump on EA as much as the next person, but developers are perfectly capable of screwing up without the publisher's help.
Fatesrider
Tribus: SoCal
Sounds to me a bit like laurel-resting took more precedence over creation at some point there. Be it a lack of oversight and aid by EA or complacence on the part of BioWare (or both), someone seriously fumbled that football.
Bioware used to be good. EA... The less said about them, the better. But it does appear that the soup is spoiled regardless of where those cooks came from. I think at this point they should focus on fixing things, rather than, as it currently appears they're mostly doing, the hand waiving and finger pointing thing.
dogwitch
both companies where at fault. but that being said .
Jade Empire the one game people want to see a second one. but now with what they down with their last 2 games.......
sword_9mm
Tribus: 174 miles from the buckle of the bible belt
mtgarden wrote:
I think you're looking for Nintendo there. or something like naughty dog or insomniac.
DerHabbo
I find it kind of humorous that they describe it as a 'totally new idea' in the PR doublespeak but in reality it's just a shitty Destiny clone. Here's a product so problematic that ActiBlizz took a huge hit to divorce from Bungie just to get rid of it from their roster, so let's copy that but make it even worse than the source material. Brilliant.
Remember Westwood Studios?
Make a big Command and Conquer, Red Alert - get acquired by EA, pushed outside of its identity. Leadership changes over time. Studio is basically dead within 5 years.
Bioware had a lot of RPG & action game morphed genre - launched its last successful IP while going thru some transition but still under old independent leadership around 2007 - EA bought out the new org & basically could see EA's influence in Mass Effect 3. After the change, studio leadership changes.
The industry cannibalizes its talented & hardworking developers so finance types can get bonuses.
Last edited by Illusive Man on Tue Apr 02, 2019 1:51 pm
Hesster56
Would be nice to see BioWare and Blizzard escape their overlords, and merge.
Of course, if this somehow led to an EACtivision that imploded, so much the better.
ZhanMing057
Tribus: United States
IncorrigibleTroll wrote:
The commenters putting all the blame on EA really need to read the Kotaku article. The only bit that can truly be laid at EA's feet is the Frostbite mandate. Most of the other screwups were entirely Bioware's own making.
It's a lot more than just mandating Frostbite, though:
- EA took staff away from Bioware during a key phase of development
- Higher management repeatedly ignoring arguably extremely valuable feedback from devs
- Not allowing a release delay for a game with an extremely recent and major design change
- Pushing hard for monetarization targets
That's all EA and has nothing to do with the actual devs involved.
Last edited by ZhanMing057 on Tue Apr 02, 2019 1:52 pm
Deadwing
EA was awesome!!!!...... in the 80's.
dramamoose
sword_9mm wrote:
CD Projekt Red, if they added another team or two and assuming Cyberpunk 2077 keeps the same level of quality.
But honestly. If one of these AAA studios spent their money making one REALLY GOOD game per year, and helped finance that with loads of crap, I think it would make gamers very happy.
the game's original design documents described something a little more like a cross between the likes of Dark Souls and Shadow of the Colossus—where co-op players would focus less on collecting loot and more on teaming up to "see how long you could survive" in brutally difficult, dynamically changing worlds.
That actually sounds like it could have been kinda interesting. It's a shame they went with a standard grindy shoot and loot ala Destiny.
Caption Captain Chaplin
Account Banned
Illusive Man wrote:
That is the story of EA. Bullfrog, Origin, Westwood, Dreamworks, Criterion, Mythic, Maxis, Digital Illusion. They buy companies and fire the people who made them great.
efram
EA: Where game studios go to die.
ZhanMing057 wrote:
- Management repeatedly ignoring arguably extremely valuable feedback from devs
Fair point on the staffing pull. I did forget that. However, the management that was ignoring the devs was Bioware management, not EA.
The refusal to delay release is debatable, I think. On the one hand, sure, a delay might have helped with polish. On the other hand, Bioware faffed about for years, making little to no progress. If it weren't for the hard deadline, it's entirely possible that Bioware management would have continued kicking the can down the road and the game would have been Duke Nukem Forever'd into oblivion. It certainly sounds like the hard deadline is the only reason the game ever made it out the door at all (whether it should have is a separate matter).
Monetization doesn't really explain many of Anthem's problems, so that seems somewhat irrelevant.
Tribus: Orbiting HQ Design Lab
I read the Kotaku piece this morning. Highly recommend you read the whole thing if you're interested in this, it's pretty long and packed with detail and is well written. There's a lot more to the story than just "ugh EA" for sure.
Ardax
Tribus: North of Pittsburgh
The problem is that they weren't in a key phase of development -- they were still designing the game. That's on Bioware, not EA. It's also Bioware's fault for not reusing work that had been done on Inquisition and Andromeda, putting them even further behind the 8-ball.
That's all Bioware
EA allowed them as much time as they could, but they had to release a game at some point. The only reason decisions got made and things got done was because a hard deadline was looming and people simply had to get things done.
Last edited by Ardax on Tue Apr 02, 2019 2:01 pm
KWottrich
Registered: Aug 22, 2012
Not a criticism of Ars but a genuine question: is it typical for sites to write articles about... other articles?
CaptainPicard86
Zthan wrote:
True. But I think it goes deeper than just this, at least as far as I've experienced (and I'm sure you have as well).
Replace "developers" and "games" with any other "occupation" and "product" and you have a story that would describe, what I imagine, most people experience at work. Sans the insane amount of crunch (though I'm sure that happens in other industries as well).
This just happened to have occurred at a major company, on a high profile game, but the same thing happens virtually everywhere. And it all boils down to the same thing:
Poor leadership.
caldepen
It is unbelievable to me the scale of the fuck-up. There was not one little boy at any point who pointed out the emperor was naked? JC, it is mind-boggling the amount of entitlement and crass enablement that must have been in place for all this circus to go down.
Not one person said... "uhm, those big robots don't even move in the game!?"*
*Of course indicative of all other plethora of problems.
SirBedwyr
Aurich wrote:
Jason Schreier is *good* at this. At this point I expect he'll never finish his Final Fantasy retrospective. He's just too effective a beat reporter.
SirBedwyr wrote:
Yeah, he's one of the few games journalists who does actual journalism.
CaptainPicard86 wrote:
Yeah, that's a good point.
To go along with that poor leadership, it seems like a major issue for years was that no one wanted to just make a decision. At some point, *someone* has to say "This is how we're doing X, get to work!", or "Of options 1, 2, x, and y, we're doing 2 and x.", but no one wanted to do that for some reason. That's something that I find particularly baffling.
Yeah, he seems to have a lot of sources from all different places. I believe he's the one who broke the news about Microsoft acquiring Obsidian and Google Stadia details before the GDC reveal.
KGFish
I don't know whether I would exonerate EA here. I've seen just how damaging executive mandates for demos can be. Demos cheat, take resources away from actual development, and completely ignore any story-telling mechanisms. A lot of what I've read about what's bad about Anthem sounds exactly like someone tried to make a demo into a game without having the time to do it right.
Now, should internal feedback have been heeded about just how boneheaded certain decisions are (loading screens to go into menus - WTF)? Sure. Are certain design decisions just bad? Sure. But even then - if executives actually get into the weeds of playing games and making decisions about what's good and bad, they then own those decisions too.
I'll just file this under EA and Activision eating the industry to shit out more gold-plated yachts for their execs.
WXW
When Nintendo recently announced that they were basically restarting development on the new Metroid Prime because of quality issues, my first reaction was disappointment, but then I started thinking it was actually great, for reasons like the one we see in this article. They may make not-so-good games sometimes, you may not like their hardware, or their types of games, but for the most part they care about quality in their games and long-term reputation instead of MONEY NOW!!1!
And fortunately there are several other great studios like that, but lately you get the impression that they are just being torn to pieces by these large behemoths... I hope at some point there's a serious blowback from players to reverse the trend before it gets too bad, because I think there're still way too many pre-orders, whales, lenciency, ...
AngelosOne
Hesster56 wrote:
Blizzard (Vivendi) merged with Activision of their own accord though. They aren't looking to escape anything. Bioware got bought out by EA though, so chances of them ever getting free is near zero. Most likely, they'll eventually be another dead studio under EA.
samred
Tribus: Seattle, WA
KWottrich wrote:
If enough Ars staffers mention a particular article, video, discount, or otherwise atypical news blip in our various communication channels (email, chat), there's an informal rule to say, "stop chatting with each other about it, and go write a story for our readers."
Corruption wrote:
I think that's trust from industry participants built up over time. I noticed he's intentionally striking a more professional image in his byline pic since a year or two ago. That might be an appeal to people he talks to for his stories.
Jakelshark
Tribus: TN
Agreed. The article read as 90% Bioware's fault and 10% EA.
EA shouldn't have forced the Frostbite engine on them. EA forced them to finally release a product based on giving Bioware several years of development and when Bioware said they'd be done. (And still gave them a slight delay on top of that)
Dragon Age 4 is fucked y'all
And yet, it's those same exact execs who get the giant bonuses and who can retire at 40.
No, I don't have a good solution to that problem. But it does irk me when I hear these people talk about how they're necessary to the company and the economy, and how they need those giant piles of money, and then they go out and crap all over the place.
Abulia
Registered: Jul 20, 2006
I really don't care who's responsible; in my mind both EA and BioWare are culpable and tarnished by releasing such an incomplete and poor product. You can argue who's moving the deck chairs on the Titanic all day long but it doesn't really matter.
I escalated with MS and demanded a refund for Anthem and got it. There's no way I was going to let them get away with taking my money. Consumers need to demand better.
Abulia wrote:
Why did you even buy it? Did you not wait till release date when there were plenty of reviews saying it was mediocre at best?
Hell, EA let people play most of the game for free or very little money before release.
snowman<ca>
Apparition wrote:
It is kind of amazing how many of the problems of Mass Effect Andromeda were repeated so soon, with new problems for good measure. I wonder if they were still in denial of what and how MEA's problems came about.