text:
Trump conspiracies
By a margin of 7 million votes in 2020, American voters tossed Donald Trump into the trash bin of history. Lest there was any doubt, on Nov. 8 voters sent Trump on to the dump. Nothing good will ever happen again for or to Trump aside perhaps from a split Supreme Court decision or two that will delay for a while longer his final reckoning with the law. History will record his single term as the most disastrous ever, from both domestic and international vantages: record job losses, debt explosions, trade deficits and surrenders to the country's old communist enemies, Putin and Kim Jong-Un, and his toiling to accommodate the Saudi oil autocrats whose terrorists attacked America on 9/11.
Actually, nothing good ever happened by or to Trump from the moment he took office, unless you count the multiple times his attorney general or a Republican minority in Congress saved him from having to pay for his crimes and stupidity, starting with obstructing justice in the Russia investigation in the spring after taking office. Even the new special counsel apparently will not resurrect the crime that Trump bragged about and that independent counsel Robert Mueller acknowledged had occurred — trying to stop the FBI's investigation of Russian interference in the 2016 election. Just because it did with Spiro T. Agnew and Richard M. Nixon, justice does not always prevail with the rich and powerful.
But this is about the hopes that many of us have from time to time — that the end of Trump also means the end of the nutty conspiracy theories that defined Trump's time in the limelight and that have caused so many sicknesses and deaths from a disease that he ridiculed and so much violence against hated minorities — nearly 700 mass killings in America this year alone, a frightening surge that started in 2019 and that continues near daily.
We have to acknowledge, nonetheless, that Trump didn't start most of those absurd conspiracies. (OK, massive voter fraud that cost him the White House is an obvious exception.) From Hillary's running a child sex ring in the basement of a Washington pizza parlor and getting State Department messages on her private email server (how dare the woman?) to rampaging Latinos criminalizing the land, Trump and his shills merely gave the crazy yarns cover, a measure of approbation from the most powerful man on the planet.
The conspiracies that Trump and his minions, including the next governor of Arkansas, promoted urged us all to fear and hate the leftist gun confiscators, Blacks, immigrants, sex perverts, socialists and other radicals who are all out to destroy America, or at least to capture it for the spoils. Most of the conspiracies preceded Donald Trump. Remember the Clinton Body Counts — the wild yarns that spread to the national press about Bill and Hillary Clinton murdering a score or more people, including their friend, the head of the state's largest law firm, by somehow causing his single-engine plane to miss the little runway as he tried to land on his Faulkner County farm after dusk? Some of the conspiracy hoaxes have been around for a hundred years, although none ever gained much credibility until Trump and his spongers like the Huckabees talked them up.
Let's consider a few.
*The Socialists. Trump — and nearly the whole Republican Party — has claimed that the Democratic Party has been taken over by socialists/the radical left led by Joe Biden and Kamala Harris. They are scheming to impose a leftist agenda that will soon destroy the country. Sarah Huckabee Sanders' first priority as governor, according to all her ads and her victory speech, is to stop Biden from trying to wreck Arkansas with his socialist agenda.
No sign of a radical left in either Congress or the White House has emerged since Biden took office. In 36 years in the Senate, Biden was a pragmatic centrist, well to the right of Northern Republicans like Lowell Weicker, Jacob Javits, Hugh Scott and Charles Percy, and he was on the right flank of the field in the Democratic race for president in 2020. The most liberal Democratic president in history and far, far to the left of Biden, was Harry S. Truman, who integrated the armed forces when integration was an unutterable word, tried to pass a sweeping civil rights law, fought to enact a universal health care bill, worked to expand the rights of unionizing workers, and developed the Truman Doctrine to finance the reconstruction of war-torn Europe and ally with European democracies to protect them from Russian dictators. Trump took an exactly opposite course.
Trump, Sanders and her daddy all condemned President Obama's health care law — socialized medicine, they called it. The only socialized medicine in America is at VA hospitals.
Sarah's daddy, you may remember, once promised government-guaranteed medical care for every Arkansan before he left the governor's office. Then in 2009 as the new president, Barack Obama, was taking up the issue, Huckabee said that every American should be guaranteed the same medical care that was available to U.S. senators — an ultraliberal idea that matched Truman's. Then when Obama passed a more modest plan, Huckabee joined Republicans in calling it socialized medicine. Trump promised to repeal it when he got in office but never produced a bill. Obamacare brought health security to hundreds of thousands of needy Arkansans, stimulated the state's moribund economy and filled the state treasury. Presumably, daughter Sarah will ask the legislature in January to curtail Arkansas's expansion of Medicaid benefits to the needy.
Long before Trump, the Huckabees and Tom Cotton, the socialist bugbear roiled Arkansas politics, although it never amounted to anything. In 1917, hillbilly farmer Sam Faubus and his radical pal Arch Cornett formed the Mill Creek Local of the Socialist Party and tramped over the hills of Madison County to St. Paul to circulate Socialist Party flyers opposing the United States' entry in World War I. The flyers said the country shouldn't risk American lives by taking sides in a war between European oligarchies. Sam's and Arch's arrests for sedition made the state papers (the war ended before their trials so they never went to jail). When Sam's son, Orval, was running for governor in 1954 he was attacked as a socialist for having attended a tiny socialist self-help school near Mena during the Depression and getting elected president of the student body. Orval actually gained some sympathy for the attacks, but he was not averse to throwing the socialist label at his own woke critics during the school integration crisis that he fomented. An old friend of mine published a book in 1962 laying the blame for the tumult over racial integration in Arkansas on an old socialist plot that he said Faubus furthered to create chaos and internecine war in American society.
Trump is gone, but we are doomed to live in fear of the socialists and libs for the rest of our lives.
*Vaccines and masks: While we are on socialized medicine, you've noticed Sanders' promise to prevent any vaccine or mask mandates after she takes office in January. Presumably, she won't even strongly recommend that kids and adults get vaccinated and take other precautions, as Asa Hutchinson did. Regrettably, or perhaps thankfully, there was no Sanders around when people like me were forced by law to get shots to go to school or serve in the armed forces. Sanders might expand her Arkansas history education by reading the Arkansas Supreme Court decision in Cude v. State, when the arch-conservative Justice Sam Robinson, speaking for the Supreme Court, told Archie Cude that he could not hold his children out of school simply because God had ordered him not to have his children vaccinated against smallpox. The law required them to go to school and also to be vaccinated. Numerous federal and state court decisions going back a century said vaccination mandates were proper and necessary to protect public health and that no one could claim the religious freedom to ignore public health laws. Orval Faubus, who later confided to me some admiration for the causes of socialism but not so much for the religious freedom claims, took Archie Cude's side and made the front pages in Arkansas and New York.
*Guns. Gun worship and its conspiracy elements are a more recent phenomenon. For 185 years, the Second Amendment was interpreted as the founders from the Carolinas and Virginia intended it to be, that guns could be regulated by the government but that states were allowed to form militias of gun owners to fight off insurrections by slaves or Indians, some foreign power like Haiti or Cuba or even an oppressive federal government. In 1923, the Arkansas legislature, bowing to the demands of the Ku Klux Klan and a derivative of the National Rifle Association, passed a law requiring owners of pistols to get permission from the county clerk to own one and to pay an annual tax for it. The clerks, of course, were expected to refuse to give Blacks a permit to have a pistol. The law was universally ignored and the legislature repealed it.
The NRA was mainly a gun-safety organization and a proponent of strict regulation. When the radical Black Panthers, including Arkansas native Eldredge Cleaver of Wabbaseka, brandished .357 Magnums, shotguns and .45 caliber pistols on the statehouse steps to warn against efforts to stop them from carrying firearms in public places, the NRA and its future leader Charlton Heston supported tough laws against open carry and concealed weapons. California and its governor, Ronald Reagan, enacted the first of them. In the '70s and '80s, gun makers and right-wingers, eventually led by Heston, took over the NRA and it became a champion of gun liberty. If it did not start it, the NRA embraced the conspiracy theory that socialists and their allies, Black people, intended to ban gun ownership, confiscate weapons and take over the country. Men like Timothy McVeigh and Terry Nichols, the Oklahoma City bombers, who were enraged at the courtesies the Army seemed to give Black soldiers, toured gun shows and collaborated with white supremacist groups in Arkansas and elsewhere to accumulate weapons to strike the government they believed had been taken over by socialist plotters and Black schemers. Prosecutor Asa Hutchinson made a name for himself prosecuting the white-supremacist gun nuts in the Ozarks.
The turning point was the election of Barack Obama, which flipped Arkansas overnight from the most solidly Democratic state in the country to a solidly Republican state. The NRA warned that if Obama was elected he would ban the sale of guns. At a table next to me at a barbecue joint after the election, two men exchanged warnings about the coming event. One said he had taken his new son-in-law to a gun store so that both could stock up with weapons before Obama shut down gun sales and began to confiscate them.
The legislature, as we all know, passed laws prohibiting local governments, colleges or any public institution from restricting anyone's right to carry guns anywhere they wished to go. We are taught by our lawmakers, television and movies that whatever your problems and whether they stem from a parent, a neighbor, rude classmates or an unsympathetic society, an arsenal of weapons is your best or only way out.
Sanders had a neat way of explaining that God gave us guns to solve our problems. "We have guns because it's our God-given right enshrined in the Constitution," she tweeted. You probably remember this from history class. When he drafted the Second Amendment, Madison cited God's commandment in the Ninth Beatitude — "Blessed are the white guys, for they shall inherit all the guns and ammo they want."
Brewing Mead with an Amazon Kit
Bringing in the big guns? NRA, lawyers who helped win U.S. Supreme Court case train sights on Illinois' assault weapons ban
Illinois lawmaker says banning assault weapons masks larger issue: mental health


First job outside of real estate: Safety inspector at a nuclear power plant.
First job in real estate or allied field: Summer internship during college at a local small architecture firm doing mostly small scale residential design.
What do you do now and what are you planning for the future? I am currently an architect in our housing studio. I know that over the years my role will evolve, but there are still many aspects of this profession that I'm excited to experience.
How do you unwind from a busy day in real estate? Spend time with my family, typically doing an activity that involves being outdoors.
Favorite book or author: I currently read a lot of books to my kids, so anything by Mo Willems because they make me laugh.
Favorite movie: Any comedy, I'm always up for a good chuckle.
Rules to live by in business: Maintain your relationships. From the daily production with co-workers, coordinating with consultants or earning your clients trust and respect...we are a profession built on nurturing these relationships to create the best product possible.
What is your dream job? Lego designer...I can still be an architect but get to play all day.


The Oak Titmouse mates for life, and pairs defend year-round territories.
The female is primarily responsible for nest construction; during this time, the male is increasingly attendant to her, feeding her inside the cavity and accompanying her while she gathers nest material.
The nest is primarily built of grass, moss, hair, and feathers.


