text:
Backpacks for Laptops
Backpacks for College
Hiking Boots for Men
Hiking Boots for Women
Lightweight Hiking Boots
Ergonomic Office Chairs for Back Pain
Planners for College
Collapsible Water Bottles
Insulated Water Bottles
Infuser Water Bottles
Smart Toilets
Smart Bathroom Scales
Budget Mattresses
High-End Luxury Mattresses
Mattresses for Sciatica
Mattresses for Heavy People
Mattresses for Kids
Pillows for Neck Pain
Cooling Sheets
CBD for Vaping
CBD Oil for Dogs
How to Count Macros for Weight Loss and Bulking
How Much Protein Do I Need? Discover Your Daily Recommended Protein Intake
Best Exercise Bikes
Best Yoga Mats
How to choose running shoes
Most Beautiful Movies of All Time
Best Movies of the 2010s by Female Directors
The Best Horror Movies of the 2010s
10 Great Movies and Shows About Strangers Stuck Together
Board Games of All Time
Board Games for Kids
N64 Games
SNES Games
Most Iconic American Restaurants
Best Coffee Shops in the Northwest
Best Breweries in the Midwest
Cheap Vodkas
Russian Vodkas
Potato Vodkas
Cheap Tequila
Añejo Tequila
Pet Websites
All-Inclusive Resorts in Mexico
All-Inclusive Resorts in Hawaii
All-Inclusive Resorts in the Caribbean
All-Inclusive Resorts in Puerto Rico
All-Inclusive Resorts in Costa Rica
All-Inclusive Resorts in Florida
All-Inclusive Resorts in Texas
All-Inclusive Resorts in California
Best Bathroom Scales
Some people want simple scales to measure body weight.
Others want BMI, muscle mass, and body water percentage — the whole kit and caboodle. If smart scales are your game, go for our number one winner, the Fitbit Aria 2. If you want something more straightforward, take a look at our winners for the best digital scale and best analog scale. No matter what you're looking for, we've got something for everyone on our ranking of the best bathroom scales.
Gone are the days when scales simply told you how many pounds you'd packed on over the holiday season. Now, you've got smart scales that can track a vast range of body metrics and chart them in a connected app. Or, if you like to keep it simple, there's the middle-ground digital scales that offer less functionality than smart scales, but provide greater accuracy than their analog counterparts.
Whatever you're after, we've got a list of the best bathroom scales, broken down into 3 categories. We've picked a mix of the best 10 scales available right now, including analog, digital, and smart varieties. All of our selections are high-quality, reliable, and affordably priced.
This ranking was put together using real customer reviews and collated rankings from authority websites. As a result, the winning products have been picked out as the best-in-class by professionals and everyday users alike. Read on to find out which are the best bathroom scales that money can buy.
The Bathroom Scales We RAVE About
From old-school analog to cutting-edge digital, here are our picks for the best scales.
Best Smart Bathroom Scale: Fitbit Aria 2
With support for up to 8 people, the Fitbit Aria 2 synchronizes directly with your Fitbit account. It's the perfect addition to your smart home setup.
Shop the Fitbit Aria 2
Best Digital Bathroom Scale: Etekcity Digital Body Weight Bathroom Scale
Etekcity has created an attractive set of digital scales, with a clean, simplistic design that won't look out of place in any bathroom. Auto-calibration ensures there'll be no mistakes when weighing in each morning.
Shop the Etekcity Digital Body Weight Bathroom Scale
Best Analog Bathroom Scale: Health o Meter Analog Oversized Dial Bathroom Scale
If smart integration isn't among your concerns, then look no further than analog scales. With its oversized, easy-to-read dial, this scale gets top marks in the analog category.
Shop the Health o Meter Analog Oversized Dial Bathroom Scale
Your body weight can only tell you so much. It shouldn't be the only measure of your fitness level. That said, when you're eating a balanced diet and exercising regularly to get healthy, tracking your weight loss can provide great motivation to stick with it.
For the purpose of this ranking, we're calling an analog scale one that uses a dial and needle.
Digital scales can be any scale that uses power to display weight or other readings on a digital LCD. But for our list, we're splitting up digital and smart, with smart scales connecting to a mobile application.
Analog, digital, and smart
If you've taken a trip to the doctor's office, then you've probably seen the traditional, bulky analog scales of old. Devoid of any electronics or power, they use a series of springs, levers, and plates to provide a measurement. They're solid and reliable, but they've been largely superseded by newer technology.
In most cases, digital scales can do everything that analog scales can do, often more accurately and efficiently. Smart scales are another step up from digital — in addition to being electronic, they boast Wi-Fi or Bluetooth connectivity and device integration. In a world that's increasingly connected, it's another device for your smart setup — but it's not for everyone.
If you opt for a smart scale, you'll be choosing something that can send data to your smartphone. In the most basic cases, this will be a custom-built application that comes directly from the scale manufacturer. But for premium scales from big brands, you can expect third-party app compatibility and even online communities or forums.
A word of warning
You may have a preferred type of scale, but you should be aware of one important point: Smart scales that use a body fat analyzer shouldn't be used by certain groups of people. If you have a pacemaker or if you're pregnant, you should avoid these scales.
To measure your body fat percentage, certain scales send a minor electrical current throughout your body. It travels more rapidly through muscle and more slowly through fat, which is what allows the scale to give a reading. But this electrical current can be harmful for the groups of people mentioned above.
Smart scale metrics
All the scales we've reviewed can measure your weight and display the result in pounds or kilograms. But for anything beyond this, you'll have to buy a smart scale, or a particularly advanced digital scale. And for any special metrics that your scale can track, you'll have to weigh in with bare feet.
One of the most commonly tracked additional metrics is your BMI, or Body Mass Index. Though it paints a general picture of your overall health, it can be notoriously misleading. But it's something that the majority of smart scales will be able to assess.
Some of the more useful metrics include Body Fat Percentage, Muscle Mass, and Body Water Percentage. These 3 pieces of information are particularly helpful for those who are trying to shed fat and gain lean mass. And the water reading also helps to tell you whether you're retaining water, or if you're dehydrated.
It would be unfair to compare a simple analog scale to a smart scale when the 2 are designed for different purposes. So we've looked at each category independently, choosing the best digital, smart, and analog scales. Whatever you prefer, there's a scale out there to match your goals.
Our top picks are based on hundreds of unbiased customer reviews, which we cross-referenced from numerous sources. We scoured consumer platforms like Amazon and authority websites on personal health and fitness to see how each product measured up in its category. Then we aggregated all this data into a single list to see which scales come out on top.
To formulate our final list, we use more than just aggregated data. As part of our scoring process, we also factor in a number of other considerations. This helps to weed out products that don't pull their weight (so to speak) in specific areas, including the following:
The weight limitation imposed on users of the scale;
The product warranty offered by the manufacturer;
Whether calibration is maintained well, or if it requires regular calibration;
Battery life for digital scales and smart scales;
Any smart integration into existing smart home setups, or your home's Wi-Fi;
The quality of the smartphone application, for smart scales specifically;
Any water resistance qualities — because no one wants to short out their smart scale when they step out of the shower.
With all this in mind, let's get started with the first category on our list: the best smart bathroom scales.
Best Smart Bathroom Scales
Fitbit Aria 2
Category: Smart
Fitbit has seen massive success with their array of wearable fitness trackers, which can synchronize directly to your smartphone. And that's exactly what this scale can do — link your body metrics to your Fitbit account. It's the perfect way to expand your personal fitness program, particularly if you already own the Fitbit wristband.
And if your family is on board with the Fitbit brand, this scale can track up to 8 different users. It's as simple as stepping onto the scale, which will automatically recognize which person is using it. The scale tracks metrics like lean mass, BMI, and body fat percentage, with figures displayed on a single, tidy LCD screen.
These scales are also water-resistant, making it safe to store them in the bathroom, even when the shower is running. That said, there are some small niggles, including the occasional need for a firmware update direct from Fitbit. And if you're close in weight to another synchronized user, the scale can take a while to recognize you.
Tracks up to 8 separate people
Simple no-nonsense display
Integrates with Fitbit accounts
Requires firmware updates
Can take a while to weigh in
Rave Meter
Withings Body+ Body Composition Scale
Price : $115
Many users tout the Body+ smart scales as being some of the most accurate in this category. In addition to tracking the key metrics you'd expect, they'll synchronize with multiple apps. Not only can you use the custom-built application from Withings, but you can also sync with MyFitnessPal and other popular health apps.
You can link to popular wearable smart technology, too. If you have an Apple Watch, Fitbit, iPod Touch, or similar device, you can link it with your Body+ scale. You'll just need to have an active home Wi-Fi connection to get the scale set up and reporting data.
The only problem with this scale is that we found ourselves asking whether they try to do too much. For example, the scale will provide you with a weather forecast when you step on in the morning. With a scale like this, you also have a smart assistant — leaving us to question whether there's any need for the app in the first place.
Reliable, pinpoint precision
Synchronize with wearable tech
Integrates with third-party apps
Too much functionality?
Requires a Wi-Fi connection
Garmin Index Smart Scale
Shop the Garmin Index Smart Scale
Like most smart scales, the Garmin Index links to a purpose-built application for tracking your fitness and health data. However, this one also comes linked to an extended online fitness community, Garmin Connect. Through this portal, you can track your daily exercise and workouts. Integration is especially easy if you have a Garmin watch.
This scale offers support for the largest number of users we've seen — up to 16 members of a household. Each person can have their own app and Garmin Connect account to track personalized progress and goals. That said, the process of adding a new user can be cumbersome and annoying the first time around.
For Garmin products, you'll normally pay a premium, and these scales are no exception to that rule. But if you're willing to shell out some serious cash, there's a lot of functionality and integration to be had. Just don't expect to cheat your weigh-ins, as you'll only get one shot per day with this scale.
Links to a free fitness community
Track a massive 16 users
Review your data on a computer
Limits to 1 weigh-in per day
Adding new users can be fiddly
Comes with a premium price tag
QardioBase 2 Wireless Smart Scale
Shop the QardioBase 2 Wireless Smart Scale
The QardioBase 2 likes to be different, in that it's shaped more like a robotic vacuum than a smart scale. But beyond its somewhat misleading appearance, it has all the bells and whistles of a smart scale. With its own custom app, you can track a range of metrics on your smartphone.
It's the scale that speaks the language of millennials, with emojis that reward your progress instead of the usual numbers. The scale also boasts a baby-friendly pregnancy mode that can track progress through each trimester. And the scale will recognize you if you've weighed in before — auto-recognition is built right in.
We appreciate that the emoji system won't be for everyone — some people will just want a scale that tells you the facts. And though the rechargeable batteries make the product feel premium, charging can be inconvenient if they die at the wrong time. We also felt that the round design made the scale feel smaller when stepping onto it. Because of these issues, the QardioBase 2 falls to fourth place.
Built-in pregnancy-friendly mode
A design that breaks the mold
Emojis provide a unique twist
Charging batteries inconvenient
Emojis won't be for everyone
Round design feels smaller
Best Digital Bathroom Scales
Etekcity Digital Body Weight Bathroom Scale
Category: Digital
With a roomy 12" x 12" surface area, there will be no teetering on the edge of this scale during weigh-ins. Built with 4 high-precision sensors, users generally report very accurate readings, provided the scale is used on appropriate surfaces. While they may not be the most attractive scales that we've ranked, we have no complaints over form or function.
Though it's digital, not smart, this Etekcity scale comes with some bonus functions that make it feel premium. It will auto-calibrate, shut down automatically after a short period of inactivity, and alert you if it's overloaded. It'll also signal when it's time to switch out the batteries so you don't get inaccurate readings.
As far as negatives go, we can find only 2 faults worth mentioning with these digital scales. Firstly, every speck of dust or droplet of water will cling to them for dear life, so they'll need a regular clean. Secondly, if you've lost half a pound, it's likely that the scale will simply show your previous weight. None of these are major concerns, though, which is why the Etekcity Digital Scale lands at the top of the Best Digital Bathroom Scales category.
High-precision sensors
Large 12" by 12" surface
Premium functionality
Doesn't like half measurements
Shows dust and dirt easily
Digital Body Weight Bathroom Scale by Greater Goods
Shop the Digital Body Weight Bathroom Scale by Greater Goods
For bare-bones functionality in a digital design, this is one scale that comes in a very attractive, highly affordable package. This digital scale won't recommend the amount of calories that you should eat, but when it's this cheap, we're not going to complain.
The unit is crafted from hardened glass, with a backlit LCD screen and little else to interrupt the design. A large surface area with no buttons to distract from the screen make for a comfortable pose while you're being weighed. And you won't struggle to read your measurements thanks to the large size of the digits on the screen.
A few minor complaints: We would appreciate a slightly longer grace period to catch our reading before the LCD clears. Plus, some users find that measurements can fluctuate with minute movements or across different floors. And though it seems insignificant, bear in mind that you won't appreciate stepping onto the tempered glass when the mercury drops!
Large, easy-to-read LCD
Extremely slim, clean design
Comfortable size
Temperamental on different floors
Seems to absorb the cold
Display clears quickly
EatSmart Precision CalPal Bathroom Scale
Shop the EatSmart Precision CalPal Bathroom Scale
Often, scales can lose their accuracy over time, with calibration becoming required more and more frequently. Thankfully, even if the EatSmart Precision starts to lose its touch (which it likely won't), the product comes with a 2-year warranty. And, since it's crafted from high-density plastic with tempered glass, you'd have to work pretty hard to break it.
Many scales have weight limitations that stop somewhere in the mid-to-high 300 lbs range, but these scales do better. They'll support users up to a maximum weight of around 440 lbs, while storing and tracking 4 users. And they'll even recommend your average daily caloric intake required for you to maintain your current weight.
Onto the negatives: The scale is easily calibrated, but if you move it around, you're going to be calibrating it frequently. And this model tends to chew through batteries more quickly than many other digital models on the market. Additionally, the display can take some time to clear when you step off.
Provides calorie guidance
High weight limit
2-year product warranty
Display takes a while to clear
Calibration can be required often
Eats batteries fairly quickly
Best Analog Bathroom Scales
Health o Meter Analog Oversized Dial Bathroom Scale
Category: Analog
If you prefer simplicity and the lack of a need for batteries, analog is the way to go. Hands down, our winner for the Best Analog Bathroom Scale is the Health o Meter Analog. The large dial on this scale is much easier to read than other models on the market. However, that oversized dial also adds considerable size and weight to the scale, which is already bigger than most digital or smart models.
When weighing in, you'll stand on soft mats that help to prevent slips. It does make for slightly more difficult cleaning, but it's a small price to pay for improved safety on wet floors. And without any electronic parts, you won't have to worry about small drips and splashes from showers.
Aside from the weight of the product, which we've touched on above, there's not much else negative we can say. Like most analog scales, this one will require more frequent calibration than a digital model. But calibration is quick and easy to do yourself, and perhaps best of all, you won't have to concern yourself with setting up an app or monitoring complex metrics.
Doesn't require a power source
Oversized, easy-to-read dial
Soft mats prevent slippage
Large and cumbersome
Less convenient than digital LCD
Needs regular calibration
Salter Professional Analog Bathroom Scale
Shop the Salter Professional Analog Bathroom Scale
If asked to name a well-known scale brand, many people would likely name Salter. As one of the biggest worldwide analog brands, they've easily secured a top spot with this entry to the market. It's clear to see why they're a respected brand — these scales are crafted from tough, powder-coated steel with a tried-and-true design.
Thanks to the non-electrical, durable build quality, they'll easily survive storage in a humid bathroom. And you won't be at risk of slipping on the soft, padded base. The product is backed by a warranty that lasts a whopping 5 years — much longer than most warranties on the market.
Like other mechanical scales, this model from Salter is huge. You won't be slipping it under a cabinet. And yet, you might wish that you could, as it's also a bit surgical in appearance. That said, if functionality is key, then looks shouldn't matter too much — and there's little else to complain about.
Extensive 5-year warranty
World-recognized brand name
High-quality, powder-coated steel
Bulky, space-consuming footprint
Surgical in appearance
Soft pads trickier to clean
My Life My Shop Balance 2 Body Scale
Shop the My Life My Shop Balance 2 Body Scale
This scale combines a digital LCD screen with an analog needle. The contoured bamboo design creates the illusion of a non-digital analog scale, and the natural wood look will complement almost any bathroom. The scale doesn't use tempered glass in its design, but that hasn't affected the product's durability, with a weight limit of nearly 400 lbs.
The only real drawback of a non-glass design is that dirt is more difficult to spot on the natural bamboo, so it's harder to keep really clean. In terms of other drawbacks, having separate analog and digital readings means you may see minor variations that could be annoying. Also, we found it disappointing that the needle doesn't work without power, but it's a minor niggle.
We feel a little cheeky including this scale in our lineup of the 3 best analog bathroom scales. It's essentially a mashup of both analog and digital combined into one unit. But given the bamboo design and functional needle, we're including it as a strong contender for somebody who wants the retro look.
Attractive bamboo design
High weight limit of 396 lbs
Digital scale disguised as analog
Analog function requires power
Not as easy to clean
May show different readings
Do digital scales use batteries?
A bathroom scale with a power cord would be impractical, and in many cases, unsafe. Typically, your digital or smart scale will be powered by disposable batteries that are easily removed and replaced. And they're likely to last a long time, as you're using the product so briefly.
In some cases, such as with the QardioBase 2, manufacturers opt to use rechargeable batteries. Though they may be charged in a separate dock, in this case the scale connects through a micro USB cable to charge. However, we find rechargeable batteries to be inconvenient as you'll normally store your scale in the bathroom, away from convenient outlets.
Are digital scales affected by temperature?
It's a misconception that temperature can produce an inaccurate reading on digital bathroom scales. A high-quality scale should not be affected by high or low temperatures (though you should of course avoid extremes like you would with any electronics). What could affect your readings is if you move the scales before stepping onto them.
When you initialize a scale, it calculates the correct "zero" reading to ensure that subsequent readings are accurate. So if you move the scale and don't calibrate it afterwards, you'll probably see fluctuations in weight. Once you've positioned the scale, you should follow the instructions for that model's calibration process — that's usually simply switching it on and off.
If you're concerned about inaccurate readings, don't use your bathroom scale on carpeted floor. Other soft flooring like vinyl and linoleum can also produce inaccuracies, depending on the amount of cushion. High-precision sensors in many digital scales can be affected by anything other than a hard, flat surface.
Are analog bathroom scales accurate?
Analog scales use a simple needle and dial to display your weight, while a digital scale uses an LCD screen. Both methods of weighing yourself can be extremely accurate, though they process information differently. However, there can be differences in their consistency when used for a long period of time.
There's a reason that digital scales are the choice of most science labs and many budding chefs. They tend to provide highly accurate readings where precise calculations are important for medications, recipes, and so on. However, not all digital scales have a means of calibration.
When your scale is fresh from its packaging, your results are likely to be very accurate. But when calibration slips over time, only the pricier or high-end digital models tend to provide a way to recalibrate. But in almost every case, you'll find that your basic analog scale has a simple dial for calibration.
As far as precision goes, digital scales can often have the upper hand. A digital LCD screen can provide you a clear-cut reading to 2 decimal places. It's far more difficult to judge a reading that's between whole numbers on an analog scale, without fidgeting and affecting the result.
How do smart scales work?
When you're buying a smart scale, think about how you want to interact with it. Some will sync your metrics directly into a connected smartphone app while displaying them on an LCD screen simultaneously. Others will only transmit data to your application, doing away with anything other than a simple weight measurement on-screen.
Smart scales track a range of metrics, including Body Fat Percentage, Body Water Percentage, BMI, Muscle Mass, and Visceral Fat. Most of these measurements are calculated by passing a small current of electricity through your body. The scales then calculate these percentages based on how long it took for the current to pass through tissues.
If your smartphone is never far from your side, then these are probably the ideal scales for you. Similarly, if you're on a journey of self-improvement, the additional metrics can help fine-tune your workout and diet. If those measurements aren't useful to you, you're likely better off with a more straightforward scale.
What are the best bathroom scales?
The answer to this question really depends largely on your personal preferences when it comes to health and fitness-related gadgets. As such, we've got 3 recommendations, one for each different type of bathroom scale — analog, digital, and smart. Between them, you've got the pick of the best bathroom scales currently available for tracking your weight, or more.
For lovers of smart integration, it doesn't get much better than the Fitbit Aria 2. It'll pair with your existing Fitbit account and work with your wearable smart fitness tracker from the same company. And if you don't have one of these trackers already, here's a good excuse to pick one up — check out our related recommendations below.
If you're not fussed about tracking every metric under the sun, but want digital functionality, then choose a digital scale. Our best digital bathroom scale is the Etekcity Digital Body Weight Bathroom Scale. Sometimes simplicity is key, which is what this high-quality digital scale delivers.
And finally, we've got the best analog bathroom scale, which is the Health o Meter Analog Oversized Dial Bathroom Scale. Other than tracking your weight, this scale don't offer anything else in the way of functionality. But for many people, that's enough — and the Health o Meter focuses on improving the areas where other analog scales fall flat, providing large, easy-to-read measurements.
RAVE Recommends
A quality scale can help you track your weight loss goals, but there's so much more to personal fitness. We've compiled a separate set of products that we'd recommend to help you on your journey. Check them out:
Fitbit Alta HR: Perfect for adopters of the Fitbit Aria 2 smart scale. This wearable fitness tracker will share the same account as your scale, keeping all your metrics in one place.
Fitlosophy Fitbook: Fitness Journal and Planner: Track and record your gains using this gym logbook.
Tension Band Set for Weights Exercise: If you can't make it to the gym, continue your strength training at home. Resistance bands can be used for dozens of exercises, without the need for specialized equipment.
TRIBE Water Resistant Cell Phone Armband Case: Workouts become so much easier with a good playlist, but the gym's equipment is a risk to your delicate smartphone. Keep it safe and secure in this water-resistant armband case.
Ventilated Weight Lifting Gloves with Built-In Wrist Wraps: Any serious weightlifters should protect their hands from calluses, while supporting their wrists. Well, these gloves will do both.
Chris Barry lives in Dorset, England with his wife. When he's not writing product reviews, Chris can usually be found furiously writing and editing his first novel, or watching horror movies.
When is the Best Time to Buy a Mattress?
Best Crib Mattresses
Best Egyptian Cotton Sheets
Best Duvet Covers
Best Cooling Sheets
Best Outdoor Furniture
Best Smart Toilets
Best Massage Chair
Best Cheap Blenders
Best Bean Bag Chairs
Best Toilets
Copyright ©2020 Rave Reviews, All Rights Reserved.


This entry was posted on Monday, April 8th, 2019 and is filed under flyfishing. You can follow any responses to this entry through the RSS 2.0 feed.
« Winston and Ben Welborn, bothers, from Kauai, landed their first Molokai bones. Winston's was a double digit fish. Ben also landed a Barred Jack.


On Tuesday the 28th of March 2017 P6 of Aberlady primary school went to Craigielaw golf course to play club golf with Kate Green.It was "great fun said Kai Lyall" on the day the best score was 28(8 under par) we were in groups of 3(6 groups). A big thank you to Kate for helping us and to Craigielaw for arranging this. By Jackson Gray P6 and Riley P1.


Why Do Black People Have So Many Cousins?
You're already beginning to answer your own question by noting that, to the extent that there are racial differences here, they're likely going to be chalked up to a "call so many people 'cousin' " thing versus a "have so many cousins" thing.
Promoting someone to blood-relative status for reasons independent of biology, marriage or adoption is what social scientists call "fictive kinship." And for plenty of folks, these "fictive" ties are just as important as "real" ones. The specific type of arrangement under which a non-biologically related person gets bumped up to "cousin" (or a parent's friend is called "aunt" or "uncle") is dubbed "nonkin conversion."
That's a fancy term for an informal process that comes naturally—and practically—to a lot of people, and has for some time. In one of the earliest and most popular accounts of how it all works, Carol Stack's 1974 book, All Our Kin: Strategies for Survival in a Black Community, chronicled the ways in which poor African Americans in one community got by in part by depending on "cooperative support networks" that included people who weren't necessarily biologically related.
But is having "fictive kin" (aka "play") cousins only—or even mostly—a black thing? You're not the first one to ask. But it's doubtful.
Yes, kinship has, according to an article on the phenomenon last year in the Globe and Mail, been linked by some ethnographers to West African traditions, while others think it may represent slavery's residual effect on the family unit.
There's also a 2013 study indicating that African Americans and Caribbean blacks have more of these types of relationships than non-Hispanic whites. And, anecdotally, the Historical Society of Pennsylvania reports that African immigrants in that state replace absent extended family with "fictive kin," which it sizes up as "members of the same ethnic or national community who play the role that family would at home."
No doubt about it: If you look into "fictive kinship," most of what pops up will be about black people. But when I asked around, I found plenty of evidence to suggest that it can also be found in nonblack families, with all the same patterns and benefits.
Out of a sign of respect, we are mostly asked to call our parents' friends/social circle tía or tío. (Doña is for the more mature old ladies.) It only stands to reason that all of their kids are our cousins.
I remember being really embarrassed when someone asked me how many siblings my parents had [for me to have] so many cousins, and why were my cousins Puerto Rican if I wasn't?
Assyrians of the last few generations are big on play cousins; it's a very prevalent social bond.
Although I have something like 50 first and second cousins, I'm closest to my play cousins, and that's not uncommon.
Part of the reason is that Assyrians in the old countries after the genocides lived in segregated and besieged communities, so community care of kids was essential. Lots of families were also decimated, so [they] had to rely on neighbors for things that extended family would usually do (child care, harvests, repairing chicken coops, defending the churches from marauding gangs, etc.). Our parents tell stories of having neighbors' parents scold them for wandering into the wrong neighborhood or arguing with the wrong people.
Since your aunts and uncles were either trapped across a border, dead or scattered by Diaspora, families would adopt each other as aunts and uncles, and kids were expected to show them respect and treat them like family.
That followed to America, particularly Chicago, where the community settled in small, dense, working-class neighborhoods where there was not insignificant street violence. Our parents' friends were introduced to us as aunts and uncles; we had to listen to them, etc., and so their kids were our cousins.
Wait, so is it that everyone except nonimmigrant white Americans is doing it?
The answer to that is hard to pin down, too. According to a study by Margaret K. Nelson in the Journal of Family Theory & Review, some researchers have grappled with the possibility that fictive kinship among whites "has become rare with remnants only among the working classes within religious communities … or in isolated rural areas." But that's far from clear.
Further complicating the issue are Nelson's findings that, for whatever reason, researchers tend to use the term "fictive kinship" much more when they're specifically focusing on black subjects than when they aren't. In studies of gay communities, for example, we hear "the family we choose" for the same types of arrangements. That makes comparing the data among different racial groups tough.
There is more consensus around the idea that the types of faux-familial relationships that come with the volunteered "cousin" label have a lot of perks. They "broaden mutual support networks, create a sense of community and enhance social control."
There's even a case to be made that picking and naming one's own extended family makes more sense all the time. As the 2013 Globe and Mail article on the topic predicted, "People are living longer and families are stretched geographically, so we are more likely to embrace substitutes and additions to fill familial rosters."
So maybe a better question than "Why do black people have so many cousins?" is "Why do you have so few?"
Jenée Desmond-Harris, The Root's associate editor of features, covers the intersection of race with news, politics and culture. She wants to talk about the complicated ways in which ethnicity, color and identity arise in your personal life—and provide perspective on the ethics and etiquette surrounding race in a changing America. So if you need race-related advice, send your questions to racemanners@theroot.com. Follow Jenée on Twitter.


Walker DL, Hickey CJ, Tregoning MB. The Effect of Electrical Stimulation Versus Sham Cueing on Scapular Position During Exercise in Patients with Scapular Dyskinesis. Int J Sports Phys Ther. 2017; 12(3)425-436.
Walker DL, Hickey CJ The Effect of Electrical Stimulation Curing and Exercise on Scapular Position in a Patient with Scapular Dyskinesis and Shoulder Pain: A Case Study. CPTA Annual Conference. Santa Clara, CA. September 22, 2018.
The Long-Term Effects Of Eccentric Exercise Versus Extracorporeal Shockwave Therapy In Athletes Aged 18-50 With Patellar Tendinopathy: A Meta-Analysis And Systematic Review. APTA's 2018 Combined Sections Meeting in New Orleans, LA, February 21-24, 2018; poster # 1183.
The Effect of Electrical Stimulation Cueing and Exercise on Scapular Position in a Patient with Scapular Dyskinesis and Shoulder Pain: A Case Study. APTA's 2018 Combined Sections Meeting in New Orleans, LA, February 21-24, 2018; poster # 3333.
A Pilot Study: A Comparison of Therapeutic Exercise with Remote Trigger Switch Electrical Stimulation Cueing, and Therapeutic Exercise with a Sham Cue, for a Motor Learning Effect in Scapular Dyskinesis. Trigger-switch-ES and three exercises resulted in significant changes in dyskinesis at 120° abduction (P<0.003).
Walker DL, Hickey CH, Tregoning MB; Department of Physical Therapy, College of Health Human Service, California State University, Fresno, Fresno, CA, USA.
Walker DL, Hickey CJ, Tregoning MB. Department of Physical Therapy, College of Health Human Service California State University, Fresno, Fresno, CA, USA.
Dr. Deborah Walker is an Assistant Professor in the Department of Physical Therapy at California State University Fresno. She received her Master's Degree in Physical Therapy from the University of Southern California in 1990 and her Doctorate of Physical Therapy Degree from Regis University in 2011. She added additional qualifications of Orthopedic Certified Specialist in 1999/2009, Geriatric Certified Specialist in 2013, and holds an X-Ray Bone Densitometry License as of 2016. She has been a practicing physical therapist for twenty-eight years in private practice, government, and hospital-based settings with a focus on orthopedic concerns and geriatric patients.
Dr. Walker began teaching full-time at Fresno State in 2015 and was previously a lecturer at California State University, Long Beach. Dr. Walker's area of research interest is in geriatric physical therapy and includes health promotion for older adults, body composition of older adults, and sarcopenia prevention. Her orthopedic research focuses on the use of electrical stimulation as a novel intervention for scapular dyskinesis, shoulder pain and chronic ankle instability. She recently presented research on the effects of long-term exercise in athletes and published an article on the effect of electrical stimulation curing and exercise on scapular position and shoulder pain.
As a Fresno State professor, Dr. Walker teaches in the orthopedic curriculum, as is the course instructor for Geriatrics, Pharmacology, Physical Diagnosis, assists in supervision of the on-campus Musculoskeletal Care Clinic and oversees research and evidence-based projects.
Dr. Walker is married and has four children (all boys). She lives in the mountains and enjoys the fresh air and outdoor activities. You will find her hiking in the backcountry, walking her 3 dogs, or doing yoga.


text:
#include <linux/scatterlist.h>
#include <linux/slab.h>

#include <scsi/sas_ata.h>
#include "sas_internal.h"
#include <scsi/scsi_host.h>
#include <scsi/scsi_device.h>
#include <scsi/scsi_tcq.h>
#include <scsi/scsi.h>
#include <scsi/scsi_transport.h>
#include <scsi/scsi_transport_sas.h>
#include "../scsi_sas_internal.h"
#include "../scsi_transport_api.h"
#include <scsi/scsi_eh.h>

static enum ata_completion_errors sas_to_ata_err(struct task_status_struct *ts)
{
	/* Cheesy attempt to translate SAS errors into ATA.  Hah! */

	/* transport error */
	if (ts->resp == SAS_TASK_UNDELIVERED)
		return AC_ERR_ATA_BUS;

	/* ts->resp == SAS_TASK_COMPLETE */
	/* task delivered, what happened afterwards? */
	switch (ts->stat) {
		case SAS_DEV_NO_RESPONSE:
			return AC_ERR_TIMEOUT;

		case SAS_INTERRUPTED:
		case SAS_PHY_DOWN:
		case SAS_NAK_R_ERR:
			return AC_ERR_ATA_BUS;

		case SAS_DATA_UNDERRUN:
			/*
			 * Some programs that use the taskfile interface
			 * (smartctl in particular) can cause underrun
			 * problems.  Ignore these errors, perhaps at our
			 * peril.
			 */
			return 0;

		case SAS_DATA_OVERRUN:
		case SAS_QUEUE_FULL:
		case SAS_DEVICE_UNKNOWN:
		case SAS_SG_ERR:
			return AC_ERR_INVALID;

		case SAS_OPEN_TO:
		case SAS_OPEN_REJECT:
			SAS_DPRINTK("%s: Saw error %d.  What to do?\n",
				    __func__, ts->stat);
			return AC_ERR_OTHER;

		case SAM_STAT_CHECK_CONDITION:
		case SAS_ABORTED_TASK:
			return AC_ERR_DEV;

		case SAS_PROTO_RESPONSE:
			/* This means the ending_fis has the error
			 * value; return 0 here to collect it */
			return 0;
		default:
			return 0;
	}
}

static void sas_ata_task_done(struct sas_task *task)
{
	struct ata_queued_cmd *qc = task->uldd_task;
	struct domain_device *dev;
	struct task_status_struct *stat = &task->task_status;
	struct ata_task_resp *resp = (struct ata_task_resp *)stat->buf;
	struct sas_ha_struct *sas_ha;
	enum ata_completion_errors ac;
	unsigned long flags;
	struct ata_link *link;

	if (!qc)
		goto qc_already_gone;

	dev = qc->ap->private_data;
	sas_ha = dev->port->ha;
	link = &dev->sata_dev.ap->link;

	spin_lock_irqsave(dev->sata_dev.ap->lock, flags);
	if (stat->stat == SAS_PROTO_RESPONSE || stat->stat == SAM_STAT_GOOD ||
	    ((stat->stat == SAM_STAT_CHECK_CONDITION &&
	      dev->sata_dev.command_set == ATAPI_COMMAND_SET))) {
		memcpy(dev->sata_dev.fis, resp->ending_fis, ATA_RESP_FIS_SIZE);

		if (!link->sactive) {
			qc->err_mask |= ac_err_mask(dev->sata_dev.fis[2]);
		} else {
			link->eh_info.err_mask |= ac_err_mask(dev->sata_dev.fis[2]);
			if (unlikely(link->eh_info.err_mask))
				qc->flags |= ATA_QCFLAG_FAILED;
		}

		dev->sata_dev.sstatus = resp->sstatus;
		dev->sata_dev.serror = resp->serror;
		dev->sata_dev.scontrol = resp->scontrol;
	} else {
		ac = sas_to_ata_err(stat);
		if (ac) {
			SAS_DPRINTK("%s: SAS error %x\n", __func__,
				    stat->stat);
			/* We saw a SAS error. Send a vague error. */
			if (!link->sactive) {
				qc->err_mask = ac;
			} else {
				link->eh_info.err_mask |= AC_ERR_DEV;
				qc->flags |= ATA_QCFLAG_FAILED;
			}

			dev->sata_dev.fis[3] = 0x04; /* status err */
			dev->sata_dev.fis[2] = ATA_ERR;
		}
	}

	qc->lldd_task = NULL;
	if (qc->scsicmd)
		ASSIGN_SAS_TASK(qc->scsicmd, NULL);
	ata_qc_complete(qc);
	spin_unlock_irqrestore(dev->sata_dev.ap->lock, flags);

	/*
	 * If the sas_task has an ata qc, a scsi_cmnd and the aborted
	 * flag is set, then we must have come in via the libsas EH
	 * functions.  When we exit this function, we need to put the
	 * scsi_cmnd on the list of finished errors.  The ata_qc_complete
	 * call cleans up the libata side of things but we're protected
	 * from the scsi_cmnd going away because the scsi_cmnd is owned
	 * by the EH, making libata's call to scsi_done a NOP.
	 */
	spin_lock_irqsave(&task->task_state_lock, flags);
	if (qc->scsicmd && task->task_state_flags & SAS_TASK_STATE_ABORTED)
		scsi_eh_finish_cmd(qc->scsicmd, &sas_ha->eh_done_q);
	spin_unlock_irqrestore(&task->task_state_lock, flags);

qc_already_gone:
	list_del_init(&task->list);
	sas_free_task(task);
}

static unsigned int sas_ata_qc_issue(struct ata_queued_cmd *qc)
{
	int res;
	struct sas_task *task;
	struct domain_device *dev = qc->ap->private_data;
	struct sas_ha_struct *sas_ha = dev->port->ha;
	struct Scsi_Host *host = sas_ha->core.shost;
	struct sas_internal *i = to_sas_internal(host->transportt);
	struct scatterlist *sg;
	unsigned int xfer = 0;
	unsigned int si;

	/* If the device fell off, no sense in issuing commands */
	if (dev->gone)
		return AC_ERR_SYSTEM;

	task = sas_alloc_task(GFP_ATOMIC);
	if (!task)
		return AC_ERR_SYSTEM;
	task->dev = dev;
	task->task_proto = SAS_PROTOCOL_STP;
	task->task_done = sas_ata_task_done;

	if (qc->tf.command == ATA_CMD_FPDMA_WRITE ||
	    qc->tf.command == ATA_CMD_FPDMA_READ) {
		/* Need to zero out the tag libata assigned us */
		qc->tf.nsect = 0;
	}

	ata_tf_to_fis(&qc->tf, 1, 0, (u8*)&task->ata_task.fis);
	task->uldd_task = qc;
	if (ata_is_atapi(qc->tf.protocol)) {
		memcpy(task->ata_task.atapi_packet, qc->cdb, qc->dev->cdb_len);
		task->total_xfer_len = qc->nbytes;
		task->num_scatter = qc->n_elem;
	} else {
		for_each_sg(qc->sg, sg, qc->n_elem, si)
			xfer += sg->length;

		task->total_xfer_len = xfer;
		task->num_scatter = si;
	}

	task->data_dir = qc->dma_dir;
	task->scatter = qc->sg;
	task->ata_task.retry_count = 1;
	task->task_state_flags = SAS_TASK_STATE_PENDING;
	qc->lldd_task = task;

	switch (qc->tf.protocol) {
	case ATA_PROT_NCQ:
		task->ata_task.use_ncq = 1;
		/* fall through */
	case ATAPI_PROT_DMA:
	case ATA_PROT_DMA:
		task->ata_task.dma_xfer = 1;
		break;
	}

	if (qc->scsicmd)
		ASSIGN_SAS_TASK(qc->scsicmd, task);

	if (sas_ha->lldd_max_execute_num < 2)
		res = i->dft->lldd_execute_task(task, 1, GFP_ATOMIC);
	else
		res = sas_queue_up(task);

	/* Examine */
	if (res) {
		SAS_DPRINTK("lldd_execute_task returned: %d\n", res);

		if (qc->scsicmd)
			ASSIGN_SAS_TASK(qc->scsicmd, NULL);
		sas_free_task(task);
		return AC_ERR_SYSTEM;
	}

	return 0;
}

static bool sas_ata_qc_fill_rtf(struct ata_queued_cmd *qc)
{
	struct domain_device *dev = qc->ap->private_data;

	ata_tf_from_fis(dev->sata_dev.fis, &qc->result_tf);
	return true;
}

static int sas_ata_hard_reset(struct ata_link *link, unsigned int *class,
			       unsigned long deadline)
{
	struct ata_port *ap = link->ap;
	struct domain_device *dev = ap->private_data;
	struct sas_internal *i =
		to_sas_internal(dev->port->ha->core.shost->transportt);
	int res = TMF_RESP_FUNC_FAILED;
	int ret = 0;

	if (i->dft->lldd_I_T_nexus_reset)
		res = i->dft->lldd_I_T_nexus_reset(dev);

	if (res != TMF_RESP_FUNC_COMPLETE) {
		SAS_DPRINTK("%s: Unable to reset I T nexus?\n", __func__);
		ret = -EAGAIN;
	}

	switch (dev->sata_dev.command_set) {
		case ATA_COMMAND_SET:
			SAS_DPRINTK("%s: Found ATA device.\n", __func__);
			*class = ATA_DEV_ATA;
			break;
		case ATAPI_COMMAND_SET:
			SAS_DPRINTK("%s: Found ATAPI device.\n", __func__);
			*class = ATA_DEV_ATAPI;
			break;
		default:
			SAS_DPRINTK("%s: Unknown SATA command set: %d.\n",
				    __func__,
				    dev->sata_dev.command_set);
			*class = ATA_DEV_UNKNOWN;
			break;
	}

	ap->cbl = ATA_CBL_SATA;
	return ret;
}

static int sas_ata_soft_reset(struct ata_link *link, unsigned int *class,
			       unsigned long deadline)
{
	struct ata_port *ap = link->ap;
	struct domain_device *dev = ap->private_data;
	struct sas_internal *i =
		to_sas_internal(dev->port->ha->core.shost->transportt);
	int res = TMF_RESP_FUNC_FAILED;
	int ret = 0;

	if (i->dft->lldd_ata_soft_reset)
		res = i->dft->lldd_ata_soft_reset(dev);

	if (res != TMF_RESP_FUNC_COMPLETE) {
		SAS_DPRINTK("%s: Unable to soft reset\n", __func__);
		ret = -EAGAIN;
	}

	switch (dev->sata_dev.command_set) {
	case ATA_COMMAND_SET:
		SAS_DPRINTK("%s: Found ATA device.\n", __func__);
		*class = ATA_DEV_ATA;
		break;
	case ATAPI_COMMAND_SET:
		SAS_DPRINTK("%s: Found ATAPI device.\n", __func__);
		*class = ATA_DEV_ATAPI;
		break;
	default:
		SAS_DPRINTK("%s: Unknown SATA command set: %d.\n",
			    __func__, dev->sata_dev.command_set);
		*class = ATA_DEV_UNKNOWN;
		break;
	}

	ap->cbl = ATA_CBL_SATA;
	return ret;
}

static void sas_ata_post_internal(struct ata_queued_cmd *qc)
{
	if (qc->flags & ATA_QCFLAG_FAILED)
		qc->err_mask |= AC_ERR_OTHER;

	if (qc->err_mask) {
		/*
		 * Find the sas_task and kill it.  By this point,
		 * libata has decided to kill the qc, so we needn't
		 * bother with sas_ata_task_done.  But we still
		 * ought to abort the task.
		 */
		struct sas_task *task = qc->lldd_task;
		unsigned long flags;

		qc->lldd_task = NULL;
		if (task) {
			/* Should this be a AT(API) device reset? */
			spin_lock_irqsave(&task->task_state_lock, flags);
			task->task_state_flags |= SAS_TASK_NEED_DEV_RESET;
			spin_unlock_irqrestore(&task->task_state_lock, flags);

			task->uldd_task = NULL;
			__sas_task_abort(task);
		}
	}
}

static struct ata_port_operations sas_sata_ops = {
	.prereset		= ata_std_prereset,
	.softreset		= sas_ata_soft_reset,
	.hardreset		= sas_ata_hard_reset,
	.postreset		= ata_std_postreset,
	.error_handler		= ata_std_error_handler,
	.post_internal_cmd	= sas_ata_post_internal,
	.qc_defer               = ata_std_qc_defer,
	.qc_prep		= ata_noop_qc_prep,
	.qc_issue		= sas_ata_qc_issue,
	.qc_fill_rtf		= sas_ata_qc_fill_rtf,
	.port_start		= ata_sas_port_start,
	.port_stop		= ata_sas_port_stop,
};

static struct ata_port_info sata_port_info = {
	.flags = ATA_FLAG_SATA | ATA_FLAG_PIO_DMA | ATA_FLAG_NCQ,
	.pio_mask = ATA_PIO4,
	.mwdma_mask = ATA_MWDMA2,
	.udma_mask = ATA_UDMA6,
	.port_ops = &sas_sata_ops
};

int sas_ata_init_host_and_port(struct domain_device *found_dev,
			       struct scsi_target *starget)
{
	struct Scsi_Host *shost = dev_to_shost(&starget->dev);
	struct sas_ha_struct *ha = SHOST_TO_SAS_HA(shost);
	struct ata_port *ap;

	ata_host_init(&found_dev->sata_dev.ata_host,
		      ha->dev,
		      sata_port_info.flags,
		      &sas_sata_ops);
	ap = ata_sas_port_alloc(&found_dev->sata_dev.ata_host,
				&sata_port_info,
				shost);
	if (!ap) {
		SAS_DPRINTK("ata_sas_port_alloc failed.\n");
		return -ENODEV;
	}

	ap->private_data = found_dev;
	ap->cbl = ATA_CBL_SATA;
	ap->scsi_host = shost;
	found_dev->sata_dev.ap = ap;

	return 0;
}

void sas_ata_task_abort(struct sas_task *task)
{
	struct ata_queued_cmd *qc = task->uldd_task;
	struct completion *waiting;

	/* Bounce SCSI-initiated commands to the SCSI EH */
	if (qc->scsicmd) {
		struct request_queue *q = qc->scsicmd->device->request_queue;
		unsigned long flags;

		spin_lock_irqsave(q->queue_lock, flags);
		blk_abort_request(qc->scsicmd->request);
		spin_unlock_irqrestore(q->queue_lock, flags);
		scsi_schedule_eh(qc->scsicmd->device->host);
		return;
	}

	/* Internal command, fake a timeout and complete. */
	qc->flags &= ~ATA_QCFLAG_ACTIVE;
	qc->flags |= ATA_QCFLAG_FAILED;
	qc->err_mask |= AC_ERR_TIMEOUT;
	waiting = qc->private_data;
	complete(waiting);
}

static void sas_task_timedout(unsigned long _task)
{
	struct sas_task *task = (void *) _task;
	unsigned long flags;

	spin_lock_irqsave(&task->task_state_lock, flags);
	if (!(task->task_state_flags & SAS_TASK_STATE_DONE))
		task->task_state_flags |= SAS_TASK_STATE_ABORTED;
	spin_unlock_irqrestore(&task->task_state_lock, flags);

	complete(&task->completion);
}

static void sas_disc_task_done(struct sas_task *task)
{
	if (!del_timer(&task->timer))
		return;
	complete(&task->completion);
}

#define SAS_DEV_TIMEOUT 10

/**
 * sas_execute_task -- Basic task processing for discovery
 * @task: the task to be executed
 * @buffer: pointer to buffer to do I/O
 * @size: size of @buffer
 * @dma_dir: DMA direction.  DMA_xxx
 */
static int sas_execute_task(struct sas_task *task, void *buffer, int size,
			    enum dma_data_direction dma_dir)
{
	int res = 0;
	struct scatterlist *scatter = NULL;
	struct task_status_struct *ts = &task->task_status;
	int num_scatter = 0;
	int retries = 0;
	struct sas_internal *i =
		to_sas_internal(task->dev->port->ha->core.shost->transportt);

	if (dma_dir != DMA_NONE) {
		scatter = kzalloc(sizeof(*scatter), GFP_KERNEL);
		if (!scatter)
			goto out;

		sg_init_one(scatter, buffer, size);
		num_scatter = 1;
	}

	task->task_proto = task->dev->tproto;
	task->scatter = scatter;
	task->num_scatter = num_scatter;
	task->total_xfer_len = size;
	task->data_dir = dma_dir;
	task->task_done = sas_disc_task_done;
	if (dma_dir != DMA_NONE &&
	    sas_protocol_ata(task->task_proto)) {
		task->num_scatter = dma_map_sg(task->dev->port->ha->dev,
					       task->scatter,
					       task->num_scatter,
					       task->data_dir);
	}

	for (retries = 0; retries < 5; retries++) {
		task->task_state_flags = SAS_TASK_STATE_PENDING;
		init_completion(&task->completion);

		task->timer.data = (unsigned long) task;
		task->timer.function = sas_task_timedout;
		task->timer.expires = jiffies + SAS_DEV_TIMEOUT*HZ;
		add_timer(&task->timer);

		res = i->dft->lldd_execute_task(task, 1, GFP_KERNEL);
		if (res) {
			del_timer(&task->timer);
			SAS_DPRINTK("executing SAS discovery task failed:%d\n",
				    res);
			goto ex_err;
		}
		wait_for_completion(&task->completion);
		res = -ECOMM;
		if (task->task_state_flags & SAS_TASK_STATE_ABORTED) {
			int res2;
			SAS_DPRINTK("task aborted, flags:0x%x\n",
				    task->task_state_flags);
			res2 = i->dft->lldd_abort_task(task);
			SAS_DPRINTK("came back from abort task\n");
			if (!(task->task_state_flags & SAS_TASK_STATE_DONE)) {
				if (res2 == TMF_RESP_FUNC_COMPLETE)
					continue; /* Retry the task */
				else
					goto ex_err;
			}
		}
		if (task->task_status.stat == SAM_STAT_BUSY ||
			   task->task_status.stat == SAM_STAT_TASK_SET_FULL ||
			   task->task_status.stat == SAS_QUEUE_FULL) {
			SAS_DPRINTK("task: q busy, sleeping...\n");
			schedule_timeout_interruptible(HZ);
		} else if (task->task_status.stat == SAM_STAT_CHECK_CONDITION) {
			struct scsi_sense_hdr shdr;

			if (!scsi_normalize_sense(ts->buf, ts->buf_valid_size,
						  &shdr)) {
				SAS_DPRINTK("couldn't normalize sense\n");
				continue;
			}
			if ((shdr.sense_key == 6 && shdr.asc == 0x29) ||
			    (shdr.sense_key == 2 && shdr.asc == 4 &&
			     shdr.ascq == 1)) {
				SAS_DPRINTK("device %016llx LUN: %016llx "
					    "powering up or not ready yet, "
					    "sleeping...\n",
					    SAS_ADDR(task->dev->sas_addr),
					    SAS_ADDR(task->ssp_task.LUN));

				schedule_timeout_interruptible(5*HZ);
			} else if (shdr.sense_key == 1) {
				res = 0;
				break;
			} else if (shdr.sense_key == 5) {
				break;
			} else {
				SAS_DPRINTK("dev %016llx LUN: %016llx "
					    "sense key:0x%x ASC:0x%x ASCQ:0x%x"
					    "\n",
					    SAS_ADDR(task->dev->sas_addr),
					    SAS_ADDR(task->ssp_task.LUN),
					    shdr.sense_key,
					    shdr.asc, shdr.ascq);
			}
		} else if (task->task_status.resp != SAS_TASK_COMPLETE ||
			   task->task_status.stat != SAM_STAT_GOOD) {
			SAS_DPRINTK("task finished with resp:0x%x, "
				    "stat:0x%x\n",
				    task->task_status.resp,
				    task->task_status.stat);
			goto ex_err;
		} else {
			res = 0;
			break;
		}
	}
ex_err:
	if (dma_dir != DMA_NONE) {
		if (sas_protocol_ata(task->task_proto))
			dma_unmap_sg(task->dev->port->ha->dev,
				     task->scatter, task->num_scatter,
				     task->data_dir);
		kfree(scatter);
	}
out:
	return res;
}

/* ---------- SATA ---------- */

static void sas_get_ata_command_set(struct domain_device *dev)
{
	struct dev_to_host_fis *fis =
		(struct dev_to_host_fis *) dev->frame_rcvd;

	if ((fis->sector_count == 1 && /* ATA */
	     fis->lbal         == 1 &&
	     fis->lbam         == 0 &&
	     fis->lbah         == 0 &&
	     fis->device       == 0)
	    ||
	    (fis->sector_count == 0 && /* CE-ATA (mATA) */
	     fis->lbal         == 0 &&
	     fis->lbam         == 0xCE &&
	     fis->lbah         == 0xAA &&
	     (fis->device & ~0x10) == 0))

		dev->sata_dev.command_set = ATA_COMMAND_SET;

	else if ((fis->interrupt_reason == 1 &&	/* ATAPI */
		  fis->lbal             == 1 &&
		  fis->byte_count_low   == 0x14 &&
		  fis->byte_count_high  == 0xEB &&
		  (fis->device & ~0x10) == 0))

		dev->sata_dev.command_set = ATAPI_COMMAND_SET;

	else if ((fis->sector_count == 1 && /* SEMB */
		  fis->lbal         == 1 &&
		  fis->lbam         == 0x3C &&
		  fis->lbah         == 0xC3 &&
		  fis->device       == 0)
		||
		 (fis->interrupt_reason == 1 &&	/* SATA PM */
		  fis->lbal             == 1 &&
		  fis->byte_count_low   == 0x69 &&
		  fis->byte_count_high  == 0x96 &&
		  (fis->device & ~0x10) == 0))

		/* Treat it as a superset? */
		dev->sata_dev.command_set = ATAPI_COMMAND_SET;
}

/**
 * sas_issue_ata_cmd -- Basic SATA command processing for discovery
 * @dev: the device to send the command to
 * @command: the command register
 * @features: the features register
 * @buffer: pointer to buffer to do I/O
 * @size: size of @buffer
 * @dma_dir: DMA direction.  DMA_xxx
 */
static int sas_issue_ata_cmd(struct domain_device *dev, u8 command,
			     u8 features, void *buffer, int size,
			     enum dma_data_direction dma_dir)
{
	int res = 0;
	struct sas_task *task;
	struct dev_to_host_fis *d2h_fis = (struct dev_to_host_fis *)
		&dev->frame_rcvd[0];

	res = -ENOMEM;
	task = sas_alloc_task(GFP_KERNEL);
	if (!task)
		goto out;

	task->dev = dev;

	task->ata_task.fis.fis_type = 0x27;
	task->ata_task.fis.command = command;
	task->ata_task.fis.features = features;
	task->ata_task.fis.device = d2h_fis->device;
	task->ata_task.retry_count = 1;

	res = sas_execute_task(task, buffer, size, dma_dir);

	sas_free_task(task);
out:
	return res;
}

#define ATA_IDENTIFY_DEV         0xEC
#define ATA_IDENTIFY_PACKET_DEV  0xA1
#define ATA_SET_FEATURES         0xEF
#define ATA_FEATURE_PUP_STBY_SPIN_UP 0x07

/**
 * sas_discover_sata_dev -- discover a STP/SATA device (SATA_DEV)
 * @dev: STP/SATA device of interest (ATA/ATAPI)
 *
 * The LLDD has already been notified of this device, so that we can
 * send FISes to it.  Here we try to get IDENTIFY DEVICE or IDENTIFY
 * PACKET DEVICE, if ATAPI device, so that the LLDD can fine-tune its
 * performance for this device.
 */
static int sas_discover_sata_dev(struct domain_device *dev)
{
	int     res;
	__le16  *identify_x;
	u8      command;

	identify_x = kzalloc(512, GFP_KERNEL);
	if (!identify_x)
		return -ENOMEM;

	if (dev->sata_dev.command_set == ATA_COMMAND_SET) {
		dev->sata_dev.identify_device = identify_x;
		command = ATA_IDENTIFY_DEV;
	} else {
		dev->sata_dev.identify_packet_device = identify_x;
		command = ATA_IDENTIFY_PACKET_DEV;
	}

	res = sas_issue_ata_cmd(dev, command, 0, identify_x, 512,
				DMA_FROM_DEVICE);
	if (res)
		goto out_err;

	/* lives on the media? */
	if (le16_to_cpu(identify_x[0]) & 4) {
		/* incomplete response */
		SAS_DPRINTK("sending SET FEATURE/PUP_STBY_SPIN_UP to "
			    "dev %llx\n", SAS_ADDR(dev->sas_addr));
		if (!(identify_x[83] & cpu_to_le16(1<<6)))
			goto cont1;
		res = sas_issue_ata_cmd(dev, ATA_SET_FEATURES,
					ATA_FEATURE_PUP_STBY_SPIN_UP,
					NULL, 0, DMA_NONE);
		if (res)
			goto cont1;

		schedule_timeout_interruptible(5*HZ); /* More time? */
		res = sas_issue_ata_cmd(dev, command, 0, identify_x, 512,
					DMA_FROM_DEVICE);
		if (res)
			goto out_err;
	}
cont1:
	/* XXX Hint: register this SATA device with SATL.
	   When this returns, dev->sata_dev->lu is alive and
	   present.
	sas_satl_register_dev(dev);
	*/

	sas_fill_in_rphy(dev, dev->rphy);

	return 0;
out_err:
	dev->sata_dev.identify_packet_device = NULL;
	dev->sata_dev.identify_device = NULL;
	kfree(identify_x);
	return res;
}

static int sas_discover_sata_pm(struct domain_device *dev)
{
	return -ENODEV;
}

/**
 * sas_discover_sata -- discover an STP/SATA domain device
 * @dev: pointer to struct domain_device of interest
 *
 * First we notify the LLDD of this device, so we can send frames to
 * it.  Then depending on the type of device we call the appropriate
 * discover functions.  Once device discover is done, we notify the
 * LLDD so that it can fine-tune its parameters for the device, by
 * removing it and then adding it.  That is, the second time around,
 * the driver would have certain fields, that it is looking at, set.
 * Finally we initialize the kobj so that the device can be added to
 * the system at registration time.  Devices directly attached to a HA
 * port, have no parents.  All other devices do, and should have their
 * "parent" pointer set appropriately before calling this function.
 */
int sas_discover_sata(struct domain_device *dev)
{
	int res;

	sas_get_ata_command_set(dev);

	res = sas_notify_lldd_dev_found(dev);
	if (res)
		return res;

	switch (dev->dev_type) {
	case SATA_DEV:
		res = sas_discover_sata_dev(dev);
		break;
	case SATA_PM:
		res = sas_discover_sata_pm(dev);
		break;
	default:
		break;
	}
	sas_notify_lldd_dev_gone(dev);
	if (!res) {
		sas_notify_lldd_dev_found(dev);
		res = sas_rphy_add(dev->rphy);
	}

	return res;
}

void sas_ata_strategy_handler(struct Scsi_Host *shost)
{
	struct scsi_device *sdev;

	shost_for_each_device(sdev, shost) {
		struct domain_device *ddev = sdev_to_domain_dev(sdev);
		struct ata_port *ap = ddev->sata_dev.ap;

		if (!dev_is_sata(ddev))
			continue;

		ata_port_printk(ap, KERN_DEBUG, "sas eh calling libata port error handler");
		ata_scsi_port_error_handler(shost, ap);
	}
}

int sas_ata_timed_out(struct scsi_cmnd *cmd, struct sas_task *task,
		      enum blk_eh_timer_return *rtn)
{
	struct domain_device *ddev = cmd_to_domain_dev(cmd);

	if (!dev_is_sata(ddev) || task)
		return 0;

	/* we're a sata device with no task, so this must be a libata
	 * eh timeout.  Ideally should hook into libata timeout
	 * handling, but there's no point, it just wants to activate
	 * the eh thread */
	*rtn = BLK_EH_NOT_HANDLED;
	return 1;
}

int sas_ata_eh(struct Scsi_Host *shost, struct list_head *work_q,
	       struct list_head *done_q)
{
	int rtn = 0;
	struct scsi_cmnd *cmd, *n;
	struct ata_port *ap;

	do {
		LIST_HEAD(sata_q);

		ap = NULL;

		list_for_each_entry_safe(cmd, n, work_q, eh_entry) {
			struct domain_device *ddev = cmd_to_domain_dev(cmd);

			if (!dev_is_sata(ddev) || TO_SAS_TASK(cmd))
				continue;
			if (ap && ap != ddev->sata_dev.ap)
				continue;
			ap = ddev->sata_dev.ap;
			rtn = 1;
			list_move(&cmd->eh_entry, &sata_q);
		}

		if (!list_empty(&sata_q)) {
			ata_port_printk(ap, KERN_DEBUG, "sas eh calling libata cmd error handler\n");
			ata_scsi_cmd_error_handler(shost, ap, &sata_q);
			/*
			 * ata's error handler may leave the cmd on the list
			 * so make sure they don't remain on a stack list
			 * about to go out of scope.
			 *
			 * This looks strange, since the commands are
			 * now part of no list, but the next error
			 * action will be ata_port_error_handler()
			 * which takes no list and sweeps them up
			 * anyway from the ata tag array.
			 */
			while (!list_empty(&sata_q))
				list_del_init(sata_q.next);
		}
	} while (ap);

	return rtn;
}

redpajama_set_name: RedPajamaGithub


It is the show after the Grammys and we welcome you to the ride. Cardi B. got that white hot performance. Diana Ross still reigns supreme and showed it last night. Church complaints is here and the governor of VA wants to moonwalk for the congregation. Fashion brand Gucci is in quicksand and is still getting backlash for its blackface sweater. Senator Elizabeth Warren from MA announces that she will run for President in 2020. Comedy Roulette is here and the fellas have the things that you say when you don't get a Valentine's Day gift. Junior has V-Day poetry just for you. Cardi B. is still shining and has no signs of slowing down this year. A New Orleans Saints fan dies in controversial fashion. Today in Closing Remarks, Big Dog tells us why "friendship is essential to the soul" and so much more.


text:
Companies Presented
College Hill Town Hall
Aronoff Performing Arts Center's Jarson-Kaplan Theater
Ronald K. Brown
The Seldoms
Area Choreographers Festival
Performance and Time Arts Series (PTA)
Classes for Kids
Kids' Class Descriptions
CDT Blog
Call for PTA Proposals
Non-clickable Page
Pilobolus
Apr 22 + 23, 2016
Venue & Ticketing Info
Open Masterclass
FRIDAY, April 22, 2016 8:30pm
SATURDAY, April 23, 2016 8:30pm
Aronoff Center for the Arts, Cincinnati, Ohio
…the ultimate experimenters: Pilobolus, the innovative dance company that works as collaboratively as any sports team and uses its bodies to the extreme."
Pilobolus – named after a fungus that propels its spores with extraordinary speed, accuracy and strength – is a dance company founded by a group of Dartmouth College students in 1971.
Pilobolus is known for a unique and beautiful form of modern dance characterized by intense physical interaction between the bodies of the performers. It requires extreme strength, flexibility and athleticism and challenges the way we think about dance. Physically and intellectually, the company engages and inspires audiences around the world.
Among many others, Pilobolus has been featured on the 79th Academy Awards, Sesame Street, Late Night with Conan O'Brien, and Oprah.
MEET-THE-ARTISTS RECEPTION
Meet Pilobolus at a reception following Friday evening's performance at the Aronoff.
OPEN MASTERCLASSES
TAKE CLASS WITH PILOBOLUS, SATURDAY, APR 23
Dancers, don't miss this incredible opportunity to take a Masterclass with Pilobolus at Contemporary Dance Theater's studios in College Hill on Saturday, April 23, 2016 from 10:30am-12:00pm. $15 in advance payable here, or $19-20 at-the-door.
LECTURE/DEMONSTRATIONS & OUTREACH
Contemporary Dance Theater will be bringing Pilobolus into our communities through lecture-demonstrations and outreach activities. Activities are being scheduled now. Stop back for details closer to the residency dates. Please email residencies@cdt-dance.org to be notified of future opportunities with artists.
4-Show Subscription
BUYING A PASS FOR THE SEASON SAVES YOU THE MOST MONEY!
$125 Orchestra & Balcony I
$105 Balcony II & Box Seats
$105 Seniors, any seats
$82 Students, any seats
CAN'T COMMIT TO ALL 4? YOU CAN STILL SAVE WITH A 3-SHOW SUBSCRIPTION.
$97 Orchestra & Balcony I – With Pilobolus
$82 Balcony II & Box Seats – With Pilobolus
$87 Orchestra & Balcony I – Without Pilobolus
$72 Balcony II & Box Seats – Without Pilobolus
4 Voucher Flex Pass
4 VOUCHERS TO USE IN ANY COMBINATION FOR ANY SHOWS. FOR EACH PILOBOLUS TICKET ADD $10.
$97 Balcony II & Box Seats
SINGLE TICKETS WILL BE AVAILABLE STARTING OCTOBER 5. FOR EACH PILOBOLUS TICKET ADD $10.
$32 Orchestra & Balcony I
$27 Seniors, any seats
TICKETS PURCHASED THE DAY OF WILL CARRY AN ADDITIONAL $5 CHARGE.
Aronoff Center for the Arts, Jarson-Kaplan Theater
650 Walnut Street, Cincinnati, Ohio 45202 | (513) 621-ARTS
The Contemporary Dance Theater Guest Artist Series is sponsored by THE OTTO M. BUDIG FAMILY FOUNDATION and is supported by the thousands of people who give generously to the ArtsWave Community Campaign. Support also comes from the National Endowment for the Arts, a public agency dedicated to supporting excellence in the arts, both new and established; bringing the arts to all Americans; and providing leadership in arts education. Contemporary Dance Theater is also supported by The Ohio Arts Council, a state agency that supports public programs in the arts.
© Contemporary Dance Theater. All rights reserved.

redpajama_set_name: RedPajamaCommonCrawl


This is a quick opener for 10th Magnitude, a Chicago-based tech company specializing in cloud-based computing. They are creating a series of webcasts and wanted something that reflected not only the clean branding of their company, but various ideas behind it, like automation, modernization, scale, migration, and myriad other concepts, with them at the epicenter (hence the series name.) And it had to be fast. A little challenging when trying to integrate those ideas, but in the end… we got there! Dork note: with the exception of the logo proper, everything else is generated inside After Effects.


Live leads, filtered to your specification as a hot key transfer. We offer a tailored service, connecting your agents to pre-qualified customers to run through an immediate quote.
With over 15 years of On-line expertise. We generate thousands of leads each month for our clients to use in the Insurance industry. We quickly became aware that not all Insurers were good at picking up a phone and contacting these leads. For whatever reason some companies find it hard to contact these leads and don't have the systems or facilities to organise calling them correctly. This is where our first Call centre product was born. A simple on-line generated lead, that we call and pass over to the Insurer.
The benefits are simple, the Client gets a filtered lead more or less tailored to what they want. This is unavailable when generating one on say Google. The client is able to outline the criteria they require so they don't spend wasted man hours calling data that doesn't fit their campaign. So this part is done for them allowing them just to quote the applicant. We have many different products that cover all the Insurance industry including Motor, Home and Business. Call or contact us for more information.


Ok so I managed to do the three last rows of Edgy then of course decided it needed another ten.
Wasn't the thunder and lightening amazing, apparently the lightening earlier in the week struck a set of flats locally and blew out an entire chimmeny stack and left a couple of people in hospital. No reports of any disasters yesterday but it was nice to get a bit of fresh air through the studio even if a couple of buckets had to be deployed as the rain was obviously going in the right direction to find the holes in the roof.
I alos brought these wonderful Dpn from Nancy especially like the short five inch ones for socks.
She also had some great wooden larger needles that I think I might buy as a christmas present.
sorry about the pictures forgot to take them until it was dark last night, will try to take some in the daylight today.
I decided its definitely the cardigan but think I'm going to wait and see what the cotton angora is like they said it was Pistachio so I think it may be the same as Dawns if not the moss green cashmerino aran will be put to use I think.
And look what Jan gave me fantastic as I was starting to run low .
So I think there might be some dyeing on the cards today if I finish Edgy but want to get back to watch Glastonbury especially as Mageic Numbers playing tonight, it makes me crave a festival not sure about that much rain, we've been fairly lucky in the past and usually only have small downpours especially since they moved the site to Chelthnam and Glouster Race course (oh the joy of indoor loos I know I'm getting old) but just the thought of sitting in a field listening to good music and knitting sounds good right now. Ok another incentive to learn to drive.
What no pictures of Poppy! I'll have to send the pc repairman round as your pc is obviously broken!!
Love those colours in the cotton.
Those yarns from turkey look scrummy! I went and had a look at the sale at Beatties today but there was Cork, chenille and a few other bits and pieces... so I didn't bother. I'm sure whatever you make with the handknit cotton will be great- good colour combo!
We did a little route run to Bristol yesterday to check if I cold remember the way! (Sad I know, but it's been twenty odd years since I last had to do a training course there) We came back via Glastonbury, you should have seen the amount of police cars and speed camera vans on that road. I think the whole UK police force must have gone there too!


Kerala Vacations: information about the history of Kerala and cities.
The state of Kerala in south-western India situated at the Malabar shore of Indian Ocean.
Kerala is one of the most populated states (32 million inhabitants and 820 per sq meter) with the lowest rate of illiteracy in India.
The local language is a Malayalam and the capital city is Thiruvananthapuram.
The state has one of the highest shares of Christians among the Indian states, 19%. Kerala is considered "an eye to Europe" as already in the 16th century, the first Portuguese settled here building the oldest Christian church in India.
For most tourists, Kerala is associated with sandy beaches, coconut palms, tea estates and tropical forests.
For locals, Kerala is known as "God's Own Country" due to the mixture of incredible nature, culture and art.
It is famous for its variety of arts, including Kalaripayatt (martial art that source of many types of oriental martial arts), Kathakali (one of the oldest Indian traditional dances) and races of snake boats. It is also considered Mekka of Ayurveda.
The climate of Kerala is moderate with the monsoon season from June to August. Temperatures vary from 26 to 32°C, while in the mountains they drop to 21°C.
National Geographic Traveler lists Kerala among "the 50 places of a lifetime", Travel & Leisure names it "one of the 100 great trips for the 21st century".


In early August, a group of 19 Lydia's House guests, staff and family members journeyed north to London, OH to attend Procter Center's family camp for the second summer in a row. Procter Camp is a ministry of the Episcopal Diocese of Southern Ohio and offers a place for kids and families to grow in faith, learn, and play together. For many, it was a first "camping" experience and offered a chance to try new things, escape the city and enjoy peaceful farmland scenery.
We started each day with music and a daily story led by the Chaplain and camp counselors. There was a long list of activities during the days to choose from, like arts and crafts, farm tour and animal meet and greet, lake and pool swimming, music, fishing, and team sports. For those of us just looking for some time to relax and recharge, you could spend time walking the grounds, reading a book in the rocking chairs, or visiting the labyrinth.
All in all, there was something for everybody, and the kids had some GOOD naps as a result!
We're very thankful for the staff and volunteers who kept life moving, and the house standing, in our absence. As our time in this place came to a close, we found our hearts full, our bodies tired, our skin sun kissed, and our minds looking homeward to Lydia's House.


Otter Lake is one of the finest fishing lakes in northern Wisconsin. The campground is located 7.5 miles north of Stanley on County Trunk "H" and 2 miles west on 170th Avenue.
It has 22 well-spaced campsites, a playground, picnicking, swimming and a boat landing. The shoreline of much of Otter Lake is undeveloped and provides an attractive, wilderness-type setting. This is an exceptional place for those who want to get away from it all! Otter Lake Park has a central location for water, electricity available on all sites and pit toilets. There are no showers at Otter Lake and there is no dump station. Firewood is available for sale from the park caretaker.
The Otter Lake Campground is generally open from the first week in May through the last week in October. Reservations will not be accepted for mid September through the end of October. During this time, the sites are sold first come, first served at the park, via self-registration. All sites are $18.00 - if you use electricity, please add an additional $7.00.


text:
Chicago Cubs, Wrigley Field and baseball history
No-hitters lost in the ninth: The Cubs' Kyle Hendricks, September 12, 2016
The Professor nearly entered the record books on this night.
By Al Yellon@bleedcubbieblue Dec 5, 2021, 10:00am CST
Share All sharing options for: No-hitters lost in the ninth: The Cubs' Kyle Hendricks, September 12, 2016
Photo by Dilip Vishwanat/Getty Images
To conclude this series of no-hitters lost in the ninth both for and against the Cubs, I am going to repost most of the recap I wrote on the Cubs' 4-1 win over the Cardinals on a September night in 2016. I've re-worked it a bit to focus more on the no-hitter than on the Cubs' run to the NL Central title, and eventual World Series championship, that year.
Despite coming up three outs short of a no-hitter, this Kyle Hendricks game against the Cardinals was magnificent.
Hendricks, who barely breaks 90 on pitch-speed meters in an era when 95 is standard issue for pitchers, had his no-hit bid broken up with no one out in the ninth.
Jeremy Hazelbaker led off that ninth inning with a home run [VIDEO].
That blast also deprived Hendricks of a shutout, and after that plate umpire Joe West decided to make himself part of the show, tossing Joe Maddon. What was that about?
Catcher Miguel Montero quickly visited the mound, but tension mounted after he returned behind the plate.
"(West) tapped me on the shoulder and told me to go out," Montero said. "So I'm walking out, and (West) then said, 'If you go out, I'll count it as a visit.'"
As Montero went to the mound for a second time, Maddon came out to argue with West and was tossed.
"There was a misinterpretation there," Maddon said. "We needed a little bit more time to get (closer Aroldis Chapman) ready, based on the situation. That's all. And I needed the catcher to go out to the mound.
"We were denied, and I didn't like it. So I made my stand. I truly believe we were proper in that."
Even a certain former Cubs pitcher noticed West's antics:
I just don't want him in the post season. Enough of the #JoeShow https://t.co/qPhEQ9u7nf
— Kerry Wood (@KerryWood) September 13, 2016
Chapman (34th save) came in to finish up, and the Cubs wound up with a 4-1 win.
The outstanding outing dropped Hendricks' career ERA from 2.94 to 2.91 in 73 total games (72 starts).
Hendricks, as always, spent the evening inducing weak contact, the hallmark of his game. He had Cardinals hitters swinging and missing at 81 mile per hour changeups, making them hit routine ground balls to Cubs infielders, nine ground ball outs in all. Beyond that, Cubs fielders backed up Kyle with spectacular defense.
Prior to his home run, Hazelbaker had hit a foul ball down the right-field line in the sixth. Jason Heyward dived into the stands to make this great catch [VIDEO].
(Check out the Cardinals fan trying to grab the ball out of Heyward's glove.)
Kyle's changeup is what gets him outs, even strikeouts, rare for a pitcher without velocity. He struck out seven and issued two walks (one was erased on a double play) and the Cubs' win was thanks primarily to a pair of home runs.
Ben Zobrist hit his 15th, which was his first since August 20 and just his second since the All-Star break, to give the Cubs a 1-0 lead in the second [VIDEO].
That was the longest homer the year for Ben:
According to @statcast Zobrist's HR had exit velocity of 102.8 mph, and sailed 422 feet, his longest of the season. #Cubs
— Carrie Muskat (@CarrieMuskat) September 13, 2016
The Cubs plated another run in the third on an RBI single by Anthony Rizzo after a pair of singles by Javier Baez and Dexter Fowler. Fowler added a two-run shot in the fifth after Baez had reached on an error [VIDEO].
Kyle has worked very hard to get where he is, a non-traditional starter in an era where everyone throws hard, kind of a throwback. Greg Maddux comparisons have been made, not entirely unfairly. Hopefully Kyle will throw a no-no someday — Maddux himself never had one. The Hazelbaker home run deprived Hendricks not only of a no-hitter, but for a chance to throw "a Maddux," defined as a complete-game shutout with fewer than 100 pitches. It'd have been close, as Kyle left the game with 96 pitches (64 strikes), still very efficient.
One more note on this game, a game chronicled earlier in this series:
Tonight was first #Cubs one-hitter vs #Cardinals since 9/25/1995.
Frank Castillo lost no-hitter on Bernard Gilkey 2-out triple in 9th.
— Christopher Kamka (@ckamka) September 13, 2016
And one more no-hitter note: The only no-hitter thrown by anyone this year was Jake Arrieta's against the Reds in Cincinnati on April 21.
Hope you have enjoyed this series of near no-hitters both for and against the Cubs. It is worth noting, as I conclude, that next September 2 will be the 50th anniversary of the last Cubs no-hitter thrown at Wrigley Field,
No-hitters lost in the ninth, both for and against the Cubs
No-hitters lost in the ninth: The Cubs' Jamie Moyer, April 13, 1987
No-hitters lost in the ninth: The Cubs break up Eric Milton's no-hit bid, July 25, 2004
The Cubs' road uniforms had centered numbers in 1972. Here's why It's something unique in Cubs — and MLB — history.


How to configure server permissions so WordPress does not require FTP for plugin installs/updates.
After you upload your files, you'll want to make sure ownership permissions are set to Apache so that Wordrpess can update and/or install plugins without requiring FTP credentials. You can set permissions via SSH.
You may need to do this whenever uploading folders.
How to configure Apache correctly for WordPress to enable permalinks.
In order to enable permalinks in WordPress, custom htaccess files are created. Your server only reads these if "AllowOverride" is set to "All" in your Apache configuration.
In responsive design, often times you'll want to change the width of elements from static to 100% wide with some margins or padding.
Google was recently forced to launch a clearer design to distinguish ads from search results to follow updated FTC guidelines put in place on June 25, 2013. The top Ads are no longer as deceptive. Ads were formerly on a light yellow background with a tiny "sponsored results" line of text.
Advertisers and Google of course are definitely concerned about lower click-thru ratios. So far our adwords campaigns have not experienced any significant drops in performance.


text:
/**
 * @see{https://leetcode.com/problems/copy-list-with-random-pointer/}
 */

/**
 * // Definition for a Node.
 * function Node(val, next, random) {
 *    this.val = val;
 *    this.next = next;
 *    this.random = random;
 * };
 */

/**
 * @param {Node} head
 * @return {Node}
 */
var copyRandomList = function (head) {
  if (!head) {
    return head;
  }
  const map = new Map();
  let sourceNode = head;
  let targetNode;

  while (sourceNode) {
    map.set(sourceNode, new Node(sourceNode.val));
    sourceNode = sourceNode.next;
  }

  map.set(null, null);

  sourceNode = head;

  while (sourceNode) {
    targetNode = map.get(sourceNode);
    targetNode.random = map.get(sourceNode.random);
    targetNode.next = map.get(sourceNode.next);

    sourceNode = sourceNode.next;
  }

  return map.get(head);
};


text:
…Boston, you're my home…
Filed under: revolution 8^\, text only!!! ABCDEFGH...and so on... — Leave a comment
That line ("Boston, you're my home"), from the song "Dirty Water" by The Standells is on my mind tonight.
I grew up in New Hampshire ("the Shire" if you're not from there & want to make an 'annoying-to-decent' joke). I know it's not in Boston, or even Massachusetts, if you paid attention in geography class…or history.
Here's the thing: It's like when someone has a bunch of brothers & they fight with them all the time, but if someone fucks with one of their brothers…'there will be blood', as somebody once said. If there's a competition, of any kind, between NH & MA…I'm screaming 'MASShole' as fast as anybody, but I also grew up an hour from Boston. It's where everybody I knew went when they wanted to go to 'a City'. It's the city that is home to all of the teams I've been rooting for since I was 10 years old. It's the city I lived, worked & played around before I moved to Portland. It's a city that is still home to friends & relatives. (Also…as an aside, for those of you who didn't pay attention in History class: It's also the city where Crispus Attucks, a gentleman of half Native American & half African American descent, became the first person to die fighting for independence from the English…in 1770)
You all know what happened today, I don't need to go through that. It's horribly sad. The fact that it happened on Patriots' Day, which is usually such a wonderful day off from work and school for everyone, & during the Marathon just makes it all the worse. I hope this doesn't ruin these moments, which are so necessary for the psyche of those in need of a distraction from the long winters in the cold, boring states.
Just try to remember that:
-It doesn't matter what color the person/people who did this was/were, it's still terrorism (the use of violence to inflict terror).
-Also, this is no time for racism or creedism. Hating someone for their race or religion is no different from them hating you for yours.
"Darkness cannot drive out darkness: Only light can do that.
Hate cannot drive out hate: only love can do that."
-For every sad person who would do something like this, there are 40 more who would run toward an explosion to help anybody that might be hurt. Fred Rogers once said this, which has been getting quite a bit of circulation today (thankfully):
"When I was a boy and I would see scary things in the news, my mother would say to me,
'Look for the helpers. You will always find people who are helping.'"
Let's try to get through this like humans & at least show some respect to those that we lost & those who lost them.
Goodnight, Boston. We luv you guys. Sleep well.
Here's "Dirty Water" by The Standells (w/ some stills of Boston mixed in there):
…and sooner or later, things will be back to normal and we can laugh at things like this…
…without feeling guilty for being happy:
Take care, everybody.
There's still more good than bad out there.
Tell people you love them.
« #028 SEX!!! (and other social experiments)-w/ Jennifer Italia (pt1)
…meanwhile, sigh… »
Enter your email address to subscribe to this podcast and receive notifications of new posts.
#035 Stand-Up Vol 9: The Jamba Juice Genesis
Robin Williams has always been there.
#034 SEX!!! (and other social experiments) w/ Jennifer Italia (pt 2)
#033 A Tribute to Harry Roy, Bandleader
#032 The 'Back Like A Lamb' Minisode
Archives Select Month October 2014 August 2014 May 2014 April 2014 January 2014 November 2013 October 2013 September 2013 August 2013 June 2013 April 2013 March 2013 January 2013 December 2012 November 2012 October 2012 September 2012 August 2012 July 2012 June 2012 May 2012 April 2012 March 2012 February 2012 January 2012 December 2011 November 2011 October 2011 September 2011 August 2011 July 2011 June 2011 May 2011 April 2011 March 2011 February 2011
I found something I love doing...Help me keep that going...Thank you.
e-mail the show at: dirtbike75@gmail.com


text:
Home » Brno » News » You are reading »
New Rehabilitation Center Proposed For Former Municipal Spa Building In Zábrdovice
Juris DukaDecember 22, 2021 New Rehabilitation Center Proposed For Former Municipal Spa Building In Zábrdovice2021-12-22T13:07:28+01:00 Brno, News
A rehabilitation center could be established in the current building of the Zábrdovice Municipal Spa, transferred from smaller premises at the Zahradníkova polyclinic. The spa building is a protected monument and therefore cannot undergo significant reconstruction, but building a rehabilitation center would return the building to its original purpose. Credit: JMK
Brno, Dec 22 (BD) – "We had a technical study and a proposal for the use of a listed building, referred to as the Winter Spa," said the First Deputy Mayor of Brno Petr Hladík (KDU-CSL). "It is a valuable building built at the turn of the 1920s and 1930s according to a design by the prominent Brno architekt Bohuslav Fuchs. The building has a rehabilitation-wellness character, therefore we would like to move the rehabilitation center from the Zahradníkova polyclinic here, which would also enable a significant expansion of the existing services." The children's rehabilitation centre from the polyclinic in the Bílý Dům could also move here.
"The center would offer a wide range of rehabilitation programs, including balneotherapy," said Hladík. "But we also expect to build a multifunctional hall, medical and technical facilities and facilities for various additional services such as hairdressing or pedicures. We would also like to build a museum of Bohuslav Fuchs. So far, there is no permanent exhibition in Brno that focuses on Fuchs' important work."
Next year, the City of Brno plans to prepare detailed studies and necessary documentation for the construction permit. If everything goes according to plan, construction could begin in 2024. The start of trial operation is planned for the summer of 2026. The City hopes to fund at least part of the preparation and construction using subsidies.
https://brnodaily.com/2021/12/22/brno/new-rehabilitation-center-proposed-for-former-municipal-spa-building-in-zabrdovice/https://brnodaily.com/wp-content/uploads/2021/12/Lazne-spot-1024x595.jpghttps://brnodaily.com/wp-content/uploads/2021/12/Lazne-spot-150x87.jpg 2021-12-22T13:07:26+01:00 Juris DukaBrnoNewsBrno,NewsA rehabilitation center could be established in the current building of the Zábrdovice Municipal Spa, transferred from smaller premises at the Zahradníkova polyclinic. The spa building is a protected monument and therefore cannot undergo significant reconstruction, but building a rehabilitation center would return the building to its original purpose....Juris DukaJuris Dukadukajuris@gmail.comAuthorBrno Daily
Brno, News
« More And More Czech Farms Are Introducing Precision Agriculture
"The Colours Of Us" Exhibition Brings Together Female Artists In Brno »


Hi, everyone! Broni here, and today I have a quick & easy card that really doesn't look quick & easy! I used the Sweet Victoria stamp set from Sweet Stamp Shop. It's perfect for this type of card!
I stamped my flower outlines in Distress inks on some watercolor paper. Then I took my water brush and colored them in, using some extra ink that I had smashed onto my craft sheet. No need to be neat....just slap on the ink!
Next I stamped the leaves in some Shabby Shutters ink, then I spritzed the whole thing with water using a mini-mister.
I dried it with my heat tool, rounded the right edges of it and all my other layers. I stamped the silhouette in Memento Gray Flannel ink, cut it out and popped it up on Scotch foam mounting tape. Then I stamped the sentiment in the same Gray Flannel and tied the ribbon on. I attached all the layers together and I was done!
Wow! It took me just as long to put this post together as it did to make the card!
That's it for me. Thanks so much for stopping in and I hope you have a fabulous weekend!
I love the softness of this card...and the pink and grey color combo is wonderful!
Pink and gray is such an elegant colour combination. I really like the watercolour effect you achieved on the stamped images. So soft and pretty. Just gorgeous!
Oh my goodness, I missed this until just now...Stunning card Broni! So beautiful!!
This is so beautiful! I'm totally 'pinning' this! Amazing!
This is so soft and romantic looking!


Moving on a budget? Below is a list of affordable Glens Falls movers that provide quality moving services at low rates. Select the 'Get Quotes' button to fill out a quote form. You will receive up to seven free estimates from professional moving companies in Glens Falls, NY.
Read real customer reviews and compare moving estimates from our pre-screened and fully-insured Glens Falls moving companies. We also provide moving company profiles with photos, services offered, license numbers and contact information. Determine which Glens Falls mover best suits your needs and save on your next move.
Mullen Bros. Moving, Storage & Logistics Co, Inc.
Connors Bros. Moving and Storage Inc.
Submit information, such as move date and size of the move, on our easy online form. We will help you locate the best moving companies near Glens Falls, NY.
Get FREE, no obligation moving quotes from professional movers in our network. All Glens Falls moving companies are pre-screened, licensed and insured.


Integrating a myriad networked devices in homes will make daily life more enjoyable and convenient and open up opportunities to manage energy supply and demand sensibly. Work by the International Electrotechnical Commission (IEC), in collaboration with its sister organisations International Organization for Standardization (ISO) and International Telecommunication Union (ITU) in preparing international Standards for networking the home environment will ensure that tomorrow's homes will be smarter.
Home appliance manufacturers and utilities companies are actively planning the networking of home appliances and electronic devices of all kinds. This trend is driven by public and private concerns regarding energy efficiency and environmental issues. Plans to introduce a smart grid to manage energy consumption more effectively are also behind the development.
As the networking of all these devices involves the preparation and adoption of Standards in the electrotechnology, information and communication technology, and telecommunication domains, collaboration between the IEC and ISO within ISO/IEC joint technical committee (JTC) 1, 'Information technology', and with ITU-T, 'Telecommunication standardization sector', is essential, in particular for communication protocols and interfaces.
Home networks use various media: IT cables, wireless connection, or power line transmission.
Groundwork for the cabled home is already well under way with Standards prepared by ISO/IEC JTC 1/Subcommittee (SC) 25, 'Interconnection of information technology equipment'. Networks using structured cabling as specified in ISO/IEC 15018, Information technology – Generic cabling for homes, are now a regular feature of many new homes or in renovated properties.
Networks in home environments are also being more widely accepted, thanks to the use of wireless technology and PLT. Work on the wireless beacon-enabled energy efficient mesh network Standard for wireless home network services continues.
Homes are also increasingly equipped with Home Electronic Systems (HES) that meet the ISO/IEC 14543 series of HES architecture standards, which allow the interoperability of products from different sources. An energy management system for HES is addressed by the ISO/IEC 15067-3 Information technology – Home Electronic System (HES) application model – Part 3: Model of an energy management system for HES International Standard.
ISO/IEC JTC 1/SC 25 also recently released international Standards in the 29341 series for Universal Plug and Play device architecture, which allows devices to communicate with each other across networks.
Given the current overall attention paid to energy consumption and environmental issues, the modern networked home does not focus only on connectivity per se, but seeks to give occupants greater control over home appliances and electronic devices and over energy use.
This can be achieved by allowing management of lighting, temperature, and appliances to be incorporated with specific home multi-media and communication system controls that take into account the smart grid and the availability of cheaper-rate power at times of lower demand.
As power from renewable energies will be fed into grids, networked homes will have a role to play when electric vehicles (EVs) enter the overall equation. In a smart grid configuration, EVs can be used to balance out consumption peaks and troughs, as they can be charged and act as storage units during peak supply time and then provide a source when demand is at its highest.
In Europe, the European Committee for Electrotechnical Standardization started work on its SmartHouse Roadmap Project in 2009.
Thanks to the work of ISO/IEC JTC 1/SC 25, in the future, home occupants in many countries will be able to manage their energy use better and to programme their home appliances and devices.
Summarised from the International Electrotechnical Commission's e-tech, January/February 2012.
→ Order any of the ISO/IEC 29341 Information technology – UPnP Device Architecture series of Standards by calling 0800 782 632 during business hours or emailing enquiries@standards.co.nz.


text:
Clyde Mallory Lines v. Alabama ex rel. State Docks Commission
Clyde Mallory Lines v. Alabama ex rel. State Docks Commission by Harlan F. Stone
related portals: Supreme Court of the United States.
sister projects: Wikidata item.
886775Clyde Mallory Lines v. Alabama ex rel. State Docks Commission — SyllabusHarlan F. Stone
Court Documents
Opinion of the Court
Argued: Nov. 15, 1935. --- Decided: Dec 9, 1935
Messrs. Roscoe H. Hupper, of New York City, and Alexis T. Gresham, of Mobile, Ala., for appellant.
Mr. S. Palmer Gaillard, Jr., of Mobile, Ala., for appellee.
Mr. Justice STONE delivered the opinion of the Court.
This work is in the public domain in the United States because it is a work of the United States federal government (see 17 U.S.C. 105).
Retrieved from "https://en.wikisource.org/w/index.php?title=Clyde_Mallory_Lines_v._Alabama_ex_rel._State_Docks_Commission&oldid=2993801"
United States Supreme Court decisions
United States Supreme Court decisions in Volume 296
PD-USGov
Case missing lower court
Case missing case number
Uncategorized United States Supreme Court decision


The enchanting picture below, is section of Chore Chart With Allowance publishing which is categorized within Chore Chart, chore chart allowance ideas, chore chart for allowance, chore chart and allowance and posted at October 30th, 2018 21:57:58 PM by dornboxbikes.
Here is required notification on chore chart for allowance. We have the excellent substance for chore chart for allowance. Check it out for yourself! You can discover Chore Chart With Allowance Chore Chart With Money Need To Get The Boys Do More These Earning In guide and read the latest Chore Chart With Allowance in here.