text:
Malaria breath test goes for field trials
Copyright: Carl Davies, CSIRO
Test can identify distinctive chemicals that infected people exhale
Prototype device for collecting samples resembles police breathalyser
Goal is simple, cheap way to identify early, symptomless infections
By: Nick Reading
By Nick Reading
A breath test that can detect malaria at an early stage is to be assessed in the real world in nations including Bangladesh, Malawi and Sudan.
The breathalyser could reduce the cost of testing for the parasite and ensure drugs are targeted more effectively in communities affected by the disease, its developers say.
Earlier they identified distinctive chemicals known as markers that can be detected in the breath of people with malaria.
"A field-based diagnostic tool that only detects active infection would be really useful in helping to detect asymptomatic individuals with low-level infection."
Ailie Robinson, London School of Hygiene & Tropical Medicine
The researchers from the Commonwealth Scientific and Industrial Research Organisation (CSIRO), an Australian federal government agency, will now spend the next 18 months assessing the test in the field. They will collaborate with colleagues in the United States after receiving a US$1.4 million grant from the Bill & Melinda Gates Foundation.
"We can now test the accuracy and effectiveness of the breath markers under real-world conditions," Stephen Trowell, research group leader at CSIRO, said in a statement.
"If this phase of the research pans out, we intend to move on to developing a simple, painless and cheap breath test to help identify people who have malaria but don't know it."
CSIRO's researchers will collect breath samples from patients suspected of having malaria. A control group will also provide samples for comparison before both sets of samples are sent to Australia or the United States for analysis.
The prototype device for collecting breath samples resembles the breathalysers police officers use to test motorists for drink driving. It is cheaper than conventional blood testing, requires no medical expertise to operate and could lead to early diagnosis, the developers point out.
"The detection of biomarkers in breath would certainly be an easier method for malaria diagnosis," says Iveth González, who leads the Malaria & Acute Febrile Syndrome Programme at Swiss not-for-profit the Foundation for Innovative New Diagnostics.
WHO ups battle against deadly mosquitoes
Rising global wealth primed to curb malaria
Farming pesticides hinder malaria fight
Bed net plan for underfed kids curbs malaria deaths
Outdoor mosquito trap uses human scent as lure
She adds that the devices could significantly help malaria control and elimination if their cost is low enough to compete with conventional testing, such as microscopy.
According to the World Health Organization, malaria can have severe and long-term consequences if not treated quickly. A recent WHO report said the goal of eradicating the disease in 35 target countries by 2030 was "achievable" but still a daunting challenge.
Ailie Robinson, a researcher at the London School of Hygiene & Tropical Medicine in the United Kingdom, says it will become increasingly difficult to detect malaria as it becomes rarer.
Current diagnostic methods also have limitations, she says. Some, such as microscopy, require technical expertise, while rapid diagnostics tests sometimes detect old infections.
"A field-based diagnostic tool that only detects active infection would be really useful in helping to detect asymptomatic individuals with low-level infection," she says.
"Additionally, this technique would be totally non-invasive, which is clearly preferable — all current methods rely on a blood sample."
World malaria report 2015 (WHO, December 2015)
More on malaria
Three tropical diseases targeted in push for new drugs
WHO urges focus on pregnant women, children to wipe out malaria
Plan to wipe out malaria comes with hefty price tag
Drug-resistant malaria spreading fast in South-East Asia
Genetically modified fungus hailed as malaria breakthrough
Malaria vaccine rollout in children 'ends hiatus'
Window screens 'could reduce global malaria burden'
Mass drug administration against malaria seen effective
Country-owned strategies to fight malaria
Zambia trial cuts severe malaria deaths by 96 per cent
Q&A: "The big threat is that drug resistance is moving to India"
Blood transfusions a 'hidden' malaria risk


Dignity Health Central Coast is comprised of five hospitals, all recognized for their quality of care, safety and service, primary care offices, premier ambulatory surgery centers, technologically advanced imaging centers, outpatient services and comprehensive home health services.
Hospitals in the Dignity Health Central Coast region include Arroyo Grande Community Hospital in Arroyo Grande, French Hospital Medical Center in San Luis Obispo, Marian Regional Medical Center in Santa Maria, St. John's Pleasant Valley Hospital in Camarillo and St. John's Regional Medical Center in Oxnard.
Each hospital is supported by an active philanthropic Foundation to provide additional funding to support new programs and services, as well as to advance the community's access to health care.
Serving the community is one of our highest priorities. Learn about our latest community benefits, health needs summaries, and implementation strategies.
HealthBreak is a community health education program produced by Dignity Health Central Coast that features local physicians and other health care professionals.
Weekly Checkup focuses on pertinent health care topics, procedures, and treatments found right here in Ventura County.


text:
Q: Plotting a piecewise function in MATLAB I've been trying to plot a piecewise function:
y(t)=a*sin(2*pi *f *t) for 0 < t <= 1/(2f)
y(t)=0 for 1/(2f) < t < 1/f
ranging from t=0 to t=3.
Can anyone help me plot this without using the "piecewise" command and instead creating a function possibly with for loops and if statements?

A: in matlab, usually plots are done by computing the x/y values in a discretized grid.
f=2;
a=1;
t=0:0.01:3;
y=zeros(size(t));
y(t<=1/(2*f))=a*sin(2*pi*f*t(t<=1/2/f));
plot(t,y)

another way to create such a piece-wise function is to create a dedicate function or anonymous function to compute this in real time. For example
y=@(t,f,a) (t<=1/(2*f) & t>=0).*sin(2*pi*f*t)*a;
plot(t,y(t,f,a))

A: I was trying sth like this:

function [rate] = y(a,f,t)
for t = (0:3)
if  t <= (1 / (2 * f))
    rate = a * sin(2 * pi * f * t);
else
    rate = 0;
end
end
end
and then call: plot (t, y(a,f,t)) to plot the graph. Could you correct me if I'm wrong?

redpajama_set_name: RedPajamaStackExchange