text:
Top 8 Hudson Valley Ski Areas
Whether you're a first-time skier or practically a pro, you can find the perfect slope close to home
By Mary Forsell and Cynthia James
Hunter Mountain was the first ski area in the world to implement snowmaking on its slopes
Photograph courtesy of Hunter Mountain
Like the city dweller who has never visited the Empire State Building, many Valley residents are only vaguely aware of the many ski and snowboard areas that surround us. It's time to open your eyes: "New York has more ski areas than any other state in the country, and is fourth in skier visits," says Scott Brandi, president of I SKI NY. In our region, we have everything from big and bustling Catskills resorts to much smaller operations in the rolling hills of eastern Putnam County, and near the Appalachian Trail in the Warwick Valley.
Brandi quickly ticks off reasons to ski the Valley, rather than heading to Vermont and other points north. "It's simple, close to home, there's night skiing if you're at work all day, and there are great learn-to-ski opportunities and children's programs." We'll add the obvious: Lift tickets are cheaper, too.
I SKI NY is also the organization behind the wildly popular Kids Ski Free program, which introduces third- and fourth-graders to the sport, as well as Discover NY Ski Day. On your way to the slopes, you might even spot the I Love New York Bus on the road. This new tourism initiative departs from New York City and offers day trips to Hunter or Windham.
Even if the white stuff isn't in your backyard, rest assured, snow will prevail on the slopes. Over the last few years, ski areas have been ramping up expanded snowmaking, not to mention other modern marvels like magic carpet lifts, improved night lighting, and cushy indoor amenities. On top of it all, they are diversifying, with many adding snow tubing, terrain parks, and snowshoeing. Heck, even the dining options are rapidly improving, with craft brews and a wide variety of waffles popping up all over the place. This month, if you're lucky, you may even get to zip down the slopes next to Mr. Claus himself. So what are you waiting for? Time to strap on this skis!
Hunter Mountain
64 Klein Ave, Hunter
Vital Stats:
# of trails: 67
# of lifts: 13
Skiable acres: 320
Full-day adult weekend lift ticket: $89
Terrain Parks:
3, includes half pipe, rails, jumps
4 distinct ski areas, tubing, snowshoeing, ski shop, lessons, spa, variety of eateries, hotel with full-service restaurant, childcare, 3 bars, slope-side lodging
Hunter Mountain is the king of firsts: It was the first ski area in the world to feature summit-to-base snow making in 1967; in 1980, it achieved 100 percent snow making coverage (another world's first); and nine years later, it became the first in North America to have an automated snow making system. If you're hungry but don't want to get off the mountain yet, slide over to Pika's Waffle Stop and chow down (and warm up) on their scrumptious Belgian waffles. And after a long day of schussing, it's great to unwind at the full-service spa or grab a great meal at Van Winkle's Restaurant or one of the many other eateries — anyone up for a trip to the sushi bar? Don't feel like skiing? Head to the snow tubing park — the largest in the state — and slide down some of the 18 chutes. Best night to go is Friday to buy a family fun pack: $69 for four admission tickets, 35 percent off the regular price. And if discounts don't draw you to the mountain, we don't know what will.
Catamount Ski Area
Hillsdale, NY and South Egremont, MA
# of lifts: 7
1, includes jumps, jibs, an 800-foot boardercross, and a separate "panther park" for beginners
Night skiing, racing and freestyle teams, two lodges, ski shop, tavern, cafeteria, childcare
One of only three ski spots in the whole country that straddles two states, Catamount — which sits on the border of New York and Massachusetts — also has one of the steepest trails in the Northeast (the double black diamond trail is aptly named Catapult). This unique, mid-sized mountain, which first opened in 1939, has delighted generations of downhill devotees with its laid back, retro charm (and somewhat retro prices). It's also ridiculously easy to get to: It's only 15 minutes from the Taconic State Parkway. Enjoy a posh hotel (as well as ski-in, ski-out vacation condos that are available for purchase) just feet from the slopes.
Mount Peter
51 Old Mt Peter Rd, Warwick
Skiable acres: 55
Best deal: During the day on Tuesdays
1, includes jibs and rails
Free beginner ski and snowboard lessons, western-style tavern, racing programs for kids, two lodges, outside grill, night skiing
Opened by Macy's department store in 1936 for a winter fashion shoot, this family run establishment is the oldest operating ski area in New York State. Still, Mt. Peter knows how to keep up with the times, constantly upgrading its learning area, opening new trails, and spiffing up its lifts. This has long been the go-to hill for many area families; now, Long Islanders, Jerseyites, and savvy city slickers have discovered it too. Little ones line up on holidays and weekends to meet Sweet Pete, a mascot bear who hands out treats. The expansive views of the Warwick Valley — the ski area is just feet off of the Appalachian Trail — just adds to the overall appeal. While the famous free beginner lessons (available with purchase of lift ticket on weekends and holidays) are a steal, the midweek learn to ski packages ain't bad either, with rentals, lessons, and lift ticket for $65 for adults. The food is pretty good too: house-made soups, grilled burgers, and hot dogs for the kids. On weekends, don't miss the homemade Belgian waffles, served with choices of fresh fruit, maple syrup, and even hot fudge.
Skiers prepare to take on the trails at Plattekill
469 Plattekill Rd, Roxbury
Longest run: 2 miles
Vertical drop: 1,100 feet
Full-day adult weekend lift ticket: $67 (two-day: $125; three-day: $180)
1, includes jumps, boxes, and rails
Lift-serviced snowtubing, lodge, bar and grill. Note: only open on weekends and holidays, plus mid-week when there is more than one foot of snow on the ground
With trail names like Shredded Mozzarella and I Think I Can, Plattekill, which has been owned by the Vajtay family for more than 20 years, has a very playful atmosphere. A bit off the beaten path, loyal fans think it's worth the trip.
You'll find skiers of all levels happily cruising along here, whether on the Powder Puff, a gentle two-mile beginner course, or on the double-black diamond Blockbuster trail — 1,100 feet of intense vertical that is one of the steepest in the Catskills. "Plattekill is situated in a natural ski bowl, so all trails ski right to the base," says owner Danielle Vajtay. "Our steep slopes are legendary, as most mountains are not situated like this." In fact, 20 percent of the trails are rated black diamonds, while another 20 percent are double black diamonds.
Holiday Mountain Ski & Fun Park
99 Holiday Mountain Rd, Monticello
# of trails: 7
# of lifts: 4 (2 chairlift, 1 tube, 1 tow)
Night skiing, tubing, ice-skating, cafeteria, lounge, arcade
Holiday Mountain proves you don't have to be one of the biggest to be one of the best. If you're looking to warm up, there's plenty to do in the arcade, including bumper cars and, yes, a mechanical bull. Be sure to grab some noms at the on-site 845 Food and Fun Restaurant. Don't worry about a long drive either, Rte. 17 boarders the property, so the little ones won't be asking "Are we there yet?" for too long.
137 Birch Hill Rd, Patterson
Longest run: 1 mile
Vertical drop: 500 feet
1, includes jumps, ramps, and jibs
Night skiing, racing program for six through 19; childcare, midweek specials for adults with childcare (lift ticket and lesson a steal at around $45); cafeteria; snowsports school, including six-week seasonal programs with afterschool hours
For a few days, it seemed that Thunder Ridge may be no more. A local newspaper reported that longtime operators Mary and Robert Conklin, who have run the small but popular operation since 1995, were looking to retire. But luckily, days later Putnam County National Bank, which owns the facility, came to the rescue and promised to keep Thunder Ridge open. The collective sigh of relief could be heard throughout the hills of eastern Putnam County. And no wonder: Not only did the ski area employ hundreds of people each winter, but generations of locals — mostly from Connecticut, Westchester, Putnam, and Dutchess — have learned to ski at the facility, which is conveniently located right off of I-84. (Non skiers take note: The Danbury Mall is only 30 minutes away.) From the glass atrium at the baselodge, you can see almost the entire mountain, which has also been a mecca for many high school ski teams.
Belleayre has been delighting snow bunnies and experts alike since 1949
181 Galli Curci Rd, Highmount
Longest run: 12,024 feet
Full-day adult lift ticket weekend and holiday: $64
2, includes rails, jumps, and barrels. Progression Park, gentler version for beginners
Night skiing, Kidscamp learn to ski or snowboard program, cross-country, snowshoeing, cafeteria, sub shop, bar, four lodges
A Catskills classic, Belleayre comes with a storied history. Even before it became a state-owned snow park, ski freaks would make pilgrimages here for the thrill of laying their own tracks in the fresh powder. After groups lobbied to make it an official ski resort, construction began in 1949, and Belleayre debuted with five trails, New York's first chairlift, and a rugged cafeteria with dirt floors.
Much has changed: Today Belleayre has four lodges and 51 trails for downhill skiing, including some of the best glade skiing in New York (also called forest skiing, it is not for the faint of heart). Throughout the years, there have been a ton of upgrades, including an improved cafeteria, the expansion of the Kidscamp program, and the sorely needed renovation of the Discovery Lodge.
With its tricked-out terrain park and double black diamond trails, Belleayre pleases even the most persnickety elite skier. Yet it also has plenty of gentle slopes and a progression park to help skiers and riders transition to the bigger terrain. There are also nine kilometers of cross country/snowshoe trails located at the base of the mountain. Use them free of charge, courtesy of New York State.
Windham Mountain
19 Resort Dr, Windham
# of lifts: 12 (2 high speed quads, 4 triples, 1 double, 5 surface lifts)
6, including Mini Park with small jumps with shorter landing areas for beginners; Warpath Park for intermediate levels; and revamped expert-only Warm Up Park
Night skiing, equipment valet, childcare, ski-in spa, cross country skiing and snowshoeing; Adventure Park (¼ mile from the ski area) with outdoor ice skating rink, kids snowmobiles, eight lines of tubing, lodging, multiple eateries
Arguably the most upscale of Catskill ski resorts, Windham Mountain has been making improvements over the years at a breathtaking pace (to the tune of over $11 million). Refashioned as an upscale pampering destination (with bike park and golf resort), this Catskill contender has become a world-class heavyweight.
While there are lessons for all ages, the resort has interesting workshops that focus on different skill sets, for instance the adults-only Power Learn Program, essentially a boot camp, and the women-only Fear Workshop, a three-day event that includes small group lessons, meals, yoga, and even après-ski wine and cheese.
Related: Best Hills and Places to Go Snow Tubing in the Hudson Valley
25 Things Every Hudson Valleyite Must Do
Local Martin Luther King Jr. Day Events and Volunteer Opportunities
Your Ultimate Guide to Homemade Hudson Valley Bagels
Treat Yourself to These 5 Warming Winter Spa Treatments
Best Hills and Places to Go Snow Tubing in the Hudson Valley
How to Choose the Best Fireplace for Your Home
Transform Your Kitchen With 10 Hot Trends
What to Do in Poughkeepsie: The Best Way to Spend a Day in Town
This Winter Cupcakes Recipe Is a Hit for Holiday Parties
This Is How to Make Your Dream Pool a Reality
Why (and Where) You Should Try Meditation
Going Vegetarian? Here's How to Eat Enough Protein (Without Sacrificing Taste)
Discovery the History of the Irish Alps

redpajama_set_name: RedPajamaCommonCrawl


text:
A compensating method of an imaging plate response to clinical proton beams
Ryosuke Kohno, Akihiro Nohtomi, Yoshihisa Takada, Toshiyuki Terunuma, Takeji Sakae, Keiji Matsumoto
For charged particle irradiations, the response of an imaging plate (IP) changes around the Bragg peak. Therefore, an appropriate compensation is necessary for the evaluation of dose distribution formed by charged particles such as protons. In this paper, the response of IPs to clinical proton beams is investigated. An experimentally-obtained depth-dose distribution (an ordinary Bragg curve) by a silicon semiconductor detector (SSD) is employed to evaluate the compensation factors as a function of proton penetrating depth, i.e. residual range. A typical dose distribution in a water phantom formed by an L-shaped bolus is measured by IPs and corrected by using the information of those compensation factors; the residual proton range is successfully calculated by the pencil beam algorithm at an arbitrary point. The results show a good agreement with the measurements by the SSD within the rms error of 3.0%.
Nuclear Instruments and Methods in Physics Research, Section A: Accelerators, Spectrometers, Detectors and Associated Equipment
Charged particles
Bragg curve
pencil beams
Compensation and Redress
Kohno, R., Nohtomi, A., Takada, Y., Terunuma, T., Sakae, T., & Matsumoto, K. (2002). A compensating method of an imaging plate response to clinical proton beams. Nuclear Instruments and Methods in Physics Research, Section A: Accelerators, Spectrometers, Detectors and Associated Equipment, 481(1-3), 669-674. https://doi.org/10.1016/S0168-9002(01)01248-7
A compensating method of an imaging plate response to clinical proton beams. / Kohno, Ryosuke; Nohtomi, Akihiro; Takada, Yoshihisa; Terunuma, Toshiyuki; Sakae, Takeji; Matsumoto, Keiji.
In: Nuclear Instruments and Methods in Physics Research, Section A: Accelerators, Spectrometers, Detectors and Associated Equipment, Vol. 481, No. 1-3, 01.04.2002, p. 669-674.
Kohno, R, Nohtomi, A, Takada, Y, Terunuma, T, Sakae, T & Matsumoto, K 2002, 'A compensating method of an imaging plate response to clinical proton beams', Nuclear Instruments and Methods in Physics Research, Section A: Accelerators, Spectrometers, Detectors and Associated Equipment, vol. 481, no. 1-3, pp. 669-674. https://doi.org/10.1016/S0168-9002(01)01248-7
Kohno R, Nohtomi A, Takada Y, Terunuma T, Sakae T, Matsumoto K. A compensating method of an imaging plate response to clinical proton beams. Nuclear Instruments and Methods in Physics Research, Section A: Accelerators, Spectrometers, Detectors and Associated Equipment. 2002 Apr 1;481(1-3):669-674. https://doi.org/10.1016/S0168-9002(01)01248-7
Kohno, Ryosuke ; Nohtomi, Akihiro ; Takada, Yoshihisa ; Terunuma, Toshiyuki ; Sakae, Takeji ; Matsumoto, Keiji. / A compensating method of an imaging plate response to clinical proton beams. In: Nuclear Instruments and Methods in Physics Research, Section A: Accelerators, Spectrometers, Detectors and Associated Equipment. 2002 ; Vol. 481, No. 1-3. pp. 669-674.
@article{2c76064741cf40ee8aa9856814f89643,
title = "A compensating method of an imaging plate response to clinical proton beams",
abstract = "For charged particle irradiations, the response of an imaging plate (IP) changes around the Bragg peak. Therefore, an appropriate compensation is necessary for the evaluation of dose distribution formed by charged particles such as protons. In this paper, the response of IPs to clinical proton beams is investigated. An experimentally-obtained depth-dose distribution (an ordinary Bragg curve) by a silicon semiconductor detector (SSD) is employed to evaluate the compensation factors as a function of proton penetrating depth, i.e. residual range. A typical dose distribution in a water phantom formed by an L-shaped bolus is measured by IPs and corrected by using the information of those compensation factors; the residual proton range is successfully calculated by the pencil beam algorithm at an arbitrary point. The results show a good agreement with the measurements by the SSD within the rms error of 3.0{\%}.",
author = "Ryosuke Kohno and Akihiro Nohtomi and Yoshihisa Takada and Toshiyuki Terunuma and Takeji Sakae and Keiji Matsumoto",
journal = "Nuclear Instruments and Methods in Physics Research, Section A: Accelerators, Spectrometers, Detectors and Associated Equipment",
T1 - A compensating method of an imaging plate response to clinical proton beams
AU - Kohno, Ryosuke
AU - Nohtomi, Akihiro
AU - Takada, Yoshihisa
AU - Terunuma, Toshiyuki
AU - Sakae, Takeji
AU - Matsumoto, Keiji
N2 - For charged particle irradiations, the response of an imaging plate (IP) changes around the Bragg peak. Therefore, an appropriate compensation is necessary for the evaluation of dose distribution formed by charged particles such as protons. In this paper, the response of IPs to clinical proton beams is investigated. An experimentally-obtained depth-dose distribution (an ordinary Bragg curve) by a silicon semiconductor detector (SSD) is employed to evaluate the compensation factors as a function of proton penetrating depth, i.e. residual range. A typical dose distribution in a water phantom formed by an L-shaped bolus is measured by IPs and corrected by using the information of those compensation factors; the residual proton range is successfully calculated by the pencil beam algorithm at an arbitrary point. The results show a good agreement with the measurements by the SSD within the rms error of 3.0%.
AB - For charged particle irradiations, the response of an imaging plate (IP) changes around the Bragg peak. Therefore, an appropriate compensation is necessary for the evaluation of dose distribution formed by charged particles such as protons. In this paper, the response of IPs to clinical proton beams is investigated. An experimentally-obtained depth-dose distribution (an ordinary Bragg curve) by a silicon semiconductor detector (SSD) is employed to evaluate the compensation factors as a function of proton penetrating depth, i.e. residual range. A typical dose distribution in a water phantom formed by an L-shaped bolus is measured by IPs and corrected by using the information of those compensation factors; the residual proton range is successfully calculated by the pencil beam algorithm at an arbitrary point. The results show a good agreement with the measurements by the SSD within the rms error of 3.0%.
JO - Nuclear Instruments and Methods in Physics Research, Section A: Accelerators, Spectrometers, Detectors and Associated Equipment
JF - Nuclear Instruments and Methods in Physics Research, Section A: Accelerators, Spectrometers, Detectors and Associated Equipment


text:
Empathy at Scale
March 12, 2019 May 13, 2021 / Technology Meets Humanity / 6 Comments
How a drab, new occupation scrubs social media of the dark shadows of our collective unconscious.
How do we deal with technologies that unintentionally magnify the dark side of humanity?
We live in an era of socio-technical systems, massive, virtual machines that process human behavior for commercial ends. Sometimes that's a social network or a search engine optimized to capture our attention, and sometimes it's an online shopping service perfectly tuned to stimulate our urge to buy. Regardless of the specifics at work, the algorithms that drive these systems perform an iterative dance between our data and the machine learning processes that make them smarter over time.
The challenge we now face is that that iteration create feedback that can lead to very negative consequences.
Negative Feedback Loops
We've all done it. You're stuck in horrible traffic resulting from an accident ahead of you. It's all those damn lookie-loos, slowing down to get a good look at the carnage as they pass. And still, when you get to the spot of the accident — since you're driving so slowly anyway — you just can't resist the urge to crane your neck for a peek yourself. Were you driving 60 mph, you probably wouldn't risk it, but driving at 15 mph, what harm could it really do to drop your speed down to 8 mph so you can get a better look? And so our morbid curiosity feeds back upon ourselves, leaving us trapped in traffic exacerbated by our own curiosity.
Social media helps us create similar negative feedback loops. At the simplest level, you might receive a negative reply to a tweet that provokes you to an angry response. That kind of interaction isn't all that different from the reaction we might have in person, without any algorithmic amplification — just old fashioned psychological stimulus-response.
Now, let's say that some of your friends see the exchange and start to pile on with their own outrage. Twitter's algorithms interpret that flurry of negative reactivity as engagement worthy of bringing to others' attention and the flames are further stoked. We don't even necessarily have to say anything to set this feedback in motion. Just clicking the wow, sad, or angry emoticons in Facebook tells the algorithms that something is worth showing to others. Even just looking at something on social media can act as a signal to tell the algorithms that there is something worth highlighting here for others.
Filtering the Dross
While most of us can't seem to stop ourselves from sneaking a peek at an accident as we drive, that doesn't mean we actually feel good about doing it. And if what we glimpse in doing so happens to be particularly gory, it can even traumatize us.
The dregs of human behavior algorithmically surfaced in social media can be similarly horrifying. The algorithms amplify our curiosity, magnifying the shadow within our collective unconscious until it comes spilling out into our newsfeeds. Even though the result is what those dark recesses of our psyche 'told' the algorithms we wanted, it's not what most of us actually want at a more conscious level of mind. The results can be disturbing — and bad for business.
An Outsourced Conscience
The catalyst for this article was a disturbing piece by Casey Newton on The Verge called The Trauma Floor. It details working conditions at Cognizant, one of the major firms that Facebook uses to outsource moderation of content on its network. It paints a gruesome picture, starting with a new trainee named "Chloe" who, soon after being hired, is exposed to a video of a man being murdered while he begs for his life.
Chloe is being trained to spot objectionable content that violates Facebook policy. As such, she is part of a massive psychological shield, an outsourced conscience operated by human employees. This shield is what staves off the backwash of filth that would otherwise overwhelm these hugely profitable networks and make them untenable. But as Newton's article points out, for those paid to do this work, the psychological impacts can be absolutely corrosive.
"We were doing something that was darkening our soul — or whatever you call it."
Li, a Facebook Moderator at Cognizant
Welcome to the seamy underbelly of our social networks. Moderation companies like Cognizant help Facebook and other networks clear out the dross leftover from the algorithmic amplification of our darker human drives. Someday algorithms will likely take over more of this work, but for now, their effectiveness remains limited. Today, the only way to operate these networks with algorithmic feedback on billions of users is by exposing lots of humans to some really nasty stuff.
Scaling Conscience
Our generation is now building a future interface between human and machine intelligence. Humanity has much intelligence and great beauty to embed into machines. But there is also much darkness that is embedded in the process. It is our nature.
The companies behind these gargantuan systems have yet to figure out how to build these anthro-mechanical systems in ways that stifle their sociopathic tendencies. But with rising acrimony and hatred and the growing distortions of reality flowing through these networks, these companies are coming under growing political pressure to do something.
Yes, part of the solution will be better machine learning algorithms capable of the nuance for dealing with the subtly of moderating ever-changing human behavior. But as Tim Berners-Lee puts it, part of the problem comes down to the way we design user experience in these systems:
"How do we design systems so that when we drop a drop of hate into it, falls away dissipates, but when we drop a drop of love in, it propagates and spreads — preserving free speech but influencing us for the good."
Until we figure that out, Chloe and her coworkers will continue to be subjected to the horror of filling in for our missing collective conscience.
6 thoughts on "Empathy at Scale"
davidamerland
Awesome framing Gideon and very much the kind of thing we ought to be thinking about as connectivity across the globe becomes easier, our devices become a lot more powerful and we become more and more embedded in the social fabric of the greater web.
Thanks, David. Exactly. As our minds come together, we are probably going to need analogs to the functionality that exists within our individual brains — just to prevent us from a kind of "collective craziness."
Ken Chance
Wonderful piece, Gideon. What's concerning is how there might, indeed, be entities who seek to exploit this human trait of "the fascination of abomination" (Joseph Conrad, Heart of Darkness) as it continues to exact its toll on the 'Chloes' of the world, as well as the unwitting who grow up knowing nothing different.
Thanks, Ken. Yes, to draw from the movie adaptation, Kurtz notes, "Horror! Horror has a face, and you must make a friend of horror. Horror and moral terror are your friends."
Sowmyan Tirumurti
Cities needed drainage. Initially people just let out their sewage to the ground nearby. That made the neighbourhood to stink and bred unhealthy bacteria. Then they channelled it into a larger tank and treated it. When we had sewage pipelines, and they got clogged, manual scavengers cleared it up. When we have mastered automation, it made sense to develop machines to clear the clogged drains, than expose fellow humans to the risk of dealing directly with the dirty drain. This is a parallel?
In our effort to organize society, we needed to discover how to add value to society. First came market survey to gauge demand. Then the economic viability to provide it at a price consumers were willing to pay. If it was technically difficult we looked at techno economic feasibility of alternatives through innovation. The direct object of business was one goal. There were always undesirable side effects, and pollution. Business generally shirked away from addressing this to save cost. Regulations were required to force further developments to make these safer. Thanks to these regulations we are now addressing the undesirable side effects, and pollution.
Responsible organizations design for different failure modes. Social pollution, and side effects is something for which the first generation social media was apparently not designed. Your article clearly underlines a future dimension and generations for social media design. Currently generations are distinguished by technology used. It is time to seed thoughts to consider generations based on how they reduced their polluting capability. Automobiles have already gone into these. The social dimension is yet to shift.
The sewage example is both a great metaphor and a very literal example of this same effect that I'm talking about, Sowmyan. That's the physical level of human waste needing to be extracted and discretely transported away in order to sanitize the experiences of our daily lives. This is the psychological version of that.
The pollution regulation point is an interesting one. Facebook would have us believe that the market will solve the problem, since end users would simply stop using their service if they don't address these problems. We also have the problem of elected representatives simply not understanding these issues well enough to counter what Zuckerberg testifies. In the end, one of the things we are going to need as a society is more technically literate officials. Or at least officials whose staffs understand what is really happening. Thanks for the great comment.


text:
Dog The Bounty Hunter Says Late Wife Beth Would Approve Of His Fiancé Francie
Brittany R
Netflix October 2020: What's Coming & Going
Almost one year after losing his beloved wife Beth Chapman to cancer, Duane "Dog the Bounty Hunter" Chapman is ready to move on to the next chapter of his life with his new fiancé – and is certain his ex would approve of her.
Chapman spoke to PEOPLE about his decision to propose to his girlfriend Francie Frane, what the future for them holds, and why he believes Beth would approve of their relationship.
Want the Top 5 news stories of the day delivered straight to your inbox before you even wake up? Sign up for the Fame10 Top 5 newsletter and receive 5 breaking news stories every morning!
"I need a partner," the Dog's Most Wanted star admitted. "I've said it before. There will never be another Mrs. Dog. There is not. Francie couldn't do that. There will be a last Mrs. Chapman. If Beth was here, and saw Francie and saw how she was raised, her morality and this and that, Beth would say, 'Big daddy, don't lose her.'"
"You'll never forget the spouse," he added. "You can't help it. I will never forget. But I've got to get out there. I've got to be able to say, 'I came out of this and you can, too.' As a human being, I don't think you look for — not a replacement, because you can never find one. I'm learning that right now."
Chapman proposed to Frane over the weekend over a candlelit dinner at his Colorado home.
"They're very happy and looking forward to a long life together," a rep for the reality TV star told PEOPLE.
Regarding his decision to propose to Frane, he said, "When you know, you know."
"I believe in marriage," Chapman added. "Beth taught me."
Last week, he declared his love for Frane on Instagram, sharing that she has been able to put a smile on his face. Chapman's late wife, Beth, who was diagnosed with stage 2 throat cancer in 2017, passed away last June at the age of 51.
"I scream & Cry Beth where are you why did you leave me then I look up & see you Francie & the pain turns to a smile I LOVE YOU WOMAN !!" Chapman captioned the post of Frane.
While many of his fans criticized the reality star for his new relationship, one of his daughters stepped in to defend him and his relationship last month.
"Everyone who's judging my father should sure pray that they never have to lose their loved one and get judged for trying to fill the void," Bonnie Chapman wrote. "Your opinion is invalid. My mother would've wanted him to be happy. Now please shut up and let me my dad live in peace."
Brittany is a writer who is obsessed with rom-com movies, Gossip Girl, reality television, fashion, and pop-culture. When she isn't reporting on the latest celeb buzz, she is filling up her online shopping cart without checking out.
8 Things You Didn't Know About Dog The Bounty Hunter
Netflix January 2021: What's Coming & Going
Netflix February 2021: What's Coming & Going?
Things To Know About Bridgerton Star Regé-Jean Page
Netflix September 2020: What's Coming & Going
Netflix July 2020: What's Coming & Going
Netflix June 2020: What's Coming & Going
Fame10's Ultimate TV Quiz Collection
Netflix March 2020: What's Coming & Going
Highly Anticipated Upcoming TV Reboots And Revivals Ranked
Ranked: Iconic Scripted TV Shows Of The Past Decade
Netflix December 2019: What's Coming & Going
Television Families You'd Want To Spend Thanksgiving With
Sudden TV Character Exits We Didn't See Coming
Netflix February 2020: What's Coming & Going


When it comes to baskets for storage, our belly baskets are loved by our customers. Why? They have multiple uses as the top part of the belly basket folds down. We've seen some amazing uses for these kind of belly baskets including folding them down and using them as fruit bowls, but mostly, we see them used in living spaces to house artificial plants and even in bathrooms in house those unsightly loo rolls!
These beautiful large sized belly baskets are durable as they have been multi woven in order to create sturdiness and durability through design. These baskets for storage come complete with a contemporary Scandinavian design. With a muted white design featuring, these baskets are perfect for any home and any room including living spaces, bedrooms or bathrooms.
Baskets in the home have become increasingly popular as the trend to contain mess and create a more streamlined approach to living follows on very much from the Scandinavian Hygge trend which focuses on surrounding yourself with all those things you love but in a very calming and clean environment.
These baskets are in stock and ready to be delivered from Persora to any UK or international address. If you would any further information, please do not hesitate to contact a member of our customer services team.


text:
Urban Youth Collaborative
Ending the School-to-Prison Pipeline
Get Us to College
UYC Speaks Out
$746 Million A Year School-to-Prison Pipeline
- Our Roots
- Our Members
- Our Voices
- Ending the School-to-Prison Pipeline
- Get Us to College
- UYC Speaks Out
New York: 25 School Closures Protested Ahead of Vote
By aisradmin January 31, 2011 Press
Tara MacIsaac, Epoch Times
The day before the Panel for Educational Policy votes on closing 25 of the city's schools, several protesters were arrested in front of Department of Education headquarters on Monday. Among those arrested were Councilman Jumaane Williams and Councilman Charles Barron.
Protests have popped up around the city in the days preceding the vote, where chants such as "fix our schools, don't shut them down!" could be heard.
United Federation of Teachers (UFT) President Michael Mulgrew has decried the current method of closing schools. The schools are given a letter grade based on attendance and graduation rates, as well as parent, student, and teacher surveys. A failing grade means closure. The DOE must provide a statement outlining the impact on the surrounding community when slating the school for closure.
He claims the data is not always accurate, and schools are not given proper support to recover from their difficulties.
"The morale of students is hit hard," Nigel Hill, a senior at Paul Robeson High School that is slated for closure told the UFT. "Some of the students start to feel they're not good enough to be in school."
NY city councilmen among 24 arrested in school protest
Se Oponen al Cierre de Escuelas en NY


text:
The Scottish Trial of Refer or Keep (the STORK study): midwives' intrapartum decision making
Styles M, Cheyne H, O'Carroll R, Greig F & Niven C (2011) The Scottish Trial of Refer or Keep (the STORK study): midwives' intrapartum decision making. Midwifery , 27 (1), pp. 104-111. https://doi.org/10.1016/j.midw.2009.12.003
Objectives: To explore midwives' intrapartum referral decisions in relation to their dispositional attitude towards risk. Design: A web-based correlation study examined the association between midwives personality (personal risk tendency); place of work (location); years experience and the timing of their decisions to make referrals (referral score) in a series of fictitious case scenarios (vignettes). Participants: Sample - 102 midwives providing labour care in both Consultant Led Units (CLU) and Community Maternity Units (CMU) from four Scottish Health Board areas. Analysis: A correlational analysis was carried out to test the association between total risk scores and midwives' referral scores. Between-group comparisons were also conducted for experienced versus inexperienced midwives, midwives practising in consultant versus CMU settings and between the four Health Board Areas. Findings: Despite being presented with identical information in the vignettes, midwives made a wide range of referral decisions. There was no association between referral scores and measures of risk, personality or years of experience. No statistically significant difference between the referral scores of midwives working in CLUs or CMUs was observed. However, a statistically significant difference did emerge between the four Health Board areas, with midwives from one area making referrals at a significantly earlier stage. The maternity services in this area had experienced several high profile adverse events prior to this study; which may have influenced their referral behaviour (the availability heuristic), so as to make more cautious decisions. Key conclusions: There was no evidence that variability in the range of referral decisions was due to personality factors, risk propensity, experience or whether the midwife worked in a CLU or CMU. Local factors such as recent adverse events may significantly influence subsequent referral behaviour. Further research is required to identify why the midwives showed so much unexplained variability in their responses to the vignettes.
Intrapartum; Risk/Risk Perception; Decision Making; Midwifery; Personality; Midwives Practice; Midwifery Decision making
Midwifery: Volume 27, Issue 1
Professor Ronan O'Carroll
Professor, Psychology
Health & Behaviour


These are custom designed and Handmade BEAUTIFUL Wedding Pew Bows. Satin peony flower on top of a long tulle with small white flowers added for effect. Flower size: about 5 to 5.5 inches.
2 strings of chiffon ribbons and 4 strings of narrow ribbon and beads. A TRULY DELICATE PIECE THAT WILL LOOK AMAZING IN ANY WEDDING. Accent flowers vary The bow Approximately 34 inches long. Also available in Royal Blue, Turquoise, Orange, White, Coral, Lime Green, Fuchsia, Lilac and Mint. The item "Set of 10 Champagne Chair Bows, Ivory Pew Bows, Church Aisle, Arch decoration" is in sale since Thursday, May 11, 2017.
This item is in the category "Home & Garden\Wedding Supplies\Ribbons & Bows". The seller is "gen-mas" and is located in Kent, Washington. This item can be shipped to United States, Canada, United Kingdom, Denmark, Romania, Slovakia, Bulgaria, Czech republic, Finland, Hungary, Latvia, Lithuania, Malta, Estonia, Australia, Greece, Portugal, Cyprus, Slovenia, Japan, China, Sweden, South Korea, Indonesia, Taiwan, Thailand, Belgium, France, Hong Kong, Ireland, Netherlands, Poland, Spain, Italy, Germany, Austria, Israel, Mexico, New Zealand, Philippines, Singapore, Switzerland, Norway, Saudi arabia, Ukraine, United arab emirates, Qatar, Kuwait, Bahrain, Croatia, Malaysia, Chile, Colombia, Costa rica, Dominican republic, Panama, Trinidad and tobago, Guatemala, El salvador, Honduras, Jamaica, South africa, Bahamas, Viet nam, Uruguay, Saint lucia, Pakistan.


If you have asthma, you can register to add your contact details to the secure REACH database.
Contacts are notified if their details match a study and can choose if they wish to take part.
Do you have asthma? Have you ever thought about taking part in research?
Could you help raise awareness of REACH and build our database of participants? Get in touch with us on reachuk@ed.ac.uk for a copy our leaflets and other promotional materials.


text:
/*----------------------------------------------------------------------------*/
/* Copyright (c) 2008-2017 FIRST. All Rights Reserved.                        */
/* Open Source Software - may be modified and shared by FRC teams. The code   */
/* must be accompanied by the FIRST BSD license file in the root directory of */
/* the project.                                                               */
/*----------------------------------------------------------------------------*/

package edu.wpi.first.wpilibj;

import edu.wpi.first.wpilibj.hal.FRCNetComm.tInstances;
import edu.wpi.first.wpilibj.hal.FRCNetComm.tResourceType;
import edu.wpi.first.wpilibj.hal.HAL;

import static java.util.Objects.requireNonNull;

/**
 * Utility class for handling Robot drive based on a definition of the motor configuration. The
 * robot drive class handles basic driving for a robot. Currently, 2 and 4 motor tank and mecanum
 * drive trains are supported. In the future other drive types like swerve might be implemented.
 * Motor channel numbers are supplied on creation of the class. Those are used for either the drive
 * function (intended for hand created drive code, such as autonomous) or with the Tank/Arcade
 * functions intended to be used for Operator Control driving.
 */
public class RobotDrive implements MotorSafety {

  protected MotorSafetyHelper m_safetyHelper;

  /**
   * The location of a motor on the robot for the purpose of driving.
   */
  public enum MotorType {
    kFrontLeft(0), kFrontRight(1), kRearLeft(2), kRearRight(3);

    @SuppressWarnings("MemberName")
    public final int value;

    private MotorType(int value) {
      this.value = value;
    }
  }

  public static final double kDefaultExpirationTime = 0.1;
  public static final double kDefaultSensitivity = 0.5;
  public static final double kDefaultMaxOutput = 1.0;
  protected static final int kMaxNumberOfMotors = 4;
  protected double m_sensitivity;
  protected double m_maxOutput;
  protected SpeedController m_frontLeftMotor;
  protected SpeedController m_frontRightMotor;
  protected SpeedController m_rearLeftMotor;
  protected SpeedController m_rearRightMotor;
  protected boolean m_allocatedSpeedControllers;
  protected static boolean kArcadeRatioCurve_Reported = false;
  protected static boolean kTank_Reported = false;
  protected static boolean kArcadeStandard_Reported = false;
  protected static boolean kMecanumCartesian_Reported = false;
  protected static boolean kMecanumPolar_Reported = false;

  /**
   * Constructor for RobotDrive with 2 motors specified with channel numbers. Set up parameters for
   * a two wheel drive system where the left and right motor pwm channels are specified in the call.
   * This call assumes Talons for controlling the motors.
   *
   * @param leftMotorChannel  The PWM channel number that drives the left motor.
   * @param rightMotorChannel The PWM channel number that drives the right motor.
   */
  public RobotDrive(final int leftMotorChannel, final int rightMotorChannel) {
    m_sensitivity = kDefaultSensitivity;
    m_maxOutput = kDefaultMaxOutput;
    m_frontLeftMotor = null;
    m_rearLeftMotor = new Talon(leftMotorChannel);
    m_frontRightMotor = null;
    m_rearRightMotor = new Talon(rightMotorChannel);
    m_allocatedSpeedControllers = true;
    setupMotorSafety();
    drive(0, 0);
  }

  /**
   * Constructor for RobotDrive with 4 motors specified with channel numbers. Set up parameters for
   * a four wheel drive system where all four motor pwm channels are specified in the call. This
   * call assumes Talons for controlling the motors.
   *
   * @param frontLeftMotor  Front left motor channel number
   * @param rearLeftMotor   Rear Left motor channel number
   * @param frontRightMotor Front right motor channel number
   * @param rearRightMotor  Rear Right motor channel number
   */
  public RobotDrive(final int frontLeftMotor, final int rearLeftMotor, final int frontRightMotor,
                    final int rearRightMotor) {
    m_sensitivity = kDefaultSensitivity;
    m_maxOutput = kDefaultMaxOutput;
    m_rearLeftMotor = new Talon(rearLeftMotor);
    m_rearRightMotor = new Talon(rearRightMotor);
    m_frontLeftMotor = new Talon(frontLeftMotor);
    m_frontRightMotor = new Talon(frontRightMotor);
    m_allocatedSpeedControllers = true;
    setupMotorSafety();
    drive(0, 0);
  }

  /**
   * Constructor for RobotDrive with 2 motors specified as SpeedController objects. The
   * SpeedController version of the constructor enables programs to use the RobotDrive classes with
   * subclasses of the SpeedController objects, for example, versions with ramping or reshaping of
   * the curve to suit motor bias or dead-band elimination.
   *
   * @param leftMotor  The left SpeedController object used to drive the robot.
   * @param rightMotor the right SpeedController object used to drive the robot.
   */
  public RobotDrive(SpeedController leftMotor, SpeedController rightMotor) {
    requireNonNull(leftMotor, "Provided left motor was null");
    requireNonNull(rightMotor, "Provided right motor was null");

    m_frontLeftMotor = null;
    m_rearLeftMotor = leftMotor;
    m_frontRightMotor = null;
    m_rearRightMotor = rightMotor;
    m_sensitivity = kDefaultSensitivity;
    m_maxOutput = kDefaultMaxOutput;
    m_allocatedSpeedControllers = false;
    setupMotorSafety();
    drive(0, 0);
  }

  /**
   * Constructor for RobotDrive with 4 motors specified as SpeedController objects. Speed controller
   * input version of RobotDrive (see previous comments).
   *
   * @param frontLeftMotor  The front left SpeedController object used to drive the robot
   * @param rearLeftMotor   The back left SpeedController object used to drive the robot.
   * @param frontRightMotor The front right SpeedController object used to drive the robot.
   * @param rearRightMotor  The back right SpeedController object used to drive the robot.
   */
  public RobotDrive(SpeedController frontLeftMotor, SpeedController rearLeftMotor,
                    SpeedController frontRightMotor, SpeedController rearRightMotor) {
    m_frontLeftMotor = requireNonNull(frontLeftMotor, "frontLeftMotor cannot be null");
    m_rearLeftMotor = requireNonNull(rearLeftMotor, "rearLeftMotor cannot be null");
    m_frontRightMotor = requireNonNull(frontRightMotor, "frontRightMotor cannot be null");
    m_rearRightMotor = requireNonNull(rearRightMotor, "rearRightMotor cannot be null");
    m_sensitivity = kDefaultSensitivity;
    m_maxOutput = kDefaultMaxOutput;
    m_allocatedSpeedControllers = false;
    setupMotorSafety();
    drive(0, 0);
  }

  /**
   * Drive the motors at "outputMagnitude" and "curve". Both outputMagnitude and curve are -1.0 to
   * +1.0 values, where 0.0 represents stopped and not turning. {@literal curve < 0 will turn left
   * and curve > 0} will turn right.
   *
   *
The algorithm for steering provides a constant turn radius for any normal speed range, both
   * forward and backward. Increasing sensitivity causes sharper turns for fixed values of curve.
   *
   *
This function will most likely be used in an autonomous routine.
   *
   * @param outputMagnitude The speed setting for the outside wheel in a turn, forward or backwards,
   *                        +1 to -1.
   * @param curve           The rate of turn, constant for different forward speeds. Set {@literal
   *                        curve < 0 for left turn or curve > 0 for right turn.} Set curve =
   *                        e^(-r/w) to get a turn radius r for wheelbase w of your robot.
   *                        Conversely, turn radius r = -ln(curve)*w for a given value of curve and
   *                        wheelbase w.
   */
  public void drive(double outputMagnitude, double curve) {
    final double leftOutput;
    final double rightOutput;

    if (!kArcadeRatioCurve_Reported) {
      HAL.report(tResourceType.kResourceType_RobotDrive, getNumMotors(),
          tInstances.kRobotDrive_ArcadeRatioCurve);
      kArcadeRatioCurve_Reported = true;
    }
    if (curve < 0) {
      double value = Math.log(-curve);
      double ratio = (value - m_sensitivity) / (value + m_sensitivity);
      if (ratio == 0) {
        ratio = .0000000001;
      }
      leftOutput = outputMagnitude / ratio;
      rightOutput = outputMagnitude;
    } else if (curve > 0) {
      double value = Math.log(curve);
      double ratio = (value - m_sensitivity) / (value + m_sensitivity);
      if (ratio == 0) {
        ratio = .0000000001;
      }
      leftOutput = outputMagnitude;
      rightOutput = outputMagnitude / ratio;
    } else {
      leftOutput = outputMagnitude;
      rightOutput = outputMagnitude;
    }
    setLeftRightMotorOutputs(leftOutput, rightOutput);
  }

  /**
   * Provide tank steering using the stored robot configuration. drive the robot using two joystick
   * inputs. The Y-axis will be selected from each Joystick object.
   *
   * @param leftStick  The joystick to control the left side of the robot.
   * @param rightStick The joystick to control the right side of the robot.
   */
  public void tankDrive(GenericHID leftStick, GenericHID rightStick) {
    requireNonNull(leftStick, "Provided left stick was null");
    requireNonNull(rightStick, "Provided right stick was null");

    tankDrive(leftStick.getY(), rightStick.getY(), true);
  }

  /**
   * Provide tank steering using the stored robot configuration. drive the robot using two joystick
   * inputs. The Y-axis will be selected from each Joystick object.
   *
   * @param leftStick     The joystick to control the left side of the robot.
   * @param rightStick    The joystick to control the right side of the robot.
   * @param squaredInputs Setting this parameter to true decreases the sensitivity at lower speeds
   */
  public void tankDrive(GenericHID leftStick, GenericHID rightStick, boolean squaredInputs) {
    requireNonNull(leftStick, "Provided left stick was null");
    requireNonNull(rightStick, "Provided right stick was null");

    tankDrive(leftStick.getY(), rightStick.getY(), squaredInputs);
  }

  /**
   * Provide tank steering using the stored robot configuration. This function lets you pick the
   * axis to be used on each Joystick object for the left and right sides of the robot.
   *
   * @param leftStick  The Joystick object to use for the left side of the robot.
   * @param leftAxis   The axis to select on the left side Joystick object.
   * @param rightStick The Joystick object to use for the right side of the robot.
   * @param rightAxis  The axis to select on the right side Joystick object.
   */
  public void tankDrive(GenericHID leftStick, final int leftAxis, GenericHID rightStick,
                        final int rightAxis) {
    requireNonNull(leftStick, "Provided left stick was null");
    requireNonNull(rightStick, "Provided right stick was null");

    tankDrive(leftStick.getRawAxis(leftAxis), rightStick.getRawAxis(rightAxis), true);
  }

  /**
   * Provide tank steering using the stored robot configuration. This function lets you pick the
   * axis to be used on each Joystick object for the left and right sides of the robot.
   *
   * @param leftStick     The Joystick object to use for the left side of the robot.
   * @param leftAxis      The axis to select on the left side Joystick object.
   * @param rightStick    The Joystick object to use for the right side of the robot.
   * @param rightAxis     The axis to select on the right side Joystick object.
   * @param squaredInputs Setting this parameter to true decreases the sensitivity at lower speeds
   */
  public void tankDrive(GenericHID leftStick, final int leftAxis, GenericHID rightStick,
                        final int rightAxis, boolean squaredInputs) {
    requireNonNull(leftStick, "Provided left stick was null");
    requireNonNull(rightStick, "Provided right stick was null");

    tankDrive(leftStick.getRawAxis(leftAxis), rightStick.getRawAxis(rightAxis), squaredInputs);
  }

  /**
   * Provide tank steering using the stored robot configuration. This function lets you directly
   * provide joystick values from any source.
   *
   * @param leftValue     The value of the left stick.
   * @param rightValue    The value of the right stick.
   * @param squaredInputs Setting this parameter to true decreases the sensitivity at lower speeds
   */
  public void tankDrive(double leftValue, double rightValue, boolean squaredInputs) {

    if (!kTank_Reported) {
      HAL.report(tResourceType.kResourceType_RobotDrive, getNumMotors(),
          tInstances.kRobotDrive_Tank);
      kTank_Reported = true;
    }

    leftValue = limit(leftValue);
    rightValue = limit(rightValue);

    // square the inputs (while preserving the sign) to increase fine control
    // while permitting full power
    if (squaredInputs) {
      leftValue = Math.copySign(leftValue * leftValue, leftValue);
      rightValue = Math.copySign(rightValue * rightValue, rightValue);
    }
    setLeftRightMotorOutputs(leftValue, rightValue);
  }

  /**
   * Provide tank steering using the stored robot configuration. This function lets you directly
   * provide joystick values from any source.
   *
   * @param leftValue  The value of the left stick.
   * @param rightValue The value of the right stick.
   */
  public void tankDrive(double leftValue, double rightValue) {
    tankDrive(leftValue, rightValue, true);
  }

  /**
   * Arcade drive implements single stick driving. Given a single Joystick, the class assumes the Y
   * axis for the move value and the X axis for the rotate value. (Should add more information here
   * regarding the way that arcade drive works.)
   *
   * @param stick         The joystick to use for Arcade single-stick driving. The Y-axis will be
   *                      selected for forwards/backwards and the X-axis will be selected for
   *                      rotation rate.
   * @param squaredInputs If true, the sensitivity will be decreased for small values
   */
  public void arcadeDrive(GenericHID stick, boolean squaredInputs) {
    // simply call the full-featured arcadeDrive with the appropriate values
    arcadeDrive(stick.getY(), stick.getX(), squaredInputs);
  }

  /**
   * Arcade drive implements single stick driving. Given a single Joystick, the class assumes the Y
   * axis for the move value and the X axis for the rotate value. (Should add more information here
   * regarding the way that arcade drive works.)
   *
   * @param stick The joystick to use for Arcade single-stick driving. The Y-axis will be selected
   *              for forwards/backwards and the X-axis will be selected for rotation rate.
   */
  public void arcadeDrive(GenericHID stick) {
    arcadeDrive(stick, true);
  }

  /**
   * Arcade drive implements single stick driving. Given two joystick instances and two axis,
   * compute the values to send to either two or four motors.
   *
   * @param moveStick     The Joystick object that represents the forward/backward direction
   * @param moveAxis      The axis on the moveStick object to use for forwards/backwards (typically
   *                      Y_AXIS)
   * @param rotateStick   The Joystick object that represents the rotation value
   * @param rotateAxis    The axis on the rotation object to use for the rotate right/left
   *                      (typically X_AXIS)
   * @param squaredInputs Setting this parameter to true decreases the sensitivity at lower speeds
   */
  public void arcadeDrive(GenericHID moveStick, final int moveAxis, GenericHID rotateStick,
                          final int rotateAxis, boolean squaredInputs) {
    double moveValue = moveStick.getRawAxis(moveAxis);
    double rotateValue = rotateStick.getRawAxis(rotateAxis);

    arcadeDrive(moveValue, rotateValue, squaredInputs);
  }

  /**
   * Arcade drive implements single stick driving. Given two joystick instances and two axis,
   * compute the values to send to either two or four motors.
   *
   * @param moveStick   The Joystick object that represents the forward/backward direction
   * @param moveAxis    The axis on the moveStick object to use for forwards/backwards (typically
   *                    Y_AXIS)
   * @param rotateStick The Joystick object that represents the rotation value
   * @param rotateAxis  The axis on the rotation object to use for the rotate right/left (typically
   *                    X_AXIS)
   */
  public void arcadeDrive(GenericHID moveStick, final int moveAxis, GenericHID rotateStick,
                          final int rotateAxis) {
    arcadeDrive(moveStick, moveAxis, rotateStick, rotateAxis, true);
  }

  /**
   * Arcade drive implements single stick driving. This function lets you directly provide
   * joystick values from any source.
   *
   * @param moveValue     The value to use for forwards/backwards
   * @param rotateValue   The value to use for the rotate right/left
   * @param squaredInputs If set, decreases the sensitivity at low speeds
   */
  public void arcadeDrive(double moveValue, double rotateValue, boolean squaredInputs) {
    // local variables to hold the computed PWM values for the motors
    if (!kArcadeStandard_Reported) {
      HAL.report(tResourceType.kResourceType_RobotDrive, getNumMotors(),
          tInstances.kRobotDrive_ArcadeStandard);
      kArcadeStandard_Reported = true;
    }

    double leftMotorSpeed;
    double rightMotorSpeed;

    moveValue = limit(moveValue);
    rotateValue = limit(rotateValue);

    // square the inputs (while preserving the sign) to increase fine control
    // while permitting full power
    if (squaredInputs) {
      // square the inputs (while preserving the sign) to increase fine control
      // while permitting full power
      moveValue = Math.copySign(moveValue * moveValue, moveValue);
      rotateValue = Math.copySign(rotateValue * rotateValue, rotateValue);
    }

    if (moveValue > 0.0) {
      if (rotateValue > 0.0) {
        leftMotorSpeed = moveValue - rotateValue;
        rightMotorSpeed = Math.max(moveValue, rotateValue);
      } else {
        leftMotorSpeed = Math.max(moveValue, -rotateValue);
        rightMotorSpeed = moveValue + rotateValue;
      }
    } else {
      if (rotateValue > 0.0) {
        leftMotorSpeed = -Math.max(-moveValue, rotateValue);
        rightMotorSpeed = moveValue + rotateValue;
      } else {
        leftMotorSpeed = moveValue - rotateValue;
        rightMotorSpeed = -Math.max(-moveValue, -rotateValue);
      }
    }

    setLeftRightMotorOutputs(leftMotorSpeed, rightMotorSpeed);
  }

  /**
   * Arcade drive implements single stick driving. This function lets you directly provide
   * joystick values from any source.
   *
   * @param moveValue   The value to use for fowards/backwards
   * @param rotateValue The value to use for the rotate right/left
   */
  public void arcadeDrive(double moveValue, double rotateValue) {
    arcadeDrive(moveValue, rotateValue, true);
  }

  /**
   * Drive method for Mecanum wheeled robots.
   *
   *
A method for driving with Mecanum wheeled robots. There are 4 wheels on the robot, arranged
   * so that the front and back wheels are toed in 45 degrees. When looking at the wheels from the
   * top, the roller axles should form an X across the robot.
   *
   *
This is designed to be directly driven by joystick axes.
   *
   * @param x         The speed that the robot should drive in the X direction. [-1.0..1.0]
   * @param y         The speed that the robot should drive in the Y direction. This input is
   *                  inverted to match the forward == -1.0 that joysticks produce. [-1.0..1.0]
   * @param rotation  The rate of rotation for the robot that is completely independent of the
   *                  translation. [-1.0..1.0]
   * @param gyroAngle The current angle reading from the gyro. Use this to implement field-oriented
   *                  controls.
   */
  @SuppressWarnings("ParameterName")
  public void mecanumDrive_Cartesian(double x, double y, double rotation, double gyroAngle) {
    if (!kMecanumCartesian_Reported) {
      HAL.report(tResourceType.kResourceType_RobotDrive, getNumMotors(),
          tInstances.kRobotDrive_MecanumCartesian);
      kMecanumCartesian_Reported = true;
    }
    @SuppressWarnings("LocalVariableName")
    double xIn = x;
    @SuppressWarnings("LocalVariableName")
    double yIn = y;
    // Negate y for the joystick.
    yIn = -yIn;
    // Compenstate for gyro angle.
    double[] rotated = rotateVector(xIn, yIn, gyroAngle);
    xIn = rotated[0];
    yIn = rotated[1];

    double[] wheelSpeeds = new double[kMaxNumberOfMotors];
    wheelSpeeds[MotorType.kFrontLeft.value] = xIn + yIn + rotation;
    wheelSpeeds[MotorType.kFrontRight.value] = -xIn + yIn - rotation;
    wheelSpeeds[MotorType.kRearLeft.value] = -xIn + yIn + rotation;
    wheelSpeeds[MotorType.kRearRight.value] = xIn + yIn - rotation;

    normalize(wheelSpeeds);
    m_frontLeftMotor.set(wheelSpeeds[MotorType.kFrontLeft.value] * m_maxOutput);
    m_frontRightMotor.set(wheelSpeeds[MotorType.kFrontRight.value] * m_maxOutput);
    m_rearLeftMotor.set(wheelSpeeds[MotorType.kRearLeft.value] * m_maxOutput);
    m_rearRightMotor.set(wheelSpeeds[MotorType.kRearRight.value] * m_maxOutput);

    if (m_safetyHelper != null) {
      m_safetyHelper.feed();
    }
  }

  /**
   * Drive method for Mecanum wheeled robots.
   *
   *
A method for driving with Mecanum wheeled robots. There are 4 wheels on the robot, arranged
   * so that the front and back wheels are toed in 45 degrees. When looking at the wheels from the
   * top, the roller axles should form an X across the robot.
   *
   * @param magnitude The speed that the robot should drive in a given direction.
   * @param direction The direction the robot should drive in degrees. The direction and maginitute
   *                  are independent of the rotation rate.
   * @param rotation  The rate of rotation for the robot that is completely independent of the
   *                  magnitute or direction. [-1.0..1.0]
   */
  public void mecanumDrive_Polar(double magnitude, double direction, double rotation) {
    if (!kMecanumPolar_Reported) {
      HAL.report(tResourceType.kResourceType_RobotDrive, getNumMotors(),
          tInstances.kRobotDrive_MecanumPolar);
      kMecanumPolar_Reported = true;
    }
    // Normalized for full power along the Cartesian axes.
    magnitude = limit(magnitude) * Math.sqrt(2.0);
    // The rollers are at 45 degree angles.
    double dirInRad = (direction + 45.0) * 3.14159 / 180.0;
    double cosD = Math.cos(dirInRad);
    double sinD = Math.sin(dirInRad);

    double[] wheelSpeeds = new double[kMaxNumberOfMotors];
    wheelSpeeds[MotorType.kFrontLeft.value] = sinD * magnitude + rotation;
    wheelSpeeds[MotorType.kFrontRight.value] = cosD * magnitude - rotation;
    wheelSpeeds[MotorType.kRearLeft.value] = cosD * magnitude + rotation;
    wheelSpeeds[MotorType.kRearRight.value] = sinD * magnitude - rotation;

    normalize(wheelSpeeds);

    m_frontLeftMotor.set(wheelSpeeds[MotorType.kFrontLeft.value] * m_maxOutput);
    m_frontRightMotor.set(wheelSpeeds[MotorType.kFrontRight.value] * m_maxOutput);
    m_rearLeftMotor.set(wheelSpeeds[MotorType.kRearLeft.value] * m_maxOutput);
    m_rearRightMotor.set(wheelSpeeds[MotorType.kRearRight.value] * m_maxOutput);

    if (m_safetyHelper != null) {
      m_safetyHelper.feed();
    }
  }

  /**
   * Holonomic Drive method for Mecanum wheeled robots.
   *
   *
This is an alias to mecanumDrive_Polar() for backward compatability
   *
   * @param magnitude The speed that the robot should drive in a given direction. [-1.0..1.0]
   * @param direction The direction the robot should drive. The direction and maginitute are
   *                  independent of the rotation rate.
   * @param rotation  The rate of rotation for the robot that is completely independent of the
   *                  magnitute or direction. [-1.0..1.0]
   */
  void holonomicDrive(double magnitude, double direction, double rotation) {
    mecanumDrive_Polar(magnitude, direction, rotation);
  }

  /**
   * Set the speed of the right and left motors. This is used once an appropriate drive setup
   * function is called such as twoWheelDrive(). The motors are set to "leftSpeed" and
   * "rightSpeed" and includes flipping the direction of one side for opposing motors.
   *
   * @param leftOutput  The speed to send to the left side of the robot.
   * @param rightOutput The speed to send to the right side of the robot.
   */
  public void setLeftRightMotorOutputs(double leftOutput, double rightOutput) {
    requireNonNull(m_rearLeftMotor, "Provided left motor was null");
    requireNonNull(m_rearRightMotor, "Provided right motor was null");

    if (m_frontLeftMotor != null) {
      m_frontLeftMotor.set(limit(leftOutput) * m_maxOutput);
    }
    m_rearLeftMotor.set(limit(leftOutput) * m_maxOutput);

    if (m_frontRightMotor != null) {
      m_frontRightMotor.set(-limit(rightOutput) * m_maxOutput);
    }
    m_rearRightMotor.set(-limit(rightOutput) * m_maxOutput);

    if (m_safetyHelper != null) {
      m_safetyHelper.feed();
    }
  }

  /**
   * Limit motor values to the -1.0 to +1.0 range.
   */
  protected static double limit(double number) {
    if (number > 1.0) {
      return 1.0;
    }
    if (number < -1.0) {
      return -1.0;
    }
    return number;
  }

  /**
   * Normalize all wheel speeds if the magnitude of any wheel is greater than 1.0.
   */
  protected static void normalize(double[] wheelSpeeds) {
    double maxMagnitude = Math.abs(wheelSpeeds[0]);
    for (int i = 1; i < kMaxNumberOfMotors; i++) {
      double temp = Math.abs(wheelSpeeds[i]);
      if (maxMagnitude < temp) {
        maxMagnitude = temp;
      }
    }
    if (maxMagnitude > 1.0) {
      for (int i = 0; i < kMaxNumberOfMotors; i++) {
        wheelSpeeds[i] = wheelSpeeds[i] / maxMagnitude;
      }
    }
  }

  /**
   * Rotate a vector in Cartesian space.
   */
  @SuppressWarnings("ParameterName")
  protected static double[] rotateVector(double x, double y, double angle) {
    double cosA = Math.cos(angle * (3.14159 / 180.0));
    double sinA = Math.sin(angle * (3.14159 / 180.0));
    double[] out = new double[2];
    out[0] = x * cosA - y * sinA;
    out[1] = x * sinA + y * cosA;
    return out;
  }

  /**
   * Invert a motor direction. This is used when a motor should run in the opposite direction as the
   * drive code would normally run it. Motors that are direct drive would be inverted, the drive
   * code assumes that the motors are geared with one reversal.
   *
   * @param motor      The motor index to invert.
   * @param isInverted True if the motor should be inverted when operated.
   */
  public void setInvertedMotor(MotorType motor, boolean isInverted) {
    switch (motor) {
      case kFrontLeft:
        m_frontLeftMotor.setInverted(isInverted);
        break;
      case kFrontRight:
        m_frontRightMotor.setInverted(isInverted);
        break;
      case kRearLeft:
        m_rearLeftMotor.setInverted(isInverted);
        break;
      case kRearRight:
        m_rearRightMotor.setInverted(isInverted);
        break;
      default:
        throw new IllegalArgumentException("Illegal motor type: " + motor);
    }
  }

  /**
   * Set the turning sensitivity.
   *
   *
This only impacts the drive() entry-point.
   *
   * @param sensitivity Effectively sets the turning sensitivity (or turn radius for a given value)
   */
  public void setSensitivity(double sensitivity) {
    m_sensitivity = sensitivity;
  }

  /**
   * Configure the scaling factor for using RobotDrive with motor controllers in a mode other than
   * PercentVbus.
   *
   * @param maxOutput Multiplied with the output percentage computed by the drive functions.
   */
  public void setMaxOutput(double maxOutput) {
    m_maxOutput = maxOutput;
  }

  /**
   * Free the speed controllers if they were allocated locally.
   */
  public void free() {
    if (m_allocatedSpeedControllers) {
      if (m_frontLeftMotor != null) {
        ((PWM) m_frontLeftMotor).free();
      }
      if (m_frontRightMotor != null) {
        ((PWM) m_frontRightMotor).free();
      }
      if (m_rearLeftMotor != null) {
        ((PWM) m_rearLeftMotor).free();
      }
      if (m_rearRightMotor != null) {
        ((PWM) m_rearRightMotor).free();
      }
    }
  }

  @Override
  public void setExpiration(double timeout) {
    m_safetyHelper.setExpiration(timeout);
  }

  @Override
  public double getExpiration() {
    return m_safetyHelper.getExpiration();
  }

  @Override
  public boolean isAlive() {
    return m_safetyHelper.isAlive();
  }

  @Override
  public boolean isSafetyEnabled() {
    return m_safetyHelper.isSafetyEnabled();
  }

  @Override
  public void setSafetyEnabled(boolean enabled) {
    m_safetyHelper.setSafetyEnabled(enabled);
  }

  @Override
  public String getDescription() {
    return "Robot Drive";
  }

  @Override
  public void stopMotor() {
    if (m_frontLeftMotor != null) {
      m_frontLeftMotor.stopMotor();
    }
    if (m_frontRightMotor != null) {
      m_frontRightMotor.stopMotor();
    }
    if (m_rearLeftMotor != null) {
      m_rearLeftMotor.stopMotor();
    }
    if (m_rearRightMotor != null) {
      m_rearRightMotor.stopMotor();
    }
    if (m_safetyHelper != null) {
      m_safetyHelper.feed();
    }
  }

  private void setupMotorSafety() {
    m_safetyHelper = new MotorSafetyHelper(this);
    m_safetyHelper.setExpiration(kDefaultExpirationTime);
    m_safetyHelper.setSafetyEnabled(true);
  }

  protected int getNumMotors() {
    int motors = 0;
    if (m_frontLeftMotor != null) {
      motors++;
    }
    if (m_frontRightMotor != null) {
      motors++;
    }
    if (m_rearLeftMotor != null) {
      motors++;
    }
    if (m_rearRightMotor != null) {
      motors++;
    }
    return motors;
  }
}

redpajama_set_name: RedPajamaGithub


Important - The new "Special Handling Charges" will become effective on Janurary 1, 2018 with no Changes in 2019.
Important - There will be no changes to "Ancillary Charges" in 2019.
Effective Feb. 25, 2013 for shipments that are not stackable, an Additional Handling Surcharge will apply. For FedEx Express export freight services, the surcharge will be $175 per shipment. For more information on preparing and palletizing LTL freight, access our comprehensive guidelines for shipping freight online at fedex.com/packagingfreight.


Cooking Light's Whole Grain Challenge: Recipe 2 - Shrimp Quinoa | The Food Hussy!
As part of my April challenge from Cooking Light, I'm eating whole grains! The next whole grain up for me was quinoa. It's a little grain that puffs up and tastes similar to rice.
I found a recipe for Shrimp Quinoa that seemed like it could mask the quinoa with lots of good stuff - just in case I thought it was gross. That's sort of my plan for every recipe - mask it and hope for the best.
Lots of sauteeing...such pretty colors!
You cook the quinoa much like rice - I used chicken broth to add some extra flavor to it. I cooked it a little longer than the recipe called for - I just wanted to make sure it was soft and not crunchy or anything. It was a little sticky by that point so keep an eye on it.
I threw the shrimp in at the last minute (I did use frozen shrimp for convenience).
And how was it? REALLY GREAT! Even Larry - who doesn't like new things and doesn't really like vegetables - cleaned his plate! I was a bit hesitant about the quinoa so I served the sautee mixture on top of the quinoa but it was tasty as well. The lemon juice was a nice add and I put a bit extra in.
I LOVE quinoa - it's so easy to fix and so healthy. Well done girl!


From Prospect Park to 2nd Avenue, this stretch of South Slope is as good as it gets. Setps from the park, the Pavillion Theater to the east, and to the south a new Beer Hall just opened up. In between, you'll find a grade school (public) all kinds of shops and restaurants on 7th Ave. Close to 5th Ave, there are new (trendy) places but also life-savind discount shops - but is seems like this is getting gentrified more and more every day. No complaints, though. Tree-lined streets, the park. Subways near by. It's perfect.


text:
Bitcoin & Ehtereum Investment Flows, FTSE Goes Crypto, Tom Brady's NFTs + More News
in Bitcoin, Business, Ethereum, NFT
Source: Adobe/skywalker_ll
Get your daily, bite-sized digest of cryptoasset and blockchain-related news – investigating the stories flying under the radar of today's crypto news.
According to CoinShares data, digital asset investment products witnessed inflows totaling USD 184 million last week. Bitcoin (BTC) received inflows of USD 145 million last week (down from USD 247 million a week earlier), though it experienced withdrawals of USD 42 million on Friday and bore the weight of market worries, the business said. Ethereum (ETH) received USD 25 million in inflows (USD 2 million more than a week ago), but, like BTC, received USD 4.7 million in outflows last Friday.
MTD – month-to-date; YTD – year-to-date; AUM – assets under management. Source: CoinShares
The company that publishes the FTSE 100, the primary barometer of the UK stock market's performance, is set to launch a crypto index that will "sit alongside" the benchmark equities, CITY A.M. reported, citing Kristen Mierzwa, the head of ETF strategy and business development at FTSE Russell, a London Stock Exchange subsidiary that publishes global market indices.
As expected, the Chicago Mercantile Exchange Group today released Micro Ether futures (MET) with a 1/10th of an ethereum contract size.
According to TechCrunch, a number of investors, including Sequoia Capital India and Steadview Capital, are in talks to invest in Polygon (MATIC) via token acquisition. According to their unnamed sources, the investors are interested in purchasing tokens worth between USD 50 million and USD 150 million.
According to TechCrunch, Stacked, a web-based platform that provides passive investment options for retail investors interested in cryptocurrency, has raised a USD 35 million Series A round led by Alameda Research and Mirana Ventures.
The cash will be used to double the company's 40-person workforce within six to eight months and to spend in user acquisition, expansion, and marketing.
Ault Global Holdings, a multinational holding company based in the United States, announced that its subsidiary BitNile was the lead investor in Earnity Inc.'s Series A USD 15 million financing. Earnity is a California-based DeFi marketplace. Institutional investors Thorney, an ASX-listed LIC firm, and blockchain fund NGC Ventures have joined the round.
Exchanges news
Norwegian Block Exchange (NBX) said it has applied for listing on the Euronext Growth exchange and plans to become the first publicly listed crypto exchange in the Nordics. NBX also said it intends to obtain a license as an e-money institution.
Binance is reviving plans for a UK launch by applying for an Financial Conduct Authority (FCA) licence, having hired an army of compliance officers and former employees of the City watchdog, the Telegraph reported. The exchange's CEO Changpeng Zhao was quoted as saying that relations with the regulator had improved since Binance was censured this summer by the FCA.
Singapore's financial regulator has suspended Bitget, possibly for promoting the digital currency Army Coin, which is named after the followers of South Korean band BTS, The Guardian reported. Bitget has removed the Monetary Authority of Singapore's logo from its website, but it still claims to have licenses from Australia, Canada, and the United States.
Indian bank Kotak Bank decided to let crypto exchange WazirX open an account with them following almost eight months of payment freeze by most high-street banks that continue to shun crypto investors and bourses, Economic Times reported. However, the account has yet to become operational, and paperwork and know-your-customer (KYC) procedures are still going on.
FTX released the "key principles" for regulating crypto exchanges, which will be part of CEO's Sam Bankman-Fried's written commentary to accompany his in-person testimony to the House Committee on Financial Services during its hearing on Wednesday, December 8th, 2021. They stated that the set of 10 principles details a regulatory environment that, if enacted, will allow policymakers to effectively regulate the digital asset ecosystem while maximizing the potential growth and innovation.
Tom Brady, an American football quarterback for the Tampa Bay Buccaneers of the National Football League, is launching a set of his new non-fungible tokens (NFTs), Tom Brady Origins Collection, on his Autograph NFT platform that highlights a resume he had created prior to his 2000 draft selection and includes a stopwatch, cleats, and jersey used at the NFL combine, among other items.
Adoption news
Cold-brew coffee company Oaza Beverages announced that they will start accepting cryptocurrency as a form of payment via payments provider BitPay. The company added that they will "confidently hold" BTC and ETH on their balance sheet.
The UK Financial Conduct Authority said in a discussion paper that particularly high risk or alternative investments, such as cryptoassets and unlisted securities, could in certain circumstances be excluded from the Financial Services Compensation Scheme, which protects investors when companies fail. The FSCS protects as much as GBP 85,000 (USD 112,700) per customer if a firm goes down.
CBDCs news
Zimbabwe's central bank is exploring the use of a digital currency rather than allowing cryptocurrencies as legal tender and plans to send a team to Nigeria to learn from their experiences in launching the first digital currency in Africa in October, Bloomberg reported, citing the nation's central bank Governor John Mangudya.
Tech veteran Brian Roberts is joining NFT marketplace OpenSea as its first chief financial officer (CFO), Bloomberg reported. Roberts was previously the CFO of ridesharing company Lyft for seven years.
Tags: asset investment productsBinanceBitcoinBitgetBlockchainChangpeng ZhaoCity A.M.DeFidigital assetdigital currencye-moneyETFEther Futuresfinancial servicesHouse Committee on Financial ServicesKYCNFLNFTNFTsretail investorsSam Bankman-FriedTechCrunch
Ethereum 'about to go parabolic' against Bitcoin as analysts weigh BTC bear case
Shiba Inu: The Rapidly Increasing Adoption of $SHIB in Venezuela
coinnewsdaily
CoinNewsDaily.com is an online Crypto Coin News Website that aims to provide latest trendy news from market and around the world.


Utility business processes are now dependent on timely meter data, and AMI systems must achieve and maintain high data collection success rates. However, maintaining such rates across millions of endpoints deployed in a dynamic and harsh field environment poses new and difficult challenges to AMI operations teams. OpenWay Operations Center Performance Manager and Action Manager provide the tools and framework to ensure smooth OpenWay system operations and deliver the functional capabilities needed to more efficiently manage and operate your AMI system at scale.
Performance Manager will help you realize operational savings, reduce unnecessary truck rolls, quickly identify AMI faults, intelligently prioritize issues, analyze trends in network & operational data, manage business SLAs and understand the state of your system. Action Manager will help you understand and distribute the workload, automate workflows, apply corrective actions, facilitate network mitigation and track operator productivity.
This webcast, presented by Tim Bognar and Doug Sorensen, Senior Product Managers at Itron, provides an overview and live demonstration of both Performance Manager and Action Manager in terms of value proposition, features, delivery models and how they work together to deliver the most value to you.
To download the webcast slides and recording, please complete and submit this form.


'Free + quality' with your camera phone sounds good, but what about really high-end 3-D?
Every so often, new technology comes along that improves the way we do things, and unless you've been living under a rock, you probably noticed Instagram recently introduced Hyperlapse, a free smartphone app that is going to be a game changer for real estate professionals who use audiovisual tools to market their listings.
Agents are typically at the mercy of expensive professional videographers hauling thousands of dollars' worth of equipment if they want a truly professional video tour of their listing. How quickly things are changing with the release of Hyperlapse, which greatly increases the quality of phone-based video technology; enables any smartphone-equipped agent to walk through the property they're listing; and produces a smooth and professional-looking walk-through video, regardless of experience. It leaves a lot of room for error (by smoothing out the shakiness), and even my 7-year-old niece could use it and still come out looking like Stephanie Spielberg.
What's the secret sauce? Built in image stabilization technology. So, while an ordinary video captured on a smartphone or tablet might be shaky and jittery, Hyperlapse technology helps create a smooth, cinematic feel, rivaling video shot with expensive Steadicams or Glidecams, which usually require an experienced (and pricey) operator. The result is a much more professional-looking video that can be shared not only on places like Instagram, YouTube and Facebook, but also on an agent's website.
In addition to saving time and money, the Hyperlapse app enables the agent to control the speed of the time-lapse feature and give viewers a sense of the home's floor plan and how all the rooms connect, in relation to the property photographs usually found on the listing detail page. It also allows the agent to quickly and efficiently focus on the flow of the listing's surrounding yard, neighborhood and community, without the need to do hours' worth of editing afterwards of all the separate shots obtained.
Typically, walk-through videos drag on and on with no end in site, and subsequently suffer from early viewer "abandonment." The beauty of the Hyperlapse app is that it takes a lengthy and boring walk-through video that would typically rival "Gone With the Wind" and turns it into a condensed 60-second version of the same content that even my attention deficit disorder self would have the attention span to comprehend.
"Free + quality" with your camera phone sounds good, but what about really high-end 3-D? Another virtual tour technology provider, Matterport, sells a sophisticated $4,500 camera and technology that lets buyers move through a listing at their own pace and view the property features or rooms in any order/angle, including a "dollhouse" cutaway view. I had the opportunity to speak on a panel with their team at Real Estate Connect in San Francisco this summer, and was very impressed by their technology and where they were going with it.
Hiring a professional videographer, using a free smartphone app or investing in a high-end 3-D camera are three distinctively different roads to take. When deciding which "property walk-through" video resource is right for you, always remember to consider your time, budget and ease of use.


text:
Randall E. Woods
Business Advisor
Randall E. Woods is a serial life science entrepreneur, pharmaceutical and biotechnology executive. Mr. Woods brings more than 40 years of experience to the biotech/pharmaceutical arena, and currently serves as the CEO of Sophiris Bio (NASDAQ: SPHS).
Randall E. Woods is a serial life science entrepreneur, pharmaceutical and biotechnology executive. Mr. Woods brings more than 40 years of experience to the biotech/pharmaceutical arena, and currently serves as the Chief Executive Officer of Sophiris Bio, a publicly traded biotechnology company on the NASDAQ (SPHS) focused on the development of urological drugs. He also served as President and CEO at NovaCardia, Inc. prior to its acquisition by Merck & Co., and nearly eight years as the Chief Executive Officer of Corvas International, Inc., a publicly traded biopharmaceutical company focused on cardiovascular disease and cancer, acquired by Dendreon. Prior to Corvas, Mr. Woods was President of Boehringer Mannheim's US Pharmaceutical operations and spent over 20 years at Eli Lilly & Company in sales and marketing positions. Mr. Woods served as the Chairman for the Advisory Board of the University of California, San Diego's Sulpizio Family Cardiovascular Center and has been the Chairman of the Board of Directors for BIOCOM, a life science industry association in Southern California. He also serves on the Board of Arena Pharmaceuticals. Mr. Woods has a Bachelor's Degree in Biology and Chemistry and a Master's Degree in Marketing.


Working hard on behalf of clients to provide unparalleled guidance to Business Owners and Buyers in order to ensure a professional experience.
Hello, my name is James Benincasa, a licensed Business Broker in the state of Minnesota with a Certified Business Intermediary (CBI), a prestigious designation exclusive to the International Business Brokers Association (IBBA), that identifies an experienced and dedicated business broker who is committed to the highest level of professional development the industry has to offer and which requires specialized detailed training. A CBI has the ability to objectively guide clients through the intricacies of the entire marketing and negotiation process of a business sale, resulting in successful transactions and satisfied clients.
I am also an Accredited Business Intermediary (ABI), and hold a Graduate Realtor Institute (GRI) designation. I am a Senior Valuation Analyst representing Calhoun Companies, one of the leading business brokerage firms in the Upper Midwest.
With over 25 years of experience and knowledge as a licensed broker, you will find the expertise you deserve in assisting both buyers and sellers in whatever area of commercial real estate or brokerage services you seek solutions.