Thank you to adidas for sponsoring today's post. As always, all opinion are solely my own!
Keep scrolling for my favorite adidas gift ideas, but I had to share this cute gray and blue look is all from adidas and part of a gift I'm giving my sister this season. When I buy gifts for my sister whether it's for her birthday, Christmas or just-because I always think workout gear because as a former gymnast, she is what I call a fitness junkie and I wish I was more like her, hah! She's constantly working out and I always think of her when I see the cute new arrivals that I come across, especially from adidas.
These sneakers are like walking on clouds - so comfy that I ordered myself a pair too! I loved the way they matched this pullover hoodie and these cobalt blue workout leggings. The best part is you could easily pair this pullover with jeans for a comfy/casual day of errand running too! Everything works for multiple occasions - something I always look for especially with athleisure wear.
I also fell in love with this cozy and soft beanie that adidas has - it's THE softest material and such a beautiful shade of gray! Warm enough to wear all winter, cute enough to wear with any outfit, and the perfect price to make an awesome gift!
2. Apple Watch: a perfect gift for anyone on your list, but especially the girls who love to workout!
3. White Racer Sneakers: if you like walking on clouds, these are THE sneakers for you! They're great for workouts and wearing daily as well. These are the sneakers shown above that I bought as part of a gift I got my sister!
4. Ultraboost Sneakers: these are my most worn sneakers and I recommend them to everyone! I wear them more daily than for working out because they're just so cute. I love this blush pink shade - it's everyone's favorite neutral! They've also been my most worn running shoe and they hold up so well no matter how much you wear them. And if you work on your feet, don't even hesitate in buying these! There's so many colors to choose from and they'll be your favorite purchase in a long time. I'd recommend sizing a half size up!
5. AirPods: a must have for anyone who works out/runs/trains! No cords to worry about getting tangled in and the battery life is awesome. They're a bit less expensive now that they've been out for a while, and these are something you'll want also - something fun to add to your wishlist!
6. Sleeveless Logo Tee: these cute and simple tees are a staple for workouts! They're almost always on sale and come in so many colors - they fit loosely and are great for workouts.
7. Blush Pink Baseball Cap: another cute workout accessory that you'll get so much use out of and that all of the fitness lovers on your list will love to receive!
8. Climacool Socks: these are the best socks I've worn for workouts - they're the perfect weight and are meant to keep your feet from sweating as much. They're a great stocking stuffer!
9. Workout Leggings: the adidas workout tights/leggings are some of my favorites for workouts! These match the sports bra (#1) so if you're looking to gift a full fitness set to someone this is a great option. They're super similar to the cobalt blue tights I featured above and anyone will love to receive them.
10. S'well Stainless Steel Water Bottle: I gift these all of the time because of how well they work at keeping your drink cold and because the designs are just the cutest! This is my personal favorite and it's another great stocking stuffer, or something to add in to a workout gift you're giving.
11. Blush Pink Zip-Up Hoodie: if we're being honest, I wear my Stadium Hoodie way more than I'd really like to admit, lol! It's SO comfy and the perfect piece that you'll wear for everything, all the time. It comes in so many colors to pick from!
12. Black & White Superstar Sneakers: these have become super popular lately and for good reason - they're the cutest sneakers out there that have a less athletic look to them, but are still as comfortable as your typical workout sneaker! They run big so I'd recommend sizing down one full size (as do most reviews you'll find) and they match everything you'll wear, plus be a great gift!
13. Gray Zip-Up Hoodie: another comfy, multi-purpose hoodie that makes for a great gift (for you and for your girlfriends!). This one is a bit warmer and not as structured as the Stadium Hoodie (#11) is and is always a go-to of mine for traveling in.
With Black Friday coming up (next week - HOW?!) adidas has all of their awesome deals listed and they are SO good! Get ready to shop and check out if something you've been eyeing will be on sale HERE.
I love adidas! So many great gift ideas, I am in love with those leggings!
Shopping for workout gear is one of my least favorite things. But you made me want to shop for all.the.things. Such great choices. I love the color combo!
I'm loving those fresh new kicks! Nothing is better than a new pair of sneakers. Love this round up!
Yikes, I can't believe that Black Friday is so soon! Thanks for these suggestions!
Yesssss I love adidas!! That sports bra is super cute.
Omg, I want ALL of these!! Definitely found a few items I want to add to my list!
I'm not super into fitness but these are all great gift ideas! I'd love some of these things!
These are great! Have to say, I want those white addidas for myself, haha!!
Can't go wrong with fitness clothing! I wear my superstar Adidas all the time!
This is such a great gift guide. That pink hat is adorable!
The blush pink baseball hat is my favorite! Awesome picks.
So many good picks! I just started working out more and need to add these to my Christmas list!
These are perfect ideas for a fitness junkie! I love that cute beanie.
Adidas is such a reliable brand. I've really been trying to workout more, but I'm the least motivated. I think having some cute workout clothes (like those leggings, yes, please!) would definitely motivate me to workout more.
SO many great gift picks! Um, totally need those blush sneaks for myself!
I want everything in your gift guide!! So many cute workout clothes and gear!
I love all of these! Who doesn't need good gym clothes?! I also love that you included the Black Friday deals!
Since I'm the fitness lover in the family maybe you can send this list to my family! I love all your workout outfits.
I actually have the superstar sneakers and LOVE them!!!! Definitely a great list!
Oh these are fantastic gift ideas for a fitness lover!
I love that pink and green vibe you have going on! That sweatshirt looks super cozy!
I am not into fitness so much but I have to buy some things from this list for my Tae Kwon Do class.
I love the leggings and the shoes! I'm a workout legging addict!
Definitely have some big fitness lovers in my life that could use these products!


Gary Passmore wrote about the changing face of California and how aging baby boomers 'will impact, labor, business, healthcare, teachers, nurses, and shortages in these fields are significant enough to drive up overall labor costs'.
Those of us in aging know the impact boomers will have on systems and the economy. But, now is the time for labor, business and workforce development to understand why aging is their challenge and opportunity too; We are all in this together.
This California Collaborative blog features a critical concern that will impact all Californians – our rapidly aging population and the lack of preparedness for addressing their needs for long term services and supports.
The demographic trend includes people who age into disability and develop the need for supports over time, as well as those with existing disabilities who will have greater needs as they age.
In this posting, Gary Passmore, a founding member of the Collaborative and Director of the Congress of California Seniors, outlines the extent of our challenge, its impact on our society as a whole, and the anticipated costs associated with the longevity boom.
Benjamin Franklin was first attributed with the idea that "Failing to plan is planning to fail." Given the trends and impacts that Gary describes, we need to urgently address our aging population and make solid plans to ensure that essential services, supports and infrastructure are ready.
The urgency is now. We understand the problem and it is foolish to delay planning for the inevitable.


My favorite teacher was Miss Ferrous, but we just called her Rusty. She had a tattoo that said "Rust Queen" on her arm.
We once took a class trip to the junkyard. We shot rats with a shotgun and Rusty showed us how thermite could burn through an engine block. We collected all the cool-looking scraps and dragged them back to school, where Rusty showed us how to weld. I made a scrap-racer and named it The Rust Queen, after her.
Even today, it sits on my porch, a tribute to the best kindergarten teacher a boy could ever have.


text:
Acanthocinus xanthoneurus es una especie de escarabajo longicornio del género Acanthocinus, subfamilia Lamiinae. Fue descrita científicamente por Mulsant & Rey en 1852.

Se distribuye por Italia. Mide 10-14 milímetros de longitud. El período de vuelo ocurre en el mes de julio.

Referencias

xanthoneurus
Insectos descritos en 1852
Insectos de Italia

redpajama_set_name: RedPajamaWikipedia


The experience we have in our workplaces is a key component of our wellness and satisfaction. The objects and furnishings we use every day—chairs, tables, lights, and other furnishings—influence our ability to perform on the job. At this year's 50th NeoCon and 30th ICFF, PLASTARC saw human-centered design take center stage with a focus on health and wellbeing. Some of the products emerged from trends that have been percolating for a while. We also saw exciting precursors of what we think will become major developments in the near future.
Open plan offices can make it difficult for some people to work comfortably and effectively, and may not be optimal for the full variety of tasks being performed. Wherever possible, it's best to empower people to choose the space that is right for the task at hand. While it may be impractical to make major changes to a building, there are non-architectural solutions that can return control of a space to the user. Last year, PLASTARC presented a whitepaper we co-authored with West Elm. In it, we explored one of the inherent tensions of the open office: people want to work independently while still being surrounded by others. They want their space to accommodate individual concentration while still encouraging collaboration when desired. This year, we saw several examples of furniture that can enable that. Re-configurable semi-enclosed spaces and drop-in phone booths give denizens of the open office the ability to choose privacy. Textured, sound-absorbing wall coverings can reduce workplace distractions. These products can also be attractive. After all, practicality and function don't have to come at the expense of fun, inspiring design.
Encouraging people to move around throughout their day, including regularly changing their posture, can have positive effects on health and wellbeing. At ICFF, A.J. Paron-Wildes reinforced the importance of movement during her talk "Working Well". She spoke about cutting-edge workplace policies and design elements that get people up out of their seats. In an inspiring example, she shared how a hospital mapped out a one-mile route for people to hold "walking meetings", equipped with touch-down tables placed strategically throughout the route for people to set up.
At NeoCon, we saw many creative efforts to accommodate more active styles of working through furnishings. Sit-to-stand desks can facilitate movement and transitions between different work modes. Stools can engage your core while you are having that Monday team meeting. One of the insights generated by our work with West Elm is that our best ideas can take shape while we're moving or in unique settings—in the shower, sitting on a train, or watching passersby from a park bench. Furniture that enables seamless transitions can help spark new ideas.
Employees are sometimes reluctant to spend time socializing. This isn't surprising, since socializing wasn't traditionally thought of as work. Recently, companies have realized that cross-collaboration plays a big role in the innovation process, and they are creating spaces that encourage it. Whether it's your corner cafe, go-to juicery or the taco truck around the corner, 'third spaces' help foster a sense of community. Informal cafes and work lounges were big at NeoCon this year, with offerings from Steelcase WorkLife Cafe, Haworth Pop-up Cafe, and Scandinavian Design. These spaces were often the heart of the showroom displays. More workplaces are embracing the idea that social time is work time.
We've found that community is the foundation of successful workplaces. A unifying multi-purpose piece of furniture can help create that. One of the themes of our work with West Elm was the incorporation of resimercial design, which brings the comfort and utility of home design to the office environment. In addition to being functional and flexible, a kitchen table brings people together, creating opportunities for shared experience and bolstering emotional wellbeing. As studies show, when people share a table (especially for meals), a sense of community follows.
Part of creating healthier, happier, and higher performing spaces is reestablishing our connection to nature in our physical environment. Natural views and access to the outdoors can help with this. Biophillic design takes it a step further, integrating natural forms and colors into the spaces we use. At both NeoCon and ICFF this trend was apparent in everything from potted plants to mobile moss. Designers at ICFF brought typical workplace elements such as walls and tables to life with designs incorporating living greenery. We at PLASTARC are advocates for workplaces that consider the holistic needs of humans, including multi-sensory design, so we love it! The choice of materials offers another opportunity. The touch-points on furniture are part of the workplace experience. Whether they are warm, soft fabric or cold, smooth metal impacts our perceptions of a space.
One of the best things about going to an event like NeoCon is seeing the first sign of trends that are just around the corner. Here are some developments we saw early signs of, and which we expect to grow in the next few years.
A study conducted by World Health Organization concluded that one in three Americans is suffering from a chronic disease or a condition related to lifestyle, habit, or circumstance. Sophisticated data-gathering and analysis technology is now popping up in furnishings and other workplace amenities. This may help manufacturers understand the range of use cases for a piece and determine whether the design supports them. This tech can also help people to learn about unhealthy behaviors and devise strategies to change their habits. In the near future, major furniture manufacturers will be able to tap into customer digital data trails and make compelling cases for how their products can become life-saving tools.
Furniture continues getting smarter. In an age when designed obsolescence sometimes trumps longevity, it was refreshing to see some displays of smart and connected office furniture systems that are designed to be upgradeable. An increased emphasis on the Embedded systems that collect utilization data have been around for a few years now, pioneered by companies like WeWork. Major manufactures like Steelcase and Herman Miller are figuring out how to leverage that data to deliver additional value. Furniture makers may soon offer "spatial insights" as a core service.
Workplace design is inherently complex, balancing the needs of people, spaces, organizational culture, and management. As our workplaces become more connected, our use of data to improve these spaces will become more sophisticated. New furniture, fixtures, and amenities can be selected in response to our our needs and habits.
As customers become increasingly sophisticated in how they buy and use furniture to solve workplace challenges, furniture brands are likely to place more emphasis on customer relationships and thought leadership in workplace design. This will be reflected in the way furniture is sold. For inspiration, we can look to companies like Apple, who sell six to ten times more per square foot than of other successful retailers. The success of Apple's stores comes not only from great products, but also from a retail experience that incorporates a service component. Coming from the other direction, WeWork has just announced that they'll be adding retail to their service-oriented co-working business. Expect to see similar shifts in interior design showrooms as they focus on using their products to solve specific workplace problems.


Space abounds in this beautifully updated single family home in the desirable Hunter's Chase neighborhood! Located on a quiet cul-de-sac facing the park, this perfectly maintained home features a spacious living room with vaulted ceilings, gas fireplace, and gleaming hardwood floors. The main floor smoothly flows into the kitchen where you will find gorgeous granite counter tops and updated stainless steel appliances. The spacious dining room right off the kitchen is great for family dinners and entertaining. Indoor access to the 2-car attached garage with large closet. The well-situated, main floor powder room is great for guests. Head upstairs and find 2 spacious bedrooms connected by a Jack and Jill Bath, while the large master suite features it?s own private 5-piece bath with a recently remodeled, massive shower. Enjoy the backyard space with a generous concrete poured patio, no grass, and an amazing perinatal garden! This home is approved for the HomeReady Mortgage Program.


text:
Sign In | Register | About Corte Madera | Contact Us
Corte Madera News
Corte Madera Gas Prices
Bakery/Breakfast
Eating Places
Dessert, Ice Cream and Frozen Yogurt
Dinner & Music Theatres
Jeep & Hummer Tours
Trucking & Hauling
Misc. Financial Services
Masonry & Stone Work
Travel Arrangement & Services
Indian Arts & Crafts - Retail
Search Hotels in Corte Madera
About Corte Madera
History of Corte Madera
Area Golf
Live in Corte Madera
Commuting in Corte Madera
Relocating to Corte Madera
San Francisco/Berkeley
Corte Madera Family Activities
Family Activities in Corte Madera
As a relatively small town with a population of just more than 9,000 people, Corte Madera is a family oriented community and has many activities suitable for both adults and children. With its small-town feel and safe atmosphere, you and your children will be able to have a fun time making new and unique memories in Corte Madera, whether you're a resident or a visitor. Unique opportunities for family fun are plentiful in town, and the surrounding area boasts even more opportunities. From learning about and experiencing nature with your family to great play centers for your children to run around and play, the area is ripe with ways to exercise and learn.
Town Park
498 Tamalpais Drive, Corte Madera, California 94925
Close to downtown, this spacious park is the perfect place to head with your family. Grab a bite to eat at nearby restaurants or pack a picnic for a budget-friendly family activity. There is enough space here for you and your older kids to run around on the grass and a play structure for your toddlers and grade-school age kiddos to climb and explore. The park is located in an enclosed, gated area and even includes a skateboard park and a two-sided wall for handball and other games.
Marin History Museum
1125 B Street, San Rafael, CA 94901
Website: www.marinhistory.org
The Marin History Museum was founded in 1935 in celebration of the tradition of creativity and innovation in the people of the county. With educational programs and exhibitions, the museum strives to honor the past and help visitors understand the present and dream of the future. Located on the Boyd Estate, former home of Louise Arner Boyd, an arctic explorer and adventurer, the museum not only provides a glimpse into the past but is a piece of it. Tuesday through Saturday, the museum is open from 11 a.m. to 4 p.m., except on Thursday, when it is open from 11 a.m. to 8 p.m.
Tiburon Railroad & Ferry Depot Museum
1920 Paradise Drive, Tiburon, CA 94920
Website: www.landmarks-society.org/landmarks/railroad_ferry_museum.php
The town of Tiburon is a short drive away from Corte Madera and features an original train depot from the extension of the San Francisco and North Pacific Railroad to Point Tiburon. The extension was built in 1884 and ran until 1967. After that, the depot and shoreline were given to the town for a museum and open space. Now you and your children can go to this museum to see and learn about the Point Tiburon yard in the first decade of the 20th century and see a replica scale model. On the second floor of the depot, you can see a restored stationmaster's residence from the time between 1913 and 1940. The museum is featured on the National Register of Historic Places and is the only surviving dual use terminal west of the Hudson River. The Tiburon Railroad and Ferry Museum is open from April to October on Wednesdays, Fridays and weekends, from 1 to 4 p.m.
Home | News | Travel | Restaurants | Nightlife | Things To Do | Shopping | Calendar | Directory | Real Estate | Blog | More
Copyright © 2010-2020 CorteMadera.com & California Media Partners, LLC. All rights reserved.

redpajama_set_name: RedPajamaCommonCrawl


Promo codes and coupon codes for Rockler was last updated on Apr 20, 2019 . Visit rockler.com to find more offers.
Enjoy excellent reductions with our excellent Rockler voucher. Order quickly and take your savings now. Those promotional code would not last long, so come to use them quickly.
Get wonderful offers when you use our Rockler promotional code. Only for a limited time. The more you shop at Rockler the more savings are waiting for you!
Shop with the products and enjoy more savings from Rockler for a discount price. Only for a limited time. Excellent savings, do not miss it.
Grab the amazing benefit of our Rockler promo. Add the items to your cart and save instantly at Rockler. Come and quickly to use them.
Get the items you want at a great price with our Rockler promo code. Test it and save for your money. Shop and save now at Rockler.
Wonderful products with wonderful price at Rockler promo. Come and save now! Begin to save!
Enjoy excellent reductions at Rockler. Do not miss the shocking chance when you shop at Rockler. Please come to use them!
A amazing coupon from Rockler which you can't pass it! OptionScoop.com helps you save extra money. Exclusions may apply.
Enjoy awesome financial savings now at Rockler. Click on this wonderful discount code to make your purchase greatly. It can not last any longer at Rockler!
Receive big savings at Rockler today! The more you shop at Rockler, the more you can save. New and amazing items for a limited time.
Shop at Rockler and take shocking savings! Order quickly and get your savings now. Shop and save now at Rockler.
Spend much less on the amazing products with our Rockler discount code. The more you buy, the more you save at Rockler. Shop and save now at Rockler.
Excellent coupon code at Rockler! You will love this voucher and it will help you save much money. Come and start savings.
Saving money by use of Rockler coupon today. Do not miss the great chance when you shop at Rockler. The offer has limited time, it can not wait any longer.
Select the shocking items from Rockler with this shocking promotional code. Do not miss the shocking chance when you shop at Rockler. Shocking website to save money!
Shop with our shocking Rockler promo. Special offers cannot wait for you! Order what you want and take advantage by using this discount code!
Rockler is offering a fantastic sale today. Big discounts are waiting for you! Great website to save money!
Get the great chance to save a lot of money with our Rockler coupon code! Fantastic promo does not last all the time. Discount code ends soon, make your order today!
Enjoy this big voucher code to save money at Rockler. Offers are only for a limited time, use them quickly. Hurry before it's gone, it can not wait for anymore.
Receive special offers when you use our Rockler coupon code. Only for a limited time. Great savings, time is limited.
You can get great benefits to use Rockler promo. Do not miss this possibility to take offers at Rockler. Please come to use them!
Grab awesome savings with our latest Rockler discount code. Do not miss it at Rockler. New and wonderful items for a limited time.
Don't pass this chance to receive extra money with Rockler discount code. Remember to check out this coupon code! These top products of Rockler will be yours!
Rockler is offering wonderful items with top bargains. The offer will not last long at Rockler. A promo like this, is hard to miss.
Make purchases at Rockler. Test them now at Rockler! You can choose a wide range of selected items and receive awesome discounts.
Enjoy your savings now at Rockler. The more you buy, the more you save at Rockler. They are yours only if you want them.
Shop fantastic items at fantastic prices at Rockler now! Click on this shocking voucher code to make your purchase greatly. Receive great offers at Rockler.
Enjoy excellent benefit of this excellent voucher and shop with a discounted price from Rockler. These promo may no longer exist tomorrow. Coupon ends soon, make your order today!
Enjoy extra money with this wonderful coupon code provided by Rockler! Great voucher code begin and come to save. Those voucher would not last long, so come to use them quickly.
Today, you can receive awesome discount with our Rockler voucher. Shocking promo like this doesn't appear ordinary. Make your order for a discount price.
With our Rockler voucher code, you can take amazing discounts. Purchase now for a discount price at Rockler. It's time to save your money at Rockler.
Enjoy yourself to use this shocking coupon code at Rockler. Offers are only for a limited time, use them quickly. It is a perfect time to save.
Amazing savings on selected items when you use Rockler promotional code. Great items at discounts. To store and find wonderful promotional code.
Grab great savings at Rockler today! Be the first to use it before it ends at Rockler. You can benefit a lot from Rockler.
Shop with Rockler promotional code for a discount price. Shop the fantastic goods at Rockler. Excellent savings, do not miss it.
Enjoy amazing chance to save money with Rockler coupon code. Do not miss this possibility to get offers at Rockler. Receive great offers at Rockler.
Take excellent benefit of this excellent voucher and shop with a discounted price from Rockler. You can find what you need and get discounts on OptionScoop.com. They are yours only if you want them.
Shop with this excellent discount code from Rockler for a excellent price. Add the items to your cart and save instantly. Come and enjoy your shopping!
Get awesome savings with this awesome voucher from Rockler. Remember to check out this promotional code! Take advantages of the Rockler online shop!
Shop with our Rockler coupon. These promo may no longer exist tomorrow. Be a smart buyer to save your money.
Look at this awesome promo at Rockler! Special coupon like this doesn't appear ordinary. Make your order for a discount price.
Don't need to spend more on the great goods when you shop at Rockler. Grab the excellent discount before it's gone. Order what you want and take advantage by using this voucher!
Receive amazing chance to save money with Premier 1 Supplies coupon code. Test them now at Premier 1 Supplies! They are yours only if you want them.
Get UCLA Store promotional code and save more. Shopping at UCLA Store and get more details. Be the first to use it!
Saving money by use of NUME promo code today. OptionScoop.com coupon code attractive coupon code that you can not miss it. Be the first to use it!
Get your favorite items wherever you are with the awesome promo for Rockler and grab 87% off. All Rockler Promo Codes are 100% working. 412 discounts for you to choose from. Get everything you need with the new range now launched at Rockler!
What is today's best Rockler Coupon Code?
The best Rockler coupon code for today is AFRA8. This Code is for 'Save on Wood'. Copy it and apply it when you check out at rockler.com.


Raise your hand if you go to church and there's a bunch of people at the church as well. Mmhmm. Thought so. Oftentimes whenever we go to the the church for whatever reason, there's at least several others also present.
But have you ever been alone inside of a church? Like, you are the only visible soul amidst the pews? No one else?
Praise God I'm Catholic! Why? Because as a Catholic, I believe in the Real Presence! That Jesus is truly present body, blood, soul, and divinity in the likeness of bread and wine in every Catholic church. So I've never been truly alone inside of a church because He's there too!
After I got Confirmed and received my driver's license back in high school, I found it necessary to go visit a church to just pray every now and then. Dealt with a lot, ya know? And sometimes, these times that I would go would be awkward enough to where there wouldn't be anyone else around. Just me and Jesus in the tabernacle. Or monstrance.
To me, this is a really blessed way to spend time with Jesus. It's literally just me and Him. Without the distractions of having other people around, the feeling of isolation helps with focus.
Spending time alone with Jesus is something that I even continued throughout college…mostly because I had a lot to deal with and I didn't know where else to handle what I was going through during times. Haha, I got good at sneaking into church late at night during high school and college.
And even today and recent times, I still find myself inside of a Catholic church alone with Jesus…but more for the purposes of deepening my spiritual life and less of reacting to the negativities of my life like in high school and college.
So, for whatever your purposes and motivation…If you can, I encourage you to go spend some time with Jesus. Alone.
Body, blood, soul, and divinity.


Volunteers, Help Set Up Our 2018 Display!
The GGCS Club Display Exhibit will be set up on Wednesday, February 21st. Someone from the club will be there to help you with plant take-ins and registration from 10 am til 5 pm. If you can't make it before 5 pm, you will be responsbilbe for your own registration and entry forms.
You may bring in your plants until 11 pm that night, or before 9AM Thursday morning.
All plants must be entered before judging begins at 9:30 AM, Thursday, February 22nd.
Please contact James Donoso at (510) 536-9006, or email him at jamesdonoso@att.net, if you need help getting your plants to SF. If you send your plants you MUST have a complete list of their names and parentage info so we can fill out the proper forms for you.
All plants MUST be cleaned and pest/virus free. Also, in a decorative basket or pot if possible.
We are looking for itmes/things to help with the show theme 'ORCHIDS IN WONDERLAND'. Any old Alice in Wonderland toys, dolls, poster displays would be helpful. A word of caution, the Club will not be responsible for any loss.
Jim Donoso, 510-562-9006, jamesdonoso@att.net, & we will try to make arrangements for pick ups.


text:
Do church food pantries do more harm than good?
Josef Kuhn • October 21, 2011
Food pantries, clothing drives and mission trips have become unquestioned bastions of America's charitable landscape. But do these well-intended services - many of them run by Christian organizations - really help the poor?
According to Robert Lupton, the answer is no. His new book, "Toxic Charity," draws on his 40 years experience as an urban activist in Atlanta and argues that most charitable work is ineffective or actually harmful to those it is supposed to help. Lupton is the founder of FCS Urban Ministries, through which he has developed mixed-income subdivisions that house hundreds of families. He is the author of four other books and holds a Ph.D. in psychology from the University of Georgia.
Q: You say churches and charities can harm those they propose to help. How? A: Typically, the giving is one-way: those of us with the resources give to those with a lack of resources. One-way giving tends to make the poor objects of pity, which harms their dignity. It also erodes their work ethic and produces a dependency that is unhealthy both for the giver and the recipient.
Q: What is one of the worst instances of "toxic charity" you have witnessed? A: The food pantry idea has led to some fairly ugly relationships. The church or group sets up rules to govern how the food is distributed; the recipients figure out ways to circumvent those rules; and they become upset when they don't get the food they wanted - there's a kind of a built-in antagonism that grows between the dispensers and the recipients.
Q: Why do you think ill-formed charity is so pervasive? A: The feel-good experience draws us back in. In our newsletters about mission trips we report how wonderful and grateful the people are, but what we don't hear are the ways that the trips damage people behind the scenes. I don't think we've held up good models of development. When there's a flood or a hurricane, folks continue operating on a one-way, crisis, give-to-the-poor mentality long after development should have taken place, because it's easier for relief agencies to sell crisis than development and empowerment.
Q: You advise limiting one-way giving to "emergency situations." What do you define as an emergency situation? A: A home burning down, a bad hurricane, a devastating earthquake, a famine. What we interpret as crisis, particularly in the U.S., is a different matter. Many of those who are running our food pantries and our clothes closets, for example, feel they are meeting a crisis need of unemployed families. I contend that those are chronic poverty issues that deserve a development strategy.
Q: What is one of the best examples you have seen of a charity that works well? A: We converted our food pantry into a food co-op. Members of the co-op put in $3 a week; with that, we can purchase $30 worth of groceries from the food bank. The members of the co-op actually own it, run it, collect the money, do the shopping and decide what the rules are. It becomes an empowering process.
Q: Are there any wide-scale studies or statistical data to support your claims? A: On a national scale, look at the results of the one-way giving that has gone into countries in Africa or Haiti over the years. Those statistics are available, and they're blatant. But I don't know of any studies that have been done to quantify the harm versus the benefits of U.S. food distribution. It's an unexamined industry.
Q: It seems like you could be facing some heat for this idea. What has been the reaction so far? A: I've gotten mixed reviews. It confirms the suspicions of a growing number of people, but for those who are involved in the distribution, it feels like a slap in the face. I think the whole thing is going to be fairly controversial.
Q: What's the most controversial idea in the book? A: It might be that most of our service projects and mission trips are counterproductive. We spend as much as $5 billion dollars annually on mission trips, millions of Americans take them every year, and the amount of good accomplished is very, very minimal compared to the expenditures we're laying out.
Q: Is your book a justification for libertarian politics? A: I don't think it is a political book at all. It is a practical book - it has to do with the practice of charity. It calls for responsible charity, examined charity, rather than mindless charity.
(Photo courtesy of iStockphoto.)
Topics: Culture At Large, Theology & The Church, Faith, Evangelism, The Church, News & Politics, Social Trends, Justice
Josef Kuhn works as a journalist for Religion News Service, where this interview originally appeared.
More Articles by Josef Kuhn


← A 'Tow Seat', Really?
Old Man Winter arrived in Wisconsin a few days ago. While we can't always count on seeing large quantities of snow, we certainly know that we'll get a prolonged trip to the deep freeze. As the new year rang in, we were down in the neighborhood of -5 degrees, with a brisk wind that created a wind chill of -25 degrees … or whatever. I mean really, when it gets that cold, does it really matter much anymore? You can throw on all your warmest gear and the minute you walk outside, you feel like you are wearing a t-shirt and shorts … brrrrrrrr. And for the week ahead, we are only expecting between 10 and 20 degrees … that is all folks!
This doesn't mean to say that I dislike winter. However, I can't say I really like winter either. I have a healthy respect for winter, honed over the years from early childhood. I think of winter as an endurance test. It is a reminder of all the things we should appreciate throughout the rest of the year. It is necessary to freeze, blanket and smother everything for months in preparation of the spectacular spring that will inevitably come. And to all you warm weather dwellers, I must say that you simply cannot appropriately appreciate the first 40+ degree day, when the sun is shining, and the birds are signing, unless you have survived six or eight weeks of the Old Man. Even the iron man of all iron men, he-who-shall-remain-nameless, that famous QB #4, had to stick his frozen tail between his legs (actually, more like tuck his frozen hands in his armpits) and go look for someplace warm to play. That's alright old #4, I can't hardly blame you … my hands go numb inside gloves after ten minutes of shoveling. I couldn't hold a football out there either.
The young are certainly more able to endure the winter. In my youth, I would insist on staying out until my hands were so frozen that I could hardly grip the doorknob to get back in the house. The tepid water my mother would run over my hands to thaw them would burn like hell as the blood began to flow again. My earlobes got frostbit so bad one time they swelled and looked like large grapes hanging off my ears. At that age, winter was a playground full of endless forts, slides and snowball fights. And while I haven't built a snow fort for many years, a snow fall doesn't pass without me throwing a few snowballs for the dog, or more likely at the nearest stop sign. There is still fun to be had.
And as for the brain numbing, car killing, digital display paralyzing, window frosting cold delivered this week … bring it Old Man, bring it. We can take it. And when early March brings that long-awaited whiff of spring, we'll all be happier and more appreciative because of it.
Old Winter took a Holiday! Your prose is accurate to describe the sub-zero effects on life and the endless longing for spring, even the patience required to maintain a sense of sanity. This year, my first winter in the tropics, I am enjoying the sun, warmth and sea air of island life but I am missing something. Christmas caroling in shorts, boat parades with Christmas lights at 80 degrees, Santa showing up on the beach, it's all fun…but it's just not right! The Crusian Christmas Festival goes on for 10 days, more accurately ten sleepless nights. The music is fantastic, and loud, and endless, stretching til after 3 am. The first night was great, even the second was awesome, but now..the last night, I need peace. The kind of peace you get after a fresh snow. A Wisconsin deep-freeze fresh snow. Enjoy your blessings!


Whew! Finally the days of struggle are over. No longer I have to worry myself to fit the puny 30 MB of webspace. Yes friends the promised upgrade is finally here. The space has been bumped up to 100 MB coinciding with my birthday (and hence the title :D). And the other promised upgrade to Wordpress 1.5.1 has also been completed. The site has been totally revamped and yet the (perma-)links are still the same. Wordpress is truly magic!
The gallery is now fully integrated to the Blog. Also means a post will now have more pictures inline.
Shortcut keys. Press Alt+A, Alt+R, Alt+H . If you use IE, press Enter in each case.
You can now subscribe to my site. Thanks to Bloglet!
Well, no, I'm not in Bench(!) In fact there was tonnes of office work. At one point there was 6 empty coffee cups (which had tea) on my desk. Then, how the hell did I do it? Well, god alone knows that I work best under pressure. That's why he so kindly keeps me less loaded most of the time. You gotta love him for that.
In the evening we went to the MahaLakshmi Temple in East Ham. Later, we had a very enjoyable time while having dinner at Chennai Dosa. Ankur, Anant, Bhute, Parag, Sachin and myself were in total PJ mood. Most of the jabs were interestingly directed at Bhute. Its a world renowned fact that the only opportunity to taunt Bhute is when he is hungry. Needless to say, all of us made maximum use of this opportunity.
Next: ▶ Is Python Intellisense Possible in Emacs?
Prev: ◀ Constantine, Electra, Flying Daggers.... hey, Don't Panic!


text:
Hera says I should be the star now
The explosion of female talent in modern Rock music
Hera Says I Should be the Star Now!
Artists that have inspired me so far
The Anarchicks
Aurora (Aksnes)
Between Mountains
Jen Cloher
Girl Ray
Let's Eat Grandma
Rews
Voice of Baceprot.
Gig reviews and updates
Gig Reviews: Bands reviewed in alphabetical order.
Anarchicks, 'Loose Ends' album.
Art School Girlfriend. 'Is it Light Where You Are?' Album.
ARXX: 'Daughters of Daughters', E.P. and 'Iron Lung', single.
Arxx: 'Wrong Girl, Honey.' EP and 'Call me Crazy', Single
Du Blonde. 'Homecoming', album.
'Glove: 'No Blades No Bones', EP.
'Greenness': 'Cyclicity' EP.
Hachiku: 'I'll probably be asleep', Album.
The Japanese House. 'Good at Falling' album and 'Chewing Cotton Wool' EP.
Jehnny Beth. 'To Love is to Live', album.
Jemma Freeman and the Cosmic Something: 'Oh Really, What's That Then?' LP.
Jessica: 'The Space Between.' Album.
London Grammar: 'Californian Soil'
Naz & Ella. 'Freedom', Single.
Ora the Molecule, 'Human Safari'. Album review.
'Sit Down': 'Cheap Luxe' EP.
Sorry: '925', Album.
Torres, 'Silver Tongue' and 'Live in Berlin', albums.
Toyah, 'Posh Pop', Album Review.
'URF': 'For the Ride' EP and 'Solitude' single.
Zara: 'Breakables' EP.
Hera Mini Reviews
Berries, 'Lies' EP.
Girl Ray, 'Girl' album.
Goat Girl: 'On All Fours'. Album.
Katie Harkin, 'Harkin' LP.
Naz & Ella: 'Internalised'. Single.
Pale Waves. Who am I?', Album.
Sit Down. 'Nice One'. EP.
Hera's Best Music of 2018.
Books by 'Hera Says' Writers.
Courtney Barnett. 'Things Take Time, Take Time'. Album Review.
'Ad Infinitum. 'Chapter II, Legacy'. Album review.
A stereotype reversed? Well maybe, but basically a damn good Rock band.
There's an awful lot of nonsense spouted about Islam in the West. It almost seems to have become the new bogeyman to frighten the metaphorical children after the fall of communism. Certainly, like most religions and ideologies, it has produced its fanatics, and hideous things have been done in its name. But they shock most Muslims every bit as much as they do everyone else. Nor is Islam monolithic. There are many different Islamic states, sects and societies, each with their own histories, traditions and attitudes.
One of the myths of fanatical Islam is that music is un-Islamic. But the Islamic world can boast a rich variety of musical traditions, both sacred and secular. There is also a tradition of fusions between Islamic and Western music, with one particularly gorgeous recent example being the 2015 collaboration between Natasha Khan ('Bat for Lashes') and British Rock band 'Toy' which produced an exquisitely beautiful album that was perhaps unwisely given the title 'Sexwitch'.
Indonesian female three piece, 'Voice of Baceprot' (pronounced bachey-prot) is often described simply as a Heavy Metal band, with 'Metallica' cited as their strongest influence. Well Metal is a broad spectrum and 'VoB', as their fans often call them, certainly fits under the umbrella. But they are not just clones of a western model. They are not trying to be 'Metallica', or even a female western Metal band like 'Ice Age'. Their music adds a strong Javanese flavour to the genre which makes them too a fusion form, just as Japanese band 'Babymetal' adds a distinctively Japanese female vocal style to Metal to produce another East/West fusion.
Voice of Baceprot. Photo: Putu Sayoga.
There's a big difference, though. Where many western metal-heads can find the likes of 'Babymetal' more than a teensy bit cloying, 'Voice of Baceprot' (Baceprot means 'noise' in their native Sundanese) are a much more serious proposition. They play their own instruments for a start, and are a genuine grass roots growth, where 'Babymetal' are a largely synthetic creation.
Of course, another thing all too many westerners think they know about Islam is that madrasa schools are simply places of indoctrination. So the idea of a Metal band consisting of three young farmers' daughters, wedded to their hijabs (even if worn with leather jackets and black nail varnish) who met at the madrasa in their rural West-Javanese village of Garut, might sound like fantasy. Except that that is not what a madrasa should be at all. Instead, the three: Firdda Kurnia, Euis Siti and Widi Rahmawati, found themselves in 2014 with an inspiring teacher called Erza Satia, who happened to be a Metal fan.
They discovered the music on his laptop and it was love at first hearing. Many a teacher would just have shrugged or even tried to discourage these slightly rebellious students. Instead he supported their growing passion, and the girls soon turned from friends who'd never played an instrument, into enthusiasts willing to practice every hour they had free.
VoB on stage in Jakarta. Photo Kemal Jufri.
They soon proved to have real talent. Firdda Kurnia became the guitarist and also handles most of the vocals. Euis Siti is the drummer and Widi Rahmawati has turned herself into a truly superb bassist. By 2017, despite a degree of parental opposition, they were good enough to get paying gigs, and their teacher took on a new role as their manager, as well as sharing the songwriting duties.
The band have faced flack from conservatives. They've had hate mail and death threats. There have been attempts to disrupt their gigs and they've literally had rocks thrown at them. But none of it has put them off and the three see no conflict between a genuine faith, including such outwards signs as the hijab, on the one hand, and playing Metal on stage on the other. Nor do they see why their gender should make any difference. Their message to Muslim women, and indeed women in general, is "Don't be afraid to be different."
Indonesia has a strong Metal scene and most fans agree with the band, so while some of the old guard may condemn them, many younger Indonesians view them with pride. And it's not just Metal fans. They get TV coverage, both at home and increasingly abroad, and in 2017 they were invited to perform for an audience of 2,000 senior officials, business leaders and student groups in Jakarta, at a concert held to mark the anniversary of Indonesia's independence.
The band soon progressed from playing cover versions of western songs to writing their own material, with a free mix of lyrics in English and Sundanese. So are they singing 'Death to America' as some bigots in the West might still expect of an Islamic band? Er, no! Their music deals with social and environmental issues such as global warming. They call for peace, religious tolerance and gender equality. Like Malala Yousafzai they support equal education, and want their music to be a force for good in the world.
Photo Jonas Gratzer.
On stage they are powerful performers, with Euis Siti in particular a tub-thumping drummer. But they are also forthright and confident in interviews, some of which are conducted in English. And all three speak out freely even though singer Firdda Kurnia tends to be the frontwoman more often than not, both on and off stage.
The band are now reputed to be recording their first full length album, but at present their music is available from a disparate set of sources, notably their Facebook page, with some of the songs on-line in several different versions. Perhaps their best known track translates as 'School Revolution': although it's a revolution for, not against, school. It's a real rocker, but while the instrumental parts are pure metal, the vocals, especially in the verses, are almost rap.
Another rocker, 'Age Oriented (let's be old)' repeats a complaint that's at least as old as the Roman poet Martial: that young artists seldom get respect for their ideas, and that somehow you need to be old, or better still dead to matter. The song has Kurnia singing in an evokative Javanese classical style, with elongated notes filled with quarter-tone vibrato that initially sounds slightly odd to a western ear. The instruments also deviate from pure Metal. In particular, Rahmawati plays often breathtaking slap bass which gives her a funkier sound. Kurnia's guitar has a distorted but surprisingly light single coil Fender feel here, rather than a more normal, Humbucker Metal tone. And she's a real shredder, something this song especially brings out. Her playing is lightening fast, hard edged and often discordant to give a sound that takes few prisoners.
'The Enemy of Earth is You' is an environmental song and again shows a fusion between distinctly Indonesian sounding vocals and largely Thrash-metal instrumental parts. Yet even here Kurnia plays a highly original guitar solo (from 2:35) which also has a definite Javanese classical feel in places. The song again showcases Rahmawati's bass, and she really is a remarkable player. As someone who plays bass themselves, I can only watch and envy. She mixes slap and finger plucking with total fluidity and lightning speed and gets a twangy Rickenbacker sound from her Ibanez, Schecter and Cort instruments. I can personally relate to one very noticeable aspect of her style. She tends to play well up the fretboard, seldom using the bottom five frets and often being at or above the tenth. And this may be partly down to her size.
The amazing Widi Rahmawati. One of the best new bassists around.
Without being too personal, all three women are physically diminutive, even now at approaching twenty years old. There is a 'YouTube' video of them appearing on an Indonesian chat show in 2017, and the program's male and female hosts both tower over them. They make the band look almost like children by comparison, yet they were already seventeen at the time. Full-scale bass guitars are large objects, however. Their fretboards are significantly longer than a guitar's and the individual frets are further apart, so Rahmawati may simply not be able to reach the far end of her instrument very well. I have the same problem and get round it by playing a short-scale Fender Mustang. But a lot of people don't like short-scale basses and Rahmawati's approach is clearly just to play higher up. This denies her more than the occasional visit to the bottom few notes of the instrument's range, except for the open E string. But it clearly works for her, because she has to be one of the best new bassists around.
Two more songs 'Perempuan Merdeka Seutuhnya' and 'Kentut RUUP (Merdeka Itu Kentut)' were recorded in a live session for Shoebox and are more classic-Metal in feel. But they currently suffer from technical issues. You get the impression that Kurnia may not have been able to hear her foldback clearly enough to give of her best. Certainly her voice is less confident than usual. Plus both songs are less than perfectly produced for the genre, being mixed more as Pop than Metal, with the guitar and voice too prominent and glassy in tone, whilst the drums and still more so the bass are all but drowned out at times. It would be good to hear these tracks recorded more sensitively at some point and hopefully they will appear on the band's forthcoming album, because they are two more strong compositions.
To sum up, 'Voice of Baceprot' are a remarkable young band who I hope to hear a lot more of. They deserve every success and I sincerely hope that they get it. They have already played abroad and their ambition is to play more globally. I'd also say that if I had a hat I'd sure as hell take it off to their teacher/manager. How cool is that to recognise and nurture such talent in three somewhat mutinous students in what was pretty much a village school in a conservative rural area? I wish I'd had a teacher like that. They got 'Metallica'. We got Bobby bloody Shafto! But it makes you wonder how many other great talents go to waste because they don't meet their Erza Satia, and instead got teachers who simply told them to shut up..
Hera Says.
Top Image, 'Shoebox Sessions'.
Follow Hera says I should be the star now on WordPress.com
Hera says I should be the star now Website Powered by WordPress.com.


text:
namespace {

// An async version of SendKeyPressSync since we don't get notified when a
// menu is showing.
void SendKeyPress(Browser* browser, ui::KeyboardCode key) {
  ASSERT_TRUE(ui_controls::SendKeyPress(
      browser->window()->GetNativeWindow(), key, false, false, false, false));
}

// Helper class that waits until the focus has changed to a view other
// than the one with the provided view id.
class ViewFocusChangeWaiter : public views::FocusChangeListener {
 public:
  ViewFocusChangeWaiter(views::FocusManager* focus_manager,
                        int previous_view_id)
      : focus_manager_(focus_manager), previous_view_id_(previous_view_id) {
    focus_manager_->AddFocusChangeListener(this);
    // Call the focus change notification once in case the focus has
    // already changed.
    OnWillChangeFocus(nullptr, focus_manager_->GetFocusedView());
  }

  ViewFocusChangeWaiter(const ViewFocusChangeWaiter&) = delete;
  ViewFocusChangeWaiter& operator=(const ViewFocusChangeWaiter&) = delete;

  ~ViewFocusChangeWaiter() override {
    focus_manager_->RemoveFocusChangeListener(this);
  }

  void Wait() {
    content::RunMessageLoop();
  }

 private:
  // views::FocusChangeListener:
  void OnWillChangeFocus(views::View* focused_before,
                         views::View* focused_now) override {}

  void OnDidChangeFocus(views::View* focused_before,
                        views::View* focused_now) override {
    if (focused_now && focused_now->GetID() != previous_view_id_) {
      base::SingleThreadTaskRunner::GetCurrentDefault()->PostTask(
          FROM_HERE, base::RunLoop::QuitCurrentWhenIdleClosureDeprecated());
    }
  }

  raw_ptr<views::FocusManager> focus_manager_;
  int previous_view_id_;
  base::WeakPtrFactory<ViewFocusChangeWaiter> weak_factory_{this};
};

class SendKeysMenuListener : public AppMenuButtonObserver {
 public:
  SendKeysMenuListener(AppMenuButton* app_menu_button,
                       Browser* browser,
                       bool test_dismiss_menu)
      : browser_(browser),
        menu_open_count_(0),
        test_dismiss_menu_(test_dismiss_menu) {
    observation_.Observe(app_menu_button);
  }

  SendKeysMenuListener(const SendKeysMenuListener&) = delete;
  SendKeysMenuListener& operator=(const SendKeysMenuListener&) = delete;

  ~SendKeysMenuListener() override = default;

  // AppMenuButtonObserver:
  void AppMenuShown() override {
    menu_open_count_++;
    if (test_dismiss_menu_) {
      SendKeyPress(browser_, ui::VKEY_ESCAPE);
      base::SingleThreadTaskRunner::GetCurrentDefault()->PostDelayedTask(
          FROM_HERE, base::RunLoop::QuitCurrentWhenIdleClosureDeprecated(),
          base::Milliseconds(200));
    } else {
      DCHECK(observation_.IsObserving());
      observation_.Reset();
      // Press DOWN to select the first item, then RETURN to select it.
      SendKeyPress(browser_, ui::VKEY_DOWN);
      SendKeyPress(browser_, ui::VKEY_RETURN);
    }
  }

  int menu_open_count() const { return menu_open_count_; }

 private:
  raw_ptr<Browser> browser_;
  // Keeps track of the number of times the menu was opened.
  int menu_open_count_;
  // If this is set then on receiving a notification that the menu was opened
  // we dismiss it by sending the ESC key.
  bool test_dismiss_menu_;

  base::ScopedObservation<AppMenuButton, AppMenuButtonObserver> observation_{
      this};
};

class KeyboardAccessTest : public InProcessBrowserTest {
 public:
  KeyboardAccessTest() {}

  KeyboardAccessTest(const KeyboardAccessTest&) = delete;
  KeyboardAccessTest& operator=(const KeyboardAccessTest&) = delete;

  // Use the keyboard to select "New Tab" from the app menu.
  // This test depends on the fact that there is one menu and that
  // New Tab is the first item in the menu. If the menus change,
  // this test will need to be changed to reflect that.
  //
  // If alternate_key_sequence is true, use "Alt" instead of "F10" to
  // open the menu bar, and "Down" instead of "Enter" to open a menu.
  // If focus_omnibox is true then the test on startup sets focus to the
  // omnibox.
  void TestMenuKeyboardAccess(bool alternate_key_sequence,
                              bool shift,
                              bool focus_omnibox);

  int GetFocusedViewID() {
    gfx::NativeWindow window = browser()->window()->GetNativeWindow();
    views::Widget* widget = views::Widget::GetWidgetForNativeWindow(window);
    const views::FocusManager* focus_manager = widget->GetFocusManager();
    const views::View* focused_view = focus_manager->GetFocusedView();
    return focused_view ? focused_view->GetID() : -1;
  }

  void WaitForFocusedViewIDToChange(int original_view_id) {
    if (GetFocusedViewID() != original_view_id)
      return;
    gfx::NativeWindow window = browser()->window()->GetNativeWindow();
    views::Widget* widget = views::Widget::GetWidgetForNativeWindow(window);
    views::FocusManager* focus_manager = widget->GetFocusManager();
    ViewFocusChangeWaiter waiter(focus_manager, original_view_id);
    waiter.Wait();
  }

#if BUILDFLAG(IS_WIN)
  // Opens the system menu on Windows with the Alt Space combination and selects
  // the New Tab option from the menu.
  void TestSystemMenuWithKeyboard();
  void TestSystemMenuReopenClosedTabWithKeyboard();
#endif

  // Uses the keyboard to select the app menu i.e. with the F10 key.
  // It verifies that the menu when dismissed by sending the ESC key it does
  // not display twice.
  void TestMenuKeyboardAccessAndDismiss();
};

void KeyboardAccessTest::TestMenuKeyboardAccess(bool alternate_key_sequence,
                                                bool shift,
                                                bool focus_omnibox) {
  // Navigate to a page in the first tab, which makes sure that focus is
  // set to the browser window.
  ASSERT_TRUE(
      ui_test_utils::NavigateToURL(browser(), GURL("chrome://version/")));

  // The initial tab index should be 0.
  ASSERT_EQ(0, browser()->tab_strip_model()->active_index());

  ASSERT_TRUE(ui_test_utils::BringBrowserWindowToFront(browser()));

  // Get the focused view ID, then press a key to activate the
  // page menu, then wait until the focused view changes.
  int original_view_id = GetFocusedViewID();

  ui_test_utils::TabAddedWaiter tab_add(browser());

  BrowserView* browser_view = static_cast<BrowserView*>(browser()->window());
  SendKeysMenuListener menu_listener(
      browser_view->toolbar_button_provider()->GetAppMenuButton(), browser(),
      false);

  if (focus_omnibox)
    browser()->window()->GetLocationBar()->FocusLocation(false);

#if BUILDFLAG(IS_CHROMEOS_ASH)
  // Chrome OS doesn't have a way to just focus the app menu, so we use Alt+F to
  // bring up the menu.
  ASSERT_TRUE(ui_test_utils::SendKeyPressSync(
      browser(), ui::VKEY_F, false, shift, true, false));
#else
  ui::KeyboardCode menu_key =
      alternate_key_sequence ? ui::VKEY_MENU : ui::VKEY_F10;
  ASSERT_TRUE(ui_test_utils::SendKeyPressSync(
      browser(), menu_key, false, shift, false, false));
#endif

  if (shift) {
    // Verify Chrome does not move the view focus. We should not move the view
    // focus when typing a menu key with modifier keys, such as shift keys or
    // control keys.
    int new_view_id = GetFocusedViewID();
    ASSERT_EQ(original_view_id, new_view_id);
    return;
  }

  WaitForFocusedViewIDToChange(original_view_id);

  // See above comment. Since we already brought up the menu, no need to do this
  // on ChromeOS.
#if !BUILDFLAG(IS_CHROMEOS_ASH)
  if (alternate_key_sequence)
    SendKeyPress(browser(), ui::VKEY_DOWN);
  else
    SendKeyPress(browser(), ui::VKEY_RETURN);
#endif

  // Wait for the new tab to appear.
  tab_add.Wait();

  // Make sure that the new tab index is 1.
  ASSERT_EQ(1, browser()->tab_strip_model()->active_index());
}

#if BUILDFLAG(IS_WIN)

// This CBT hook is set for the duration of the TestSystemMenuWithKeyboard test
LRESULT CALLBACK SystemMenuTestCBTHook(int n_code,
                                       WPARAM w_param,
                                       LPARAM l_param) {
  // Look for the system menu window getting created or becoming visible and
  // then select the New Tab option from the menu.
  if (n_code == HCBT_ACTIVATE || n_code == HCBT_CREATEWND) {
    wchar_t class_name[MAX_PATH] = {0};
    GetClassName(reinterpret_cast<HWND>(w_param), class_name,
                 std::size(class_name));
    if (base::EqualsCaseInsensitiveASCII(class_name, "#32768")) {
      // Select the New Tab option and then send the enter key to execute it.
      ::PostMessage(reinterpret_cast<HWND>(w_param), WM_CHAR, 'T', 0);
      ::PostMessage(reinterpret_cast<HWND>(w_param), WM_KEYDOWN, VK_RETURN, 0);
      ::PostMessage(reinterpret_cast<HWND>(w_param), WM_KEYUP, VK_RETURN, 0);
    }
  }
  return ::CallNextHookEx(0, n_code, w_param, l_param);
}

void KeyboardAccessTest::TestSystemMenuWithKeyboard() {
  // Navigate to a page in the first tab, which makes sure that focus is
  // set to the browser window.
  ASSERT_TRUE(
      ui_test_utils::NavigateToURL(browser(), GURL("chrome://version/")));

  ASSERT_TRUE(ui_test_utils::BringBrowserWindowToFront(browser()));

  ui_test_utils::TabAddedWaiter tab_add(browser());
  // Sending the Alt space keys to the browser will bring up the system menu
  // which runs a model loop. We set a CBT hook to look for the menu and send
  // keystrokes to it.
  HHOOK cbt_hook = ::SetWindowsHookEx(WH_CBT,
                                      SystemMenuTestCBTHook,
                                      NULL,
                                      ::GetCurrentThreadId());
  ASSERT_TRUE(cbt_hook);

  bool ret = ui_test_utils::SendKeyPressSync(
      browser(), ui::VKEY_SPACE, false, false, true, false);
  EXPECT_TRUE(ret);

  if (ret) {
    // Wait for the new tab to appear.
    tab_add.Wait();
    // Make sure that the new tab index is 1.
    EXPECT_EQ(1, browser()->tab_strip_model()->active_index());
  }
  ::UnhookWindowsHookEx(cbt_hook);
}

// This CBT hook is set for the duration of the
// TestSystemMenuReopenClosedTabWithKeyboard test
LRESULT CALLBACK SystemMenuReopenClosedTabTestCBTHook(int n_code,
                                                      WPARAM w_param,
                                                      LPARAM l_param) {
  // Look for the system menu window getting created or becoming visible and
  // then select the New Tab option from the menu.
  if (n_code == HCBT_ACTIVATE || n_code == HCBT_CREATEWND) {
    wchar_t class_name[MAX_PATH] = {0};
    GetClassName(reinterpret_cast<HWND>(w_param), class_name,
                 std::size(class_name));
    if (base::EqualsCaseInsensitiveASCII(class_name, "#32768")) {
      // Send 'E' for the Reopen closed tab option.
      ::PostMessage(reinterpret_cast<HWND>(w_param), WM_CHAR, 'E', 0);
    }
  }
  return ::CallNextHookEx(0, n_code, w_param, l_param);
}

void KeyboardAccessTest::TestSystemMenuReopenClosedTabWithKeyboard() {
  // Navigate to a page in the first tab, which makes sure that focus is
  // set to the browser window.
  ASSERT_TRUE(
      ui_test_utils::NavigateToURL(browser(), GURL("chrome://version/")));

  ui_test_utils::NavigateToURLWithDisposition(
      browser(), GURL("chrome://version/"),
      WindowOpenDisposition::NEW_FOREGROUND_TAB,
      ui_test_utils::BROWSER_TEST_WAIT_FOR_LOAD_STOP);

  ASSERT_EQ(1, browser()->tab_strip_model()->active_index());
  content::WebContents* tab_to_close =
      browser()->tab_strip_model()->GetActiveWebContents();
  content::WebContentsDestroyedWatcher destroyed_watcher(tab_to_close);
  browser()->tab_strip_model()->CloseSelectedTabs();
  destroyed_watcher.Wait();
  ASSERT_EQ(1, browser()->tab_strip_model()->count());
  ASSERT_EQ(0, browser()->tab_strip_model()->active_index());

  ASSERT_TRUE(ui_test_utils::BringBrowserWindowToFront(browser()));

  ui_test_utils::TabAddedWaiter tab_add(browser());
  // Sending the Alt space keys to the browser will bring up the system menu
  // which runs a model loop. We set a CBT hook to look for the menu and send
  // keystrokes to it.
  HHOOK cbt_hook =
      ::SetWindowsHookEx(WH_CBT, SystemMenuReopenClosedTabTestCBTHook, NULL,
                         ::GetCurrentThreadId());
  ASSERT_TRUE(cbt_hook);

  bool ret = ui_test_utils::SendKeyPressSync(browser(), ui::VKEY_SPACE, false,
                                             false, true, false);
  EXPECT_TRUE(ret);

  if (ret) {
    // Wait for the new tab to appear.
    tab_add.Wait();
    // Make sure that the new tab index is 1.
    EXPECT_EQ(1, browser()->tab_strip_model()->active_index());
  }

  ::UnhookWindowsHookEx(cbt_hook);
}
#endif

void KeyboardAccessTest::TestMenuKeyboardAccessAndDismiss() {
  ASSERT_TRUE(
      ui_test_utils::NavigateToURL(browser(), GURL("chrome://version/")));

  ASSERT_EQ(0, browser()->tab_strip_model()->active_index());

  ASSERT_TRUE(ui_test_utils::BringBrowserWindowToFront(browser()));

  int original_view_id = GetFocusedViewID();

  BrowserView* browser_view = static_cast<BrowserView*>(browser()->window());
  SendKeysMenuListener menu_listener(
      browser_view->toolbar_button_provider()->GetAppMenuButton(), browser(),
      true);

  browser()->window()->GetLocationBar()->FocusLocation(false);

  ASSERT_TRUE(ui_test_utils::SendKeyPressSync(
      browser(), ui::VKEY_F10, false, false, false, false));

  WaitForFocusedViewIDToChange(original_view_id);

  SendKeyPress(browser(), ui::VKEY_DOWN);
  content::RunMessageLoop();
  ASSERT_EQ(1, menu_listener.menu_open_count());
}

// http://crbug.com/62310.
#if BUILDFLAG(IS_CHROMEOS_ASH)
#define MAYBE_TestMenuKeyboardAccess DISABLED_TestMenuKeyboardAccess
#elif BUILDFLAG(IS_MAC)
// No keyboard shortcut for the Chrome menu on Mac: http://crbug.com/823952
#define MAYBE_TestMenuKeyboardAccess DISABLED_TestMenuKeyboardAccess
#else
#define MAYBE_TestMenuKeyboardAccess TestMenuKeyboardAccess
#endif

IN_PROC_BROWSER_TEST_F(KeyboardAccessTest, MAYBE_TestMenuKeyboardAccess) {
  TestMenuKeyboardAccess(false, false, false);
}

// http://crbug.com/62310.
#if BUILDFLAG(IS_CHROMEOS_ASH)
#define MAYBE_TestAltMenuKeyboardAccess DISABLED_TestAltMenuKeyboardAccess
#elif BUILDFLAG(IS_MAC)
// No keyboard shortcut for the Chrome menu on Mac: http://crbug.com/823952
#define MAYBE_TestAltMenuKeyboardAccess DISABLED_TestAltMenuKeyboardAccess
#else
#define MAYBE_TestAltMenuKeyboardAccess TestAltMenuKeyboardAccess
#endif
IN_PROC_BROWSER_TEST_F(KeyboardAccessTest, MAYBE_TestAltMenuKeyboardAccess) {
  TestMenuKeyboardAccess(true, false, false);
}

// If this flakes, use http://crbug.com/62311.
#if BUILDFLAG(IS_WIN)
#define MAYBE_TestShiftAltMenuKeyboardAccess DISABLED_TestShiftAltMenuKeyboardAccess
#else
#define MAYBE_TestShiftAltMenuKeyboardAccess TestShiftAltMenuKeyboardAccess
#endif
IN_PROC_BROWSER_TEST_F(KeyboardAccessTest,
                       MAYBE_TestShiftAltMenuKeyboardAccess) {
  TestMenuKeyboardAccess(true, true, false);
}

#if BUILDFLAG(IS_WIN)
IN_PROC_BROWSER_TEST_F(KeyboardAccessTest,
                       DISABLED_TestAltMenuKeyboardAccessFocusOmnibox) {
  TestMenuKeyboardAccess(true, false, true);
}

IN_PROC_BROWSER_TEST_F(KeyboardAccessTest, TestSystemMenuWithKeyboard) {
  TestSystemMenuWithKeyboard();
}

IN_PROC_BROWSER_TEST_F(KeyboardAccessTest,
                       TestSystemMenuReopenClosedTabWithKeyboard) {
  TestSystemMenuReopenClosedTabWithKeyboard();
}
#endif

#if !BUILDFLAG(IS_WIN) && defined(USE_AURA)
IN_PROC_BROWSER_TEST_F(KeyboardAccessTest, TestMenuKeyboardOpenDismiss) {
  TestMenuKeyboardAccessAndDismiss();
}
#endif

// Test that JavaScript cannot intercept reserved keyboard accelerators like
// ctrl-t to open a new tab or ctrl-f4 to close a tab.
// TODO(isherman): This test times out on ChromeOS.  We should merge it with
// BrowserKeyEventsTest.ReservedAccelerators, but just disable for now.
// If this flakes, use http://crbug.com/62311.
IN_PROC_BROWSER_TEST_F(KeyboardAccessTest, ReserveKeyboardAccelerators) {
  const std::string kBadPage =
      "<html><script>"
      "document.onkeydown = function() {"
      "  event.preventDefault();"
      "  return false;"
      "}"
      "</script></html>";
  GURL url("data:text/html," + kBadPage);
  ui_test_utils::NavigateToURLWithDisposition(
      browser(), url, WindowOpenDisposition::NEW_FOREGROUND_TAB,
      ui_test_utils::BROWSER_TEST_WAIT_FOR_LOAD_STOP);

  ASSERT_TRUE(ui_test_utils::SendKeyPressSync(
      browser(), ui::VKEY_TAB, true, false, false, false));
  ASSERT_EQ(0, browser()->tab_strip_model()->active_index());

  ui_test_utils::NavigateToURLWithDisposition(
      browser(), url, WindowOpenDisposition::NEW_FOREGROUND_TAB,
      ui_test_utils::BROWSER_TEST_WAIT_FOR_LOAD_STOP);
  ASSERT_EQ(2, browser()->tab_strip_model()->active_index());

  ASSERT_TRUE(ui_test_utils::SendKeyPressSync(
#if BUILDFLAG(IS_MAC)
      browser(), ui::VKEY_W, false, false, false, true));
#else
      browser(), ui::VKEY_W, true, false, false, false));
#endif
  ASSERT_EQ(0, browser()->tab_strip_model()->active_index());
}

#if BUILDFLAG(IS_WIN)  // These keys are Windows-only.
IN_PROC_BROWSER_TEST_F(KeyboardAccessTest, BackForwardKeys) {
  // Navigate to create some history.
  ASSERT_TRUE(
      ui_test_utils::NavigateToURL(browser(), GURL("chrome://version/")));
  ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), GURL("chrome://about/")));

  std::u16string before_back;
  ASSERT_TRUE(ui_test_utils::GetCurrentTabTitle(browser(), &before_back));
  content::WebContents* web_contents =
      browser()->tab_strip_model()->GetActiveWebContents();

  // Navigate back.
  {
    content::TestNavigationObserver navigation_observer(web_contents, 1);
    ASSERT_TRUE(ui_test_utils::SendKeyPressSync(
        browser(), ui::VKEY_BROWSER_BACK, false, false, false, false));
    navigation_observer.Wait();

    std::u16string after_back;
    ASSERT_TRUE(ui_test_utils::GetCurrentTabTitle(browser(), &after_back));

    EXPECT_NE(before_back, after_back);
  }

  // And then forward.
  {
    content::TestNavigationObserver navigation_observer(web_contents, 1);
    ASSERT_TRUE(ui_test_utils::SendKeyPressSync(
        browser(), ui::VKEY_BROWSER_FORWARD, false, false, false, false));
    navigation_observer.Wait();

    std::u16string after_forward;
    ASSERT_TRUE(ui_test_utils::GetCurrentTabTitle(browser(), &after_forward));

    EXPECT_EQ(before_back, after_forward);
  }
}
#endif

}  // namespace

redpajama_set_name: RedPajamaGithub