text:
Three Locations:
Seward Park
Buy Apparel
LFP Kids' Book Clubs
Seward Park Kids' Book Club
Seward Park Teen Book Club
Author Event Booking
Music Event Booking
The A List (Ali Reynolds Series) (CD-Audio)
By J.A. Jance, Karen Ziemba (Read by)
Unavailable at this time.
#2: Web of Evil: A Novel of Suspense (Ali Reynolds Series #2) (Mass Market): $9.99
#3: Hand of Evil (Ali Reynolds Series #3) (Mass Market): $9.99
#4: Cruel Intent (Ali Reynolds Series #4) (Mass Market): $9.99
#5: Trial by Fire: A Novel of Suspense (Ali Reynolds Series #5) (Mass Market): $7.99
#6: Fatal Error: An Ali Reynolds Mystery (Ali Reynolds Series #6) (Mass Market): $9.99
#7: Left for Dead: A Novel (Ali Reynolds Series #7) (Mass Market): $9.99
#8: Deadly Stakes: A Novel (Ali Reynolds Series #8) (Mass Market): $9.99
#9: Moving Target: A Novel (Ali Reynolds Series #9) (Hardcover): Unavailable at this time.
#10: Cold Betrayal: An Ali Reynolds Novel (Ali Reynolds Series #10) (Hardcover): Unavailable at this time.
#11: Clawback: An Ali Reynolds Novel (Ali Reynolds Series #11) (Hardcover): $25.99
#12: Man Overboard: An Ali Reynolds Novel (Ali Reynolds Series #12) (Mass Market): $9.99
#13: Duel to the Death (Ali Reynolds Series #13) (Mass Market): $9.99
#14: The A List (Ali Reynolds Series #14) (Hardcover): $27.99
#15: Credible Threat (Ali Reynolds Series #15) (Hardcover): $27.99
In this timely "devilish page-turner" (People) from New York Times bestselling author J.A. Jance, Ali Reynolds learns that no good deed goes unpunished.
More than ten years after the sudden end of her high-profile broadcasting career, Ali Reynolds has made a good life for herself in her hometown of Sedona, Arizona. She has a new house, a new husband, and a flourishing cybersecurity company where her team of veritable technological wizards hunts down criminals one case at a time.
But the death of an old friend brings Ali back to the last story she ever reported: a feel-good human interest piece about a young man in need of a kidney to save his life, which quickly spiraled into a medical mismanagement scandal that landed a prestigious local doctor in prison for murder.
Years may have passed, but Dr. Edward Gilchrist has not forgotten those responsible for his downfall—especially not Ali Reynolds, who exposed his dirty deeds to the world. Life without parole won't stop him from getting his revenge. Tattooed on his arm are the initials of those who put him behind bars, and he won't stop until every person on that Annihilation List is dead.
In this gripping suspense novel from "one of the finest practitioners of the suspenseful thriller" (The Strand Magazine), Ali Reynolds and her team race against the clock to stop this ruthless killer—before her own name is crossed out for good.
J.A. Jance is the New York Times bestselling author of the Ali Reynolds series, the J.P. Beaumont series, and the Joanna Brady series, as well as five interrelated Southwestern thrillers featuring the Walker family. Born in South Dakota and brought up in Bisbee, Arizona, Jance lives with her husband in Seattle, Washington, and Tucson, Arizona. Visit her online at JAJance.com.
Publication Date: April 2nd, 2019
Series: Ali Reynolds Series
Fiction / Thrillers
Fiction / Mystery & Detective
Fiction / Mystery & Detective / Women Sleuths
Kobo eBook (April 1st, 2019): $9.99
Hardcover (April 2nd, 2019): $27.99
Mass Market (January 28th, 2020): $9.99
Library Binding, Large Print (April 24th, 2019): $37.99
Privacy & Returns Policies


Trekking in Nepal is always a much desired adventurous activity for any adventure seeker. Getting out of the cozy comforts and beginning this adventure has many anxiety and queries hovering around in the mind of beginners. If you are a beginner who seeks a trekking adventure in Nepal, you must be wandering around number of websites for getting information. A pro knows it better about the various aspects you need to consider about trekking in Nepal, but if you're a beginner and coming for trekking in Nepal for the first time, you'll need some guidance.
Here we bring to you some of the very important information on what trekking for beginners in Nepal in all about. This shall definitely be of help regarding trekking for beginners in Nepal.
This is the basic thing to look for with regards to trekking for beginners in Nepal. If you are a person who goes for some form of exercise regularly, you should have fewer problems during your trekking. Have a full body check up before you begin your treks to avoid developing serious conditions later. You need to walk for about 4 to 5 hours up and down on hills, with some steep ups and downs sometimes. So it is recommended for you to begin your preparations with short hiking trips. Begin exercising 3 to 6 months prior to your trek in Nepal. This shall increase your endurance level and maintain your fitness as well.
Nature of treks to choose: Tea house trek or camping?
You need to choose this as per your fitness level and whether you think you are comfortable with. The popular treks such as Annapurna and Everest Base Camp treks can be done completely as a teahouse treks. Here you have locally owned and operated lodges for food, accommodation and security during your stay there. For beginners who intend to trek in Nepal, it is advised that you take the teahouse trek. But if you intend to go for camping, ask your trekking agency to organize such treks where support teams will take care of most of logistics and tasks.
Before you head straight to Nepal, try to get as much information about Nepal; its geography, culture and traditions, history and other information. This will help you overcome cultural shock. Though you will have guide books for guidance purpose, learning about local culture, few basic words of local language will break ice for you in dealing with locals. Be comfortable with this Himalayan nation you are going to visit and enjoy the trek. Let few things surprise you as well.
If you are trekking to higher altitudes, the information on altitude sickness can be sometimes life saving! Altitude sickness is basically the physiological impact you will have due to high altitude and thereby dropped oxygen level. If the symptoms aren't detected on time, this may develop severe conditions and therefore may be life threatening. The basic tip for this disease is to go slow during your trek and acclimatize properly. Follow the itinerary set by your trekking company and have communication with trekking guides on any uneasiness you may be feeling.
As a beginner trekking in Nepal, you are advised to go for short treks before you head on for longer and more strenuous treks. Short treks provide you enough experience about the local conditions, culture, terrains and the actual feel of walking in the rough terrains of Nepal. This experience shall prepare you for the longer and more strenuous trekking adventures that you shall be embarking upon later.
When you are trekking in the hills and mountains of Nepal, you shall be dehydrated quickly and this may cause problem for you. Drink lots of water and fluid during your treks in Nepal otherwise you'll have headaches and make you more susceptible to altitude sickness. The other thing is that you must avoid any sort of injury. Any injury, small or big shall cause a lot of pain for you while trekking. Keep an easy pace and watch your steps as some trails are bit tricky for you.
We hope that this information is helpful for you to inch closer to your dream of going for trekking in Nepal. Keep yourself conformed to the basics of trekking and watch the grandeur of Himalayas during your treks in Nepal.


text:
The 6 Best Instagrams From Vanity Fair's Oscars Party
February 29, 2016 11:11 AM EST
When the stars were not chowing down on catered In-N-Out burgers at Vanity Fair's annual Oscars party Sunday night, they were getting their pictures taken by the renowned photographer Mark Seliger—though not with greasy burgers in hand. It was Seliger's third time setting up an instant portrait studio at the festivities. Below is a glimpse at some of his stunning photographs from the evening, featuring pop stars like Lady Gaga, Taylor Swift, Lorde and Justin Timberlake. And in terms of comedians, see shots of The Late Late Show host James Corden and one magnificent group photo of Larry David, Judd Apatow, Martin Short, Bill Maher, David Steinberg and Eugene Levy.
Oscars 2016: See Celebrities Walk the Red Carpet
A 360-view of the photo sessions—featuring outtakes like Mad Men's Jon Hamm hamming it up for the camera—can also be seen on the publication's Facebook page as well.
What to Know About the #FreeBritney Movement
TIME's Best Photojournalism of 2020

redpajama_set_name: RedPajamaCommonCrawl


text:
Charles G. Michaud II, obituary
Charles G. Michaud II.
SEARSPORT — Charles G. Michaud II, 58, of Searsport, passed away on January 5, 2021 in Belfast. After years of health issues and surrounded by the three women who loved him most in this world, Charliy moved on to a better place.
Charliy was born on February 20, 1960 in Bridgeport, Connecticut, to the late Charles G. Michaud and Odessia Virginia Meadows. He was a 1980 graduate of Lee Academy and a graduated from job corps.
Charliy ventured to Rockwood to make a new life for himself. He worked for the Birches but more importantly, Rockwood held another treasure. It as there that he met and fell in love with his rock, his life partner, Peggy, who he has shared a beautiful life with.
Charliy was known as a jack of all trades and was a hard worker. He started his own small business, Mainely Tie Dye, which he eventually sold. Nothing in this life came easily to Charliy but he continued on with cheery optimism. He loved to help others and so he spear headed a fund raising drive for a local food bank. Charliy was a storyteller and those who were fortunate enough to listen to one of his stories will forever carry that beautiful memory.
He settled in Searsport after his health forced an early retirement. Upon his death, he had been 28 years sober. He was a great cook and thoroughly enjoyed cooking with his niece these last six months.
Charliy leaves behind his beloved wife, Peggy Mooers; his sister, Norma Jean Michaud; his nieces Heather and Anna Walz; his mother-in-law, Persis Mooers; along with many in-laws and Peggy's nieces and nephews and his dear friends Kenneth and Karen Buttle.
There will be no public services at this time. Memories and condolences may be shared at www.ripostafh.com.


Discover how to play in a PC with an Xbox One control.
If you want to take the game experience beyond your console and you still don't master the mouse and keyboard, don't worry because Mifrosoft has just released the software needed to connect the Xbox One control to play with your PC.
Because from Xbox 360 Microsoft used USB ports to connect to the console, using a control fabricated by them with you PC was never very complicated; however it was necessary to make some physical modifications to the control so that the computer would respond to the device's instructions.
According to a recent publication on Major Nelson's blog, one of the key figures in the development of the Xbox One, it is now possible to use the control of this console naturally and without any problems on the PC. The only thing necessary to play your favorite computer titles as if you were playing on an Xbox is downloading a software known as a "driver" or a "controller" that allows the PC to interpret the orders from the control.
First of all you need to understand that if you have a PC that runs Windows XP, it is probable that none of the controllers work, so we recommend you to use them only with equipment that runs a newer version of this operating system.
Then, you have to identify what version of Windows you own. This could be the 64 or the 86 bit version. If you don't understand this part, don't worry, both formats are the most common between computers nowadays.
Once you have identified the windows version you are using, enter this link to download the drivers you need.
Then, you have to open the file you downloaded and follow the instructions to install it in your computer. Don't forget to have your Xbox One control connected to your laptop using the microUSB of the cable. If your computer doesn't have a micro USB port, use the adaptor.
If you followed these instructions correctly, you can now use your Xbox One control in your PC without problems. Remember that the accessory will work with a limited amount of games. Don't expect to play Age of Empires I with this control because it would not work.
On the other hand, if this idea of downloading drivers and installing programs you don't know on your computer (even if they are Microsoft official programs) is not for you, don't worry, the next Windows update will include all the necessary software to connect the Xbox One controller to your PC.


Welcome to our site! We are specialising in produce, sales, spare parts and service of garden machinery(China Supplier portable lawn mower price list) and garden tools with competitively price products and service.Sytron can offer you advice on the most suitable machines for your garden also with full warranty, service and spares for all the machines we sell. Warmly welcome your inquires and visit!
View reliable Lawn Mower manufacturers on Made-in-China.com. This category presents Mower, Brush Cutter, from China Lawn Mower suppliers to global buyers., page 21 . FOB Price: $550 - $1550 / Piece Min. Order: . Electric power 2000W portable lawn mower 42cm lawn mower The electric lawn mower / portable lawn mower is widely use in garden .
lawn mower manufacturer/supplier, China lawn mower manufacturer & factory list, find qualified Chinese lawn mower manufacturers, suppliers, factories, exporters & wholesalers quickly on Made-in-China.com. . 2017 New Design Factory Direct Price Ride on Lawn Mower . Mower Battery Manufacturers Lawn Mower Cover Manufacturers Flail Mower .
List Lawn Mower Manufacturers, Wholesale Various High Quality List Lawn Mower Manufacturers Products from Global List Lawn Mower Manufacturers Suppliers and List Lawn Mower Manufacturers Factory,Importer,Exporter at Alibaba.com. . Tags: Electric Lawn Mower | Portable Lawn Mower . power adapter for lawn mower, . Tags: Tractor Tire 14.9x26 .
China Ride On Lawn Mower suppliers - Import from verified top China Ride On Lawn Mower manufacturers, exporters, wholesalers and factory. . •26inch Ride On Mower KCR26RC Rear Grass Catcher Possible •1. riding lawn mower •2. factory price •3. tra. . Ride on Lawn Mower - 26inch Ride On Mower KCR26RC Rear Grass Catcher Possible 1 .
The top supplying countries are China (Mainland), Pakistan, and United Kingdom, which supply 98%, 1%, and 1% of ride on mower respectively. Ride on mower products are most popular in Western Europe, Southeast Asia, and North America.
Electric Lawn Mower Manufacturers in the World. . we are able to meet the highest standards in manufacturing and efficient price considerations. Please contact us for business opportunities. Business type . wholesale supplier; Product types: portable PV modules for portable computers and electronics, solar-powered battery chargers, cordless .
Mowers - Changzhou LEFA Industry and Trade Co., Ltd.
China Mowers catalog of China Brush Grass Slasher Cutter Gearbox Tractor Mini Rotary Mower, Agricultural Farm Tractor Mini Pto Flail Mower (EFD135) provided by China manufacturer - Changzhou LEFA Industry and Trade Co., Ltd., page1. Menu . Hot Products China Products Chinese Manufacturers/Suppliers China Wholesale Industry Sites .
portable speaker; smart tv box; data cable usb; . I quickly identified a handful of suppliers offering competitive prices who support Trade Assurance. I was very happy with the quality and lead-time of my initial order and quickly placed a second, larger order and I now place orders regularly with this supplier. . Part of Alibaba.com .
China (中国) Hong Kong (香港) India . Batteries Outdoor Accessories Protective Equipment Specialty Tools Portable Lighting. Pets + More Pet Products Car Care Inflators Workbenches. Battery Systems. 20V MAX* System . BLACK+DECKER™ electric lawn mowers are lightweight and powerful. They feature quick height adjustment, full wrap bars .
China Sawmill suppliers - Import from verified top China Sawmill manufacturers, exporters, wholesalers and factory. . SENMAL is unique manufacturer of this high quality plank making portable chain sawmill from China.with CE certification. High Quality China (mainland) Exporter . FOB Price: US$ 13500 - 18000 / Set. Inquire Now.
Lawn Mower from Zhejiang Dingcheng Industry And Trading Co., Ltd.. Search High Quality Lawn Mower Manufacturing and Exporting supplier on Alibaba.com.
Lawn Mower, Ride on Mower, Chain Saw manufacturer / supplier in China, offering 10kw High Quality Professional Gasoline Generator Set, 9500W Gasoline Generator High Quality Professional, 2018 New Design Professional Self-Propelled Lawn Mower and so on.


text:
Q: select multiple images in Android Gallery i m working with one application that have one functionality to select multiple images from android inbuilt Gallery/Camera .
Gallery is open successfully using below code.
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent,"Select Picture"), SELECT_PICTURE);

but i am able to select only One image from Gallery. so please suggest me how to select multiple images from inbuilt gallery .
Thanks in Advance !!!

A: i had refer this two link link 1
1: Select Multiple Images Using GalleryView and link 2
but not getting Ans for which i m looking for  .. but i have found alternative solution . Get all images from inbuilt Gallery and set it all our custom Gellery .. kindly check out this link Custom Gallery with checkbox
i hope it will help you.

A: Well, this is an old question, but I guess this might be still useful to somebody.
I just released the source code for my multiple image selection activity. You can find it in the following GitHub repo:
https://github.com/derosa/MultiImageChooser
I hope it's useful for you!

A:  Cursor imagecursor1 = managedQuery(
    MediaStore.Images.Media.EXTERNAL_CONTENT_URI, columns, null,
    null, orderBy + " DESC");

   this.imageUrls = new ArrayList<String>();
  imageUrls.size();

   for (int i = 0; i < imagecursor1.getCount(); i++) {
   imagecursor1.moveToPosition(i);
   int dataColumnIndex = imagecursor1
     .getColumnIndex(MediaStore.Images.Media.DATA);
   imageUrls.add(imagecursor1.getString(dataColumnIndex));
  }

   options = new DisplayImageOptions.Builder()
  .showStubImage(R.drawable.stub_image)
  .showImageForEmptyUri(R.drawable.image_for_empty_url)
  .cacheInMemory().cacheOnDisc().build();

   imageAdapter = new ImageAdapter(this, imageUrls);

   gridView = (GridView) findViewById(R.id.PhoneImageGrid);
  gridView.setAdapter(imageAdapter);

You want to more clarifications. http://mylearnandroid.blogspot.in/2014/02/multiple-choose-custom-gallery.html

redpajama_set_name: RedPajamaStackExchange


We closely work together with all stakeholders to make everybodies live easier. Captain and crew should be freed from time consuming administration where possible and spend more time taking care of the yacht and its guest onboard.
From MLC, Financial Reporting to Payroll, every aspect is covered.
All the information you want is at your fingertips. Set up policies who can see what kind of data and who is allowed to manage it.
With our IT department we can create custom applications to fit exactly your requirements.
Data safety is key. We can setup dedicated servers and VPN tunnels to every location of your preference and work with high level partners to put together a tailor made IT concept for your yacht.
We build custom reports for you and your accounting team. We can deliver different formats, through XML feed or connect with API's to whatever system you have running.
We have a scalable IT development center where we support our dedicated assistants in all means possible.
We will help you 24/7 in your own language.
Tell us what you need and we will set up a streamlined process for you.


I am only 3 Years into Motherhood and believe me when i say motherhood is progressive and it transforms you. I know we all have different stories as far as motherhood is concerned and for some its a walk in the park type of story. However, despite of the eye bags and the rough times that sometimes come with it, I wouldn't change anything because its helped me become who i am today and for the better.
Motherhood took me on a journey of sacrifice and my dreams were on a bench/shelf for a while, but in the process of finding myself in motherhood I realised that I still have the same dreams and desires but now even on a grander scale. Once you become a parent you have a little person to provide the best for. Having kids will propel you mostly and make you more creative, ambitious and focused. You will become savvier with your time as it's more limited and you become stricter with who and what receives your energy because it's so precious.
Once you become a parent, your level of selflessness goes on a deeper and high note. Didi is my biggest responsibility. She was born premature, so keeping her healthy and happy means everything to me. That responsibility can be costly at times hence why my drive and zeal is even much greater now.
So in the grand scheme of it all, don't let anyone make you feel guilty for being you and still wanting all the things you did before your child came along. Go make your dreams a reality.
Do you and believe me your little one/s will love you for it, because you will be a shining example for them.


text:
import { hot, cold, expectObservable, expectSubscriptions } from '../helpers/marble-testing';
import { sampleTime, mergeMap } from 'rxjs/operators';
import { TestScheduler } from 'rxjs/testing';
import { of } from 'rxjs';

declare function asDiagram(arg: string): Function;

declare const rxTestScheduler: TestScheduler;

/** @test {sampleTime} */
describe('sampleTime operator', () => {
  asDiagram('sampleTime(70)')('should get samples on a delay', () => {
    const e1 =   hot('a---b-c---------d--e---f-g-h--|');
    const e1subs =   '^                             !';
    const expected = '-------c-------------e------h-|';
    // timer          -------!------!------!------!--

    expectObservable(e1.pipe(sampleTime(70, rxTestScheduler))).toBe(expected);
    expectSubscriptions(e1.subscriptions).toBe(e1subs);
  });

  it('should sample nothing if new value has not arrived', () => {
    const e1 =   hot('----a-^--b----c--------------f----|');
    const e1subs =         '^                           !';
    const expected =       '-----------c----------------|';
    // timer              -----------!----------!---------

    expectObservable(e1.pipe(sampleTime(110, rxTestScheduler))).toBe(expected);
    expectSubscriptions(e1.subscriptions).toBe(e1subs);
  });

  it('should sample if new value has arrived, even if it is the same value', () => {
    const e1 =   hot('----a-^--b----c----------c---f----|');
    const e1subs =         '^                           !';
    const expected =       '-----------c----------c-----|';
    // timer              -----------!----------!---------

    expectObservable(e1.pipe(sampleTime(110, rxTestScheduler))).toBe(expected);
    expectSubscriptions(e1.subscriptions).toBe(e1subs);
  });

  it('should sample nothing if source has not nexted by time of sample', () => {
    const e1 =   hot('----a-^-------------b-------------|');
    const e1subs =         '^                           !';
    const expected =       '----------------------b-----|';
    // timer              -----------!----------!---------

    expectObservable(e1.pipe(sampleTime(110, rxTestScheduler))).toBe(expected);
    expectSubscriptions(e1.subscriptions).toBe(e1subs);
  });

  it('should raise error if source raises error', () => {
    const e1 =   hot('----a-^--b----c----d----#');
    const e1subs =         '^                 !';
    const expected =       '-----------c------#';
    // timer              -----------!----------!---------

    expectObservable(e1.pipe(sampleTime(110, rxTestScheduler))).toBe(expected);
    expectSubscriptions(e1.subscriptions).toBe(e1subs);
  });

  it('should allow unsubscribing explicitly and early', () => {
    const e1 =   hot('----a-^--b----c----d----e----f----|');
    const unsub =          '                !            ';
    const e1subs =         '^               !            ';
    const expected =       '-----------c-----            ';
    // timer              -----------!----------!---------

    expectObservable(e1.pipe(sampleTime(110, rxTestScheduler)), unsub).toBe(expected);
    expectSubscriptions(e1.subscriptions).toBe(e1subs);
  });

  it('should not break unsubscription chains when result is unsubscribed explicitly', () => {
    const e1 =   hot('----a-^--b----c----d----e----f----|');
    const e1subs =         '^               !            ';
    // timer              -----------!----------!---------
    const expected =       '-----------c-----            ';
    const unsub =          '                !            ';

    const result = e1.pipe(
      mergeMap((x: string) => of(x)),
      sampleTime(110, rxTestScheduler),
      mergeMap((x: string) => of(x))
    );

    expectObservable(result, unsub).toBe(expected);
    expectSubscriptions(e1.subscriptions).toBe(e1subs);
  });

  it('should completes if source does not emits', () => {
    const e1 =  cold('|');
    const e1subs =   '(^!)';
    const expected = '|';

    expectObservable(e1.pipe(sampleTime(60, rxTestScheduler))).toBe(expected);
    expectSubscriptions(e1.subscriptions).toBe(e1subs);
  });

  it('should raise error if source throws immediately', () => {
    const e1 =  cold('#');
    const e1subs =   '(^!)';
    const expected = '#';

    expectObservable(e1.pipe(sampleTime(60, rxTestScheduler))).toBe(expected);
    expectSubscriptions(e1.subscriptions).toBe(e1subs);
  });

  it('should not completes if source does not complete', () => {
    const e1 =  cold('-');
    const e1subs =   '^';
    const expected = '-';

    expectObservable(e1.pipe(sampleTime(60, rxTestScheduler))).toBe(expected);
    expectSubscriptions(e1.subscriptions).toBe(e1subs);
  });
});

redpajama_set_name: RedPajamaGithub


In the last few months, public-sector unions have increasingly come under attack as states struggle to fulfill pension obligations. More and more, these unions are being accused of selfishly bringing state and local governments to the brink of bankruptcy.
The first question is how we should value those who devote their careers to serving the public need. This is a topic about which Judaism has much to say.
In America, it has become acceptable to denigrate public employees as under-qualified workers who collect undeservedly high salaries and benefits. But the reality is far different. A recent study by the Economic Policy Institute found that workers in the public sector actually earn slightly less than private-sector workers with similar educational backgrounds. And as for those supposedly lavish pensions, the average pension of a public-sector worker in the United States is $19,000 a year — hardly enough to spend retirement soaking up rays on a yacht.
Critics say that public-sector employees' pensions are sapping state and federal budgets. It's true that pensions are expensive, but these pensions actually account for a very small share of state budgets — on average, about 3.8%.
In the economic crisis, pension funds lost value, just like all of our savings accounts. Yet rather than focusing on the real cause of the economic crisis — namely, the bad behavior of Wall Street bankers, who continue to pay themselves multi-million dollar bonuses even as unemployment figures remain stubbornly high — there is an effort to divert attention by attacking public employees and their unions. Most dramatically, Governor Scott Walker of Wisconsin has proposed broad legislation that would strip public unions of most of their collective bargaining rights.
Once upon a time, Americans recognized unions as the best means for ensuring that regular, hard-working people earned enough to support themselves. Union-negotiated salaries allowed factory workers, service industry employees and government workers to propel themselves into the middle class. Union health benefits have saved both lives and labor costs; employees able to seek preventative medical care stay healthy longer, and also miss fewer days of work. Pensions have enabled workers to enjoy a dignified retirement.
Unions, of course, are not perfect institutions. And union contracts are also not perfect. But the response to specific issues in union contracts or in the financing of pensions or benefits should not be to strip workers of all of their negotiating power. Instead, we should try to address these issues within the framework of the collective bargaining process.
The attack on public-sector employees reflects a growing disrespect for those who devote their lives to ensuring that our streets are clean, our children are educated and our Medicare benefits are administered correctly. It represents nothing less than an attempt to break the last bastion of organized workers' strength in the United States.
In times like these, we need to have honest public conversations about how best to allocate communal funds. But the current attack on public workers does not further this conversation. Instead, this assault threatens all of our livelihoods, our ability to have a voice at work and our chance to build a just society together.
Rabbi Jill Jacobs is the author of "There Shall Be No Needy: Pursuing Social Justice Through Jewish Law and Tradition" (Jewish Lights, 2009).
This story "Jill Jacobs: Incivility Toward Civil Servants" was written by Jill Jacobs.


text:
New York Yankees: 5 goals for the rest of the season
ESNY Graphic, AP Photo
After a strong close to the first half of the season, the New York Yankees should seek to achieve certain goals after the MLB All-Star Break.
The New York Yankees finished the first half of the season strong, but any true blue baseball fans know this is only the beginning. Next comes the second half, a combination of the Thunderdome and 1987 classic The Running Man. Several teams will enter but only a select few will leave. And just like Highlander, there can be only one in the end.
Whew! OK, now that I'm done referencing '80s movies, let's get back to baseball. The Yankees, despite a plethora of injuries, currently sit 57-31 and 6.5 games up on the second place Tampa Bay Rays. Aaron Judge missed two months with a strained oblique and Giancarlo Stanton has barely played. Luis Severino hasn't pitched once and Greg Bird is, well, Greg Bird.
The stage is set for the New York Yankees to continue that success in the second half, but now is not the time for cruise control. No, this is when the team must keep its foot on the gas pedal and adjust accordingly the rest of the year.
What needs to happen is management must set specific goals for the second half. If the Yankees can achieve them, then 2019 could wind up looking like quite the memorable year.
No. 5: Get healthy
Yankees fans come to Yankee Stadium to watch baseball, not a nine-inning game of Operation. Well, such was the case for a good chunk of the season's opening months. At one point, New York had a whopping 13 players on the disabled list. Thanks to the famous "next man up" philosophy, this team flourished instead of floundering.
Now that the All-Star Break is here, New York's top priority should be to get as healthy as possible before the playoffs. Stanton has dealt with bicep, shoulder, calf, and knee injuries all year and won't be back until August. Severino and Dellin Betances are hoping to be back this year, but don't have a timetable.
GM Brian Cashman says this team is a "fully operational Death Star," so let's get the active roster looking like just that on paper.
No. 4: Stay healthy
Getting healthy is all fine and dandy, but staying so is even more important. The good news for the New York Yankees is, slowly but surely, the important pieces are coming back. Judge returned last month and has hit .268 with four home runs since. Luke Voit, who strained an abdominal muscle in the London Series, could very well be back after the break.
The point is while it's great top players are coming off the injured list, keeping them off it for the rest of the season is the real task. The dog days of August are just around the corner and fatigue will set in for a lot of teams.
The Yankees, despite their position in the standings, do not have that luxury. The Rays and defending champion Boston Red Sox are down, but not out. There is still time for one or both to make a run, and New York cannot be caught sleeping.
Which, oddly enough, brings us to the next goal!
No. 3: Add an arm
The New York Yankees' pitching staff, despite some injuries, has not looked awful this year. New York ranks ninth in MLB with a 4.17 ERA, which isn't terrible considering the team finished tenth with a mark of 3.78 a year ago.
Naturally, there is still room for improvement. James Paxton has looked good in his first Bronx season, but not great due to inconsistency. J.A. Happ has struggled with the long ball all year. CC Sabathia is only as good as how his balky knee feels, not to mention the command of his cutter.
Oh, and let's not forget Betances and Severino's respective shoulder injuries still aren't fully healed.
This means as the July 31 trade deadline approaches, Cashman must acquire an arm. Mike Rosenstein of NJ.com reported last month the Yankees' GM is doing just that and the team is in on some big names, including San Francisco Giants ace Madison Bumgarner and Toronto Blue Jays righty Marcus Stroman.
Knowing Cashman, a deal is going to be made. How well it impacts his team, however, remains to be seen.
No. 2: Win the AL East
The New York Yankees have made the playoffs the last two seasons, but it hasn't been the same as years past. New York made the playoffs as the AL Wild Card team in 2017 and 2018.
Even though New York came within a win of making the World Series one of those years, each playoff run ended with the same thought. The team could have been better.
That's because second-half struggles kept the Yankees from making a significant push for first place in the division. Well, the worm has turned and this year's Yankees have a new competitive fire in them. This team is hungry for the AL East crown and doesn't want to worry about the Wild Card Game again.
This means entering the second half locked and loaded, regardless of who's on the roster. For this Yankees team, the mentality should be simple: win the division or bust.
No. 1: Make a deep playoff run
Every New York Yankees fan worth their weight in gold is used to winning. Any season which ends without the Bronx Bombers winning the World Series feels like a failure.
Which is why though the Yankees should be aiming high, as playoff-caliber teams often do, the goal this year is different. Just get back to the American League Championship Series and, hopefully, beyond. Last year's early exit was embarrassing not just because New York was eliminated by Boston at home, but because everyone from the players to the coaches to even the hot dog vendors knew the team was better than its performance.
This year's New York Yankees are a different team. Instead of crumbling under pressure, they embrace it. No matter what the score, this team always shows fight and passion.
The playoffs are a whole other animal but mark this writer's words. If the New York Yankees can win the AL East, expect a different team than last year to show up.
NEXT: Ranking The Best Of The Yankees Bat-Flip Game


In Wake County court costs and fines for speeding tickets generally range from $188 to $263. For those who do not show up or pay their costs they can find their license is suspended. Often the DMV will mail notice of the suspension but the individual will not receive the letter and could be driving with a suspended license for months or even years without knowledge of the suspension.
If you are charged with driving while license revoked (DWLR) or driving on a suspended license in Wake County, North Carolina we can help. Contact The Law Offices of Wiley Nickel, PLLC for a free consultation to learn more about how we can help get you back on the road with a valid license. Our office is located in Cary, NC and we can be reached at 919-585-1486.
Why did my North Carolina Driver's License Get Suspended? If you didn't show up to court or pay your fine or fee you can lose your driver's license. How to get your NC license back after it has been suspended.
I was recently interviewed by North Carolina Lawyers Weekly. The article is on the effects of changes in funding for indigent defendants that will mean most indigent defendants will not be apointed counsel for driving while their license is revoked (DWLR). The article is titled "The High Cost of Saving Money."
Driving While License Revoked in North Carolina. The State of North Carolina spends more time and resources enforcing, arresting, prosecuting, defending and imprisoning offenders of this crime than any other on the books. Some license revocations are the result of overt action like Driving While Impaired, a serious speeding offense or multiple minor speeding offenses. However the Division of Motor Vehicles suspends the license of those who drop out of high school, steal gasoline or fail to cover the cost of a traffic collision. A vast majority of license revocations are the result of inaction, i.e. failure to appear and/or pay the costs associated with a traffic violation. Many clients mishandle a court case for things like driving without insurance and are later revoked.
If you have your license revoked you need a good lawyer to help you get back on the road. Call the Law Offices of Wiley Nickel for a free consultation about how we can handle your case in Wake County and get you back on the road.


And if you have fallen along the way, just jump back in where we are at! There's no trophy you are giving up and no referees to stop you from getting back in the game. The only judge you need to please with Poem-A-Day challenges is you.
Writing is an endurance test. So is publishing. Sunday I was lost Sunday in formating web pages – for some reason my "page-jumps" will not stick – except on two (rarely used) pages. And my indent's within poems have also decided to play truant. It's the SLIDing, I suspect – there's times I have just needed to walk away and stay away. So I've been excavating in the HTML. I have manaaged to tighten up the line spacing 'tho. So I'm just going to consider it a win.
Robert Lee Brewer's AprPAD challenge prompt is travel.
NaPoWriMo/GloPoWriMo's featured participant today is Whimsygizmo's Blog, their featured poet is former U.S. Poet Laureate Natasha Trethewey.
And NapoWriMO's prompt is to write a portrait of someone important to you.
As for my personal Poem A Day Challenge , today's PAD is … a ballerina.
dragons who disguise themselves as clouds.
because if you stay still, you can't lose your way.
momento mori – emptiness & waiting.


Slamming doors cost more than we imagine. Slamming doors can do major damage to architraves, inset windows, pets, children, nerves, rest, and door hardware.
Last week, we met a new customer that heard about SoftSlam and the benefits of stopping a slamming door just a little too late.
He called us after his door slammed shut during the last major storm. The slamming door ripped the architrave right off the wall, in addition to scaring the entire family out of their seats.
Unfortunately, as simple as that damage sounds, it is anything but simple when you get finished adding up all the pieces. The wood was damaged, cracked and even broken around the nails. The nails held fast. Gluing was not an option. A new piece of timber was required to repair the damages. A contractor was selected to replace the architrave. He had a call out fee. He had to purchase the timber. He cut and installed the timber. Once it was installed. The entire door frame had to be painted because the aged paint was impossible to match. Visitors don't notice but our customer can't stop noticing that the one door doesn't match the rest of the house. He's now thinking about having to paint the whole house.
Why? Because the door slammed in the wind. With a SoftSlam installed, he would not have had a worry.


text:
Q: IE6 and Caching It seems that IE6 ignores any form of cache invalidation sent via http headers, I've tried setting Pragma to No Cache and setting Cache Expiration to the current time, yet in IE6, hitting back will always pull up a cached version of a page I am working on.
Is there a specific HTTP Header that IE6 does listen too?

A: Cache-Control: private, max-age=0 should fix it. From classic ASP this is done with Response.Expires=-1.
Keep in mind when testing that just because your server is serving pages with caching turned off doesn't mean that the browser will obey that when it has an old cached page that it was told was okay to cache. Clear the cache or use F5 to force that page to be reloaded.
Also, for those cases where the server is serving cached content it you can use Ctrl+F5 to signal the server not to serve it from cache.

A: You must be careful.  If you are using AJAX via XMLHttpRequest (XHR), cache "recommendations" set in the header are not respected by ie6.
The fix is to use append a random number to the url queries used in AJAX requests. For example:
http://test.com?nonce=0123

A good generator for this is the UTC() function that returns a unique timestame for the user's browser... that is, unless they mess with their system clock.

A: Have you tried setting an ETag in the header?  They're a pretty reliable way to indicate that content has changed w3c Spec & Wikipedia
Beyond that, a little more crude way is to append a random query string parameter to the request, such as the current unix timestamp.  As I said, crude, but then IE6 is not the most subtle of beasts

A: A little note: By experience I know that IE6 will load Javascript from cache even if forced to reload the page via Ctrl-F5. So if you are working on Javascript always empty the cache.
The IE web developer toolbar can help immensely with this. There's a button for clearing the cache.

A: see Question: Making sure a webpage is not cached, across all browsers. How to control web page caching, across all browsers? I think this should help out with your problem too.

A: Content with "Content-Encoding: gzip" Is Always Cached Although You Use "Cache-Control: no-cache"
http://support.microsoft.com/kb/321722
You could also disable gzip just for IE6


text:
Search Globus-Ph
THE GRAND SCANDINAVIAN CIRCLE TOUR WITH ST. PETERSBURG
With st. petersburg extension
Tour: ZNE STOCKHOLM ST. PETERSBURG
Breathtaking scenery, the Arctic Circle, train rides, cruises, vibrant cities, and so much more await you on this marvelous Scandinavia and Russia tour. Scenic highlights include an, overnight cruise from Copenhagen to Oslo in first-class, outside, two-berth cabins with private facilities with dinner included; a train ride between Oslo and Bergen, considered to be one of the world's most scenic rail routes; a ferry ride from Sweden to Denmark; and a spectacular ride on the Flåm train with some of Norway's most magnificent scenery, including Kjosfossen waterfall, with its water cascading down the mountainside—a special experience offered by Globus.
Spend time in the Arctic Circle—land of the "Midnight Sun"—and visit the North Cape Visitor Center, marking the endpoint of the European mainland. Here, stand at the sheer cliff rising 1,000 feet from the Atlantic Ocean and feel like you're at the end of the world. In the Arctic Circle, also enjoy ferry crossings on Ullsfjord and Lyngenfjord, which offer breathtaking views of the Lyngen Alps with their blue glaciers and mountain peaks rising more than 3,280 feet directly from the fjord. Visit Alta's rock carvings, a UNESCO World Heritage Site which demonstrates a human settlement dating from 4,200 to 500 BC. Admire crystal-clear streams, sparkling lakes, tundra, and forests as you head south to Finland's Lapland and cross back over the Arctic Circle. Out-of-the-ordinary experiences offered by Globus are highlight visits to the Santa Claus Village, where you receive your Arctic Circle Certificate, and to a Husky Farm. Your flights from Oslo to Tromsø and from Rovaniemi to Helsinki are included, and three nights in Helsinki allow the opportunity to join an optional excursion to Tallinn, Estonia. In St. Petersburg, visit the world-famous Hermitage Museum, magnificent St. Isaac's Cathedral, and enjoy a Russian specialty dinner.
On this Scandinavia and Russia tour, spend time in the cities and enjoy guided sightseeing in Stockholm, Copenhagen, Bergen, Oslo, Helsinki, and St. Petersburg. All of this—and much more—are included on this spectacular once-in-a-lifetime holiday!
*Price per person, based on double occupancy for 28 August 2020 departure
2020-South-America-10
2020-Africa
© 2019 International Holidays Ltd. All rights reserved.


Total lenght necklace: max. 84 cm (adjustable).
Lovely vintage style pocket watch necklace Montre ancienne Roman watch necklace From Paris with Love! Made of polished brass gold metal on artificial leather necklace. The clock with roman numerals can be opened. Cute christmas - birthday present!


Home » CBD » CBD By Pure Science Lab. 500 mgs Sleep Aid. Peppermint Flavored.
As a crohns disease survivor , cbd patient and 25 years in the alternative medicine business I understand the importance of quality ingredients and the need to scrutinize processing from seed to sale. My team and I stand behind our products 100%.Our hemp is legally imported from european organic hemp farms and is 3rd party lab tested . People worldwide have been supplementing their diet and medical treatments with our CBD rich hemp oil with encouraging success ! That's thanks not only to our unique high-CBD hemp cultivars, but also to the generational european farmers who grow and harvest our amazing hemp.
These statements have not been evaluated by the FDA and are not intended to diagnose, treat or cure any disease. Always check with your physician before starting a new dietary supplement program. The Food and Drug Administration (FDA) considers hemp products to be "food based". CBD is a natural constituent of the industrial hemp plant. It promotes and supports the nutritional health of aging bodies.
We do not sell or distribute any products that are in violation of the United States Controlled Substances Act (US.CSA).
(UNDER THE TONGUE) PUT 1/2 DROPPER PER DAY . TOLERANCE AND NEED IS DIFFERENT FOR EVERYONE.


One of the most vexing problems facing organizations today lies in the digital landfill known as "shared drives" (aka network drives or file shares). As an information governance consultancy, IMERGE develops information classification schemes, but applying those schemes to even a few gigabytes of shared drive content can be time-consuming and challenging. The effort to organize content with actual value requires elimination of the valueless kind—redundant, outdated and trivial (ROT) content.
The primary information available to evaluate content is the metadata associated with the folders and objects on the file share: folder names, file names, date created, date modified, date accessed, etc.—basically, the file attributes shown in File Explorer. Additional metadata, as shown to the right, is stored in file properties, which may be useful in establishing the value of content. Of course, opening and reading content or properties on individual files is far too time-consuming to be a realistic approach. Using simple shareware tools, such as Directory Lister Pro, is one approach to extracting this data; once extracted, the data can be moved to Excel, but it can be a daunting task to manipulate thousands of rows of data and get meaningful results.
There are added complexities when evaluating content, such as metadata not being accurate. I had the unfortunate necessity to restore my files from a cloud backup vendor on May 28, 2008. Why do I remember this date seven years later? Because this restore reset all of the modified dates. Then on September 21, I restored files from OneDrive to a new computer and, as shown below, the created and last accessed date now show the dates of the latest restore. Metadata changes from backup or other system designs are commonplace, albeit less so in recent years.
While metadata integrity is one vexing challenge, the most common issue originates from the organic development of shared drive file structures over the years. Shared drives, by and large, are not planned; rather, they are created by individuals for their own purposes and without an enterprise view. As a result, there is content with varying retention rules mixed together within a folder structure, making it impossible to simply delete a folder and all of its content.
In a perfect world, our shared drive structures would look like the one on the left—consistent naming conventions, date clarity and unambiguous content. However, the vast majority of shared drives look like the structure on the right: mixed content types, ambiguous or useless file names (e.g., letter.docx), confusion from duplication or near-duplication (e.g., the HVAC agreement versions with nearly identical created dates) and personal content (e.g., wedding video and photo). Of course, it wouldn't be unusual for a shared drive structure to contain hundreds and tens of thousands of files.
The keys to success are carefully defined business rules and consideration of the risks and costs associated with failing to expunge expired content or expunging the wrong content. The rules must then be applied in the order that remediates the most content for each rule while respecting governance rules, such as the retention schedule, legal holds, etc. Finally, instituting a review process for likely ROT and a method for classifying and organizing the remaining valuable content is a must.
Jim Just is a partner with IMERGE Consulting, Inc., with over 20 years of experience in business process redesign, document management technologies, business process management and records and information management. For more information, visit www.imergeconsult.com.


text:
Is Indian an ethnicity?
What are Indians called?
Why are natives called Indians?
What are the 5 ethnic groups?
How many human races are there?
Is it OK to say Indian?
Who is real Indian?
In India, the term "Indian" refers to nationality, rather than a particular ethnicity or language; the Indian nationality consists of dozens of regional ethno-linguistic groups, reflecting the rich and complex history of the country.
The past 500 years have seen a myriad of terms used as referents to indigenous Americans, including American Indian, Native American, First Nation, Eskimo, Inuit, and Native Alaskan. Some of these terms are used almost interchangeably, while others indicate relatively specific entities.
American Indians – Native Americans
The term "Indian," in reference to the original inhabitants of the American continent, is said to derive from Christopher Columbus, a 15th century boat-person. Some say he used the term because he was convinced he had arrived in "the Indies" (Asia), his intended destination.
The revised standards contain five minimum categories for race: American Indian or Alaska Native, Asian, Black or African American, Native Hawaiian or Other Pacific Islander, and White. There are two categories for ethnicity: "Hispanic or Latino" and "Not Hispanic or Latino."
The world population can be divided into 4 major races, namely white/Caucasian, Mongoloid/Asian, Negroid/Black, and Australoid. This is based on a racial classification made by Carleton S. Coon in 1962.
What is the correct terminology: American Indian, Indian, Native American, or Native? All of these terms are acceptable. The consensus, however, is that whenever possible, Native people prefer to be called by their specific tribal name.
IMPORTANT: Is it legal to wrap bike in India?
According to my research assistants, a "real Indian" is an individual who was born and raised on the reservation.
Are private schools better than public in India?
Frequent question: What is the name of Indian house?
Why do people in India already know English?
Are cats sacred in India?
How much does it cost to ship furniture from Dubai to India?
Your question: What is water temp at Indian Rocks Beach?
When did Star Plus started in India?


text:
package executor

import (
	"math"
	"sync"
	"sync/atomic"
	"time"
	"unsafe"

	"github.com/pingcap/errors"
	"github.com/pingcap/parser/terror"
	"github.com/pingcap/tidb/expression"
	plannercore "github.com/pingcap/tidb/planner/core"
	"github.com/pingcap/tidb/types"
	"github.com/pingcap/tidb/util"
	"github.com/pingcap/tidb/util/chunk"
	"github.com/pingcap/tidb/util/codec"
	"github.com/pingcap/tidb/util/memory"
	"github.com/pingcap/tidb/util/mvmap"
	"golang.org/x/net/context"
)

var (
	_ Executor = &HashJoinExec{}
	_ Executor = &NestedLoopApplyExec{}
)

// HashJoinExec implements the hash join algorithm.
type HashJoinExec struct {
	baseExecutor

	outerExec   Executor
	innerExec   Executor
	outerFilter expression.CNFExprs
	outerKeys   []*expression.Column
	innerKeys   []*expression.Column

	prepared        bool
	concurrency     uint // concurrency is number of concurrent channels and join workers.
	hashTable       *mvmap.MVMap
	innerFinished   chan error
	hashJoinBuffers []*hashJoinBuffer
	workerWaitGroup sync.WaitGroup // workerWaitGroup is for sync multiple join workers.
	finished        atomic.Value
	closeCh         chan struct{} // closeCh add a lock for closing executor.
	joinType        plannercore.JoinType
	innerIdx        int

	// We build individual joiner for each join worker when use chunk-based execution,
	// to avoid the concurrency of joiner.chk and joiner.selected.
	joiners []joiner

	outerKeyColIdx     []int
	innerKeyColIdx     []int
	innerResult        *chunk.List
	outerChkResourceCh chan *outerChkResource
	outerResultChs     []chan *chunk.Chunk
	joinChkResourceCh  []chan *chunk.Chunk
	joinResultCh       chan *hashjoinWorkerResult
	hashTableValBufs   [][][]byte

	memTracker *memory.Tracker // track memory usage.

	// radixBits indicates the bit number using for radix partitioning. Inner
	// relation will be split to 2^radixBits sub-relations before building the
	// hash tables. If the complete inner relation can be hold in L2Cache in
	// which case radixBits will be 0, we can skip the partition phase.
	radixBits int
}

// outerChkResource stores the result of the join outer fetch worker,
// `dest` is for Chunk reuse: after join workers process the outer chunk which is read from `dest`,
// they'll store the used chunk as `chk`, and then the outer fetch worker will put new data into `chk` and write `chk` into dest.
type outerChkResource struct {
	chk  *chunk.Chunk
	dest chan<- *chunk.Chunk
}

// hashjoinWorkerResult stores the result of join workers,
// `src` is for Chunk reuse: the main goroutine will get the join result chunk `chk`,
// and push `chk` into `src` after processing, join worker goroutines get the empty chunk from `src`
// and push new data into this chunk.
type hashjoinWorkerResult struct {
	chk *chunk.Chunk
	err error
	src chan<- *chunk.Chunk
}

type hashJoinBuffer struct {
	data  []types.Datum
	bytes []byte
}

// Close implements the Executor Close interface.
func (e *HashJoinExec) Close() error {
	close(e.closeCh)
	e.finished.Store(true)
	if e.prepared {
		if e.innerFinished != nil {
			for range e.innerFinished {
			}
		}
		if e.joinResultCh != nil {
			for range e.joinResultCh {
			}
		}
		if e.outerChkResourceCh != nil {
			close(e.outerChkResourceCh)
			for range e.outerChkResourceCh {
			}
		}
		for i := range e.outerResultChs {
			for range e.outerResultChs[i] {
			}
		}
		for i := range e.joinChkResourceCh {
			close(e.joinChkResourceCh[i])
			for range e.joinChkResourceCh[i] {
			}
		}
		e.outerChkResourceCh = nil
		e.joinChkResourceCh = nil
	}
	e.memTracker.Detach()
	e.memTracker = nil

	err := e.baseExecutor.Close()
	return errors.Trace(err)
}

// Open implements the Executor Open interface.
func (e *HashJoinExec) Open(ctx context.Context) error {
	if err := e.baseExecutor.Open(ctx); err != nil {
		return errors.Trace(err)
	}

	e.prepared = false
	e.memTracker = memory.NewTracker(e.id, e.ctx.GetSessionVars().MemQuotaHashJoin)
	e.memTracker.AttachTo(e.ctx.GetSessionVars().StmtCtx.MemTracker)

	e.hashTableValBufs = make([][][]byte, e.concurrency)
	e.hashJoinBuffers = make([]*hashJoinBuffer, 0, e.concurrency)
	for i := uint(0); i < e.concurrency; i++ {
		buffer := &hashJoinBuffer{
			data:  make([]types.Datum, len(e.outerKeys)),
			bytes: make([]byte, 0, 10000),
		}
		e.hashJoinBuffers = append(e.hashJoinBuffers, buffer)
	}

	e.closeCh = make(chan struct{})
	e.finished.Store(false)
	e.workerWaitGroup = sync.WaitGroup{}
	return nil
}

func (e *HashJoinExec) getJoinKeyFromChkRow(isOuterKey bool, row chunk.Row, keyBuf []byte) (hasNull bool, _ []byte, err error) {
	var keyColIdx []int
	var allTypes []*types.FieldType
	if isOuterKey {
		keyColIdx = e.outerKeyColIdx
		allTypes = e.outerExec.retTypes()
	} else {
		keyColIdx = e.innerKeyColIdx
		allTypes = e.innerExec.retTypes()
	}

	for _, i := range keyColIdx {
		if row.IsNull(i) {
			return true, keyBuf, nil
		}
	}

	keyBuf = keyBuf[:0]
	keyBuf, err = codec.HashChunkRow(e.ctx.GetSessionVars().StmtCtx, keyBuf, row, allTypes, keyColIdx)
	if err != nil {
		err = errors.Trace(err)
	}
	return false, keyBuf, err
}

// fetchOuterChunks get chunks from fetches chunks from the big table in a background goroutine
// and sends the chunks to multiple channels which will be read by multiple join workers.
func (e *HashJoinExec) fetchOuterChunks(ctx context.Context) {
	hasWaitedForInner := false
	for {
		if e.finished.Load().(bool) {
			return
		}
		var outerResource *outerChkResource
		ok := true
		select {
		case <-e.closeCh:
			return
		case outerResource, ok = <-e.outerChkResourceCh:
			if !ok {
				return
			}
		}
		outerResult := outerResource.chk
		err := e.outerExec.Next(ctx, outerResult)
		if err != nil {
			e.joinResultCh <- &hashjoinWorkerResult{
				err: errors.Trace(err),
			}
			return
		}
		if !hasWaitedForInner {
			if outerResult.NumRows() == 0 {
				e.finished.Store(true)
				return
			}
			jobFinished, innerErr := e.wait4Inner()
			if innerErr != nil {
				e.joinResultCh <- &hashjoinWorkerResult{
					err: errors.Trace(innerErr),
				}
				return
			} else if jobFinished {
				return
			}
			hasWaitedForInner = true
		}

		if outerResult.NumRows() == 0 {
			return
		}
		outerResource.dest <- outerResult
	}
}

func (e *HashJoinExec) wait4Inner() (finished bool, err error) {
	select {
	case <-e.closeCh:
		return true, nil
	case err, _ := <-e.innerFinished:
		if err != nil {
			return false, errors.Trace(err)
		}
	}
	if e.hashTable.Len() == 0 && (e.joinType == plannercore.InnerJoin || e.joinType == plannercore.SemiJoin) {
		return true, nil
	}
	return false, nil
}

// fetchInnerRows fetches all rows from inner executor,
// and append them to e.innerResult.
func (e *HashJoinExec) fetchInnerRows(ctx context.Context, chkCh chan<- *chunk.Chunk, doneCh chan struct{}) {
	defer close(chkCh)
	e.innerResult = chunk.NewList(e.innerExec.retTypes(), e.initCap, e.maxChunkSize)
	e.innerResult.GetMemTracker().AttachTo(e.memTracker)
	e.innerResult.GetMemTracker().SetLabel("innerResult")
	var err error
	for {
		select {
		case <-doneCh:
			return
		case <-e.closeCh:
			return
		default:
			if e.finished.Load().(bool) {
				return
			}
			chk := e.children[e.innerIdx].newFirstChunk()
			err = e.innerExec.Next(ctx, chk)
			if err != nil {
				e.innerFinished <- errors.Trace(err)
				return
			}
			if chk.NumRows() == 0 {
				e.evalRadixBitNum()
				return
			}
			select {
			case chkCh <- chk:
				break
			case <-e.closeCh:
				return
			}
			e.innerResult.Add(chk)
		}
	}
}

// evalRadixBitNum evaluates the radix bit numbers.
func (e *HashJoinExec) evalRadixBitNum() {
	sv := e.ctx.GetSessionVars()
	// Calculate the bit number needed when using radix partition.
	if !sv.EnableRadixJoin {
		return
	}
	innerResultSize := float64(e.innerResult.GetMemTracker().BytesConsumed())
	// To ensure that one partition of inner relation, one hash
	// table and one partition of outer relation fit into the L2
	// cache when the input data obeys the uniform distribution,
	// we suppose every sub-partition of inner relation using
	// three quarters of the L2 cache size.
	l2CacheSize := float64(sv.L2CacheSize) * 3 / 4
	e.radixBits = int(math.Log2(innerResultSize / l2CacheSize))
}

func (e *HashJoinExec) initializeForProbe() {
	// e.outerResultChs is for transmitting the chunks which store the data of outerExec,
	// it'll be written by outer worker goroutine, and read by join workers.
	e.outerResultChs = make([]chan *chunk.Chunk, e.concurrency)
	for i := uint(0); i < e.concurrency; i++ {
		e.outerResultChs[i] = make(chan *chunk.Chunk, 1)
	}

	// e.outerChkResourceCh is for transmitting the used outerExec chunks from join workers to outerExec worker.
	e.outerChkResourceCh = make(chan *outerChkResource, e.concurrency)
	for i := uint(0); i < e.concurrency; i++ {
		e.outerChkResourceCh <- &outerChkResource{
			chk:  e.outerExec.newFirstChunk(),
			dest: e.outerResultChs[i],
		}
	}

	// e.joinChkResourceCh is for transmitting the reused join result chunks
	// from the main thread to join worker goroutines.
	e.joinChkResourceCh = make([]chan *chunk.Chunk, e.concurrency)
	for i := uint(0); i < e.concurrency; i++ {
		e.joinChkResourceCh[i] = make(chan *chunk.Chunk, 1)
		e.joinChkResourceCh[i] <- e.newFirstChunk()
	}

	// e.joinResultCh is for transmitting the join result chunks to the main thread.
	e.joinResultCh = make(chan *hashjoinWorkerResult, e.concurrency+1)

	e.outerKeyColIdx = make([]int, len(e.outerKeys))
	for i := range e.outerKeys {
		e.outerKeyColIdx[i] = e.outerKeys[i].Index
	}
}

func (e *HashJoinExec) fetchOuterAndProbeHashTable(ctx context.Context) {
	e.initializeForProbe()
	e.workerWaitGroup.Add(1)
	go util.WithRecovery(func() { e.fetchOuterChunks(ctx) }, e.finishOuterFetcher)

	// Start e.concurrency join workers to probe hash table and join inner and outer rows.
	for i := uint(0); i < e.concurrency; i++ {
		e.workerWaitGroup.Add(1)
		workID := i
		go util.WithRecovery(func() { e.runJoinWorker(workID) }, e.finishJoinWorker)
	}
	go util.WithRecovery(e.waitJoinWorkersAndCloseResultChan, nil)
}

func (e *HashJoinExec) finishOuterFetcher(r interface{}) {
	for i := range e.outerResultChs {
		close(e.outerResultChs[i])
	}
	if r != nil {
		e.joinResultCh <- &hashjoinWorkerResult{err: errors.Errorf("%v", r)}
	}
	e.workerWaitGroup.Done()
}

func (e *HashJoinExec) finishJoinWorker(r interface{}) {
	if r != nil {
		e.joinResultCh <- &hashjoinWorkerResult{err: errors.Errorf("%v", r)}
	}
	e.workerWaitGroup.Done()
}

func (e *HashJoinExec) waitJoinWorkersAndCloseResultChan() {
	e.workerWaitGroup.Wait()
	close(e.joinResultCh)
}

func (e *HashJoinExec) runJoinWorker(workerID uint) {
	var (
		outerResult *chunk.Chunk
		selected    = make([]bool, 0, chunk.InitialCapacity)
	)
	ok, joinResult := e.getNewJoinResult(workerID)
	if !ok {
		return
	}

	// Read and filter outerResult, and join the outerResult with the inner rows.
	emptyOuterResult := &outerChkResource{
		dest: e.outerResultChs[workerID],
	}
	for ok := true; ok; {
		if e.finished.Load().(bool) {
			break
		}
		select {
		case <-e.closeCh:
			return
		case outerResult, ok = <-e.outerResultChs[workerID]:
		}
		if !ok {
			break
		}
		ok, joinResult = e.join2Chunk(workerID, outerResult, joinResult, selected)
		if !ok {
			break
		}
		outerResult.Reset()
		emptyOuterResult.chk = outerResult
		e.outerChkResourceCh <- emptyOuterResult
	}
	if joinResult == nil {
		return
	} else if joinResult.err != nil || (joinResult.chk != nil && joinResult.chk.NumRows() > 0) {
		e.joinResultCh <- joinResult
	}
}

func (e *HashJoinExec) joinMatchedOuterRow2Chunk(workerID uint, outerRow chunk.Row,
	joinResult *hashjoinWorkerResult) (bool, *hashjoinWorkerResult) {
	buffer := e.hashJoinBuffers[workerID]
	hasNull, joinKey, err := e.getJoinKeyFromChkRow(true, outerRow, buffer.bytes)
	if err != nil {
		joinResult.err = errors.Trace(err)
		return false, joinResult
	}
	if hasNull {
		e.joiners[workerID].onMissMatch(outerRow, joinResult.chk)
		return true, joinResult
	}
	e.hashTableValBufs[workerID] = e.hashTable.Get(joinKey, e.hashTableValBufs[workerID][:0])
	innerPtrs := e.hashTableValBufs[workerID]
	if len(innerPtrs) == 0 {
		e.joiners[workerID].onMissMatch(outerRow, joinResult.chk)
		return true, joinResult
	}
	innerRows := make([]chunk.Row, 0, len(innerPtrs))
	for _, b := range innerPtrs {
		ptr := *(*chunk.RowPtr)(unsafe.Pointer(&b[0]))
		matchedInner := e.innerResult.GetRow(ptr)
		innerRows = append(innerRows, matchedInner)
	}
	iter := chunk.NewIterator4Slice(innerRows)
	hasMatch := false
	for iter.Begin(); iter.Current() != iter.End(); {
		matched, err := e.joiners[workerID].tryToMatch(outerRow, iter, joinResult.chk)
		if err != nil {
			joinResult.err = errors.Trace(err)
			return false, joinResult
		}
		hasMatch = hasMatch || matched

		if joinResult.chk.NumRows() == e.maxChunkSize {
			ok := true
			e.joinResultCh <- joinResult
			ok, joinResult = e.getNewJoinResult(workerID)
			if !ok {
				return false, joinResult
			}
		}
	}
	if !hasMatch {
		e.joiners[workerID].onMissMatch(outerRow, joinResult.chk)
	}
	return true, joinResult
}

func (e *HashJoinExec) getNewJoinResult(workerID uint) (bool, *hashjoinWorkerResult) {
	joinResult := &hashjoinWorkerResult{
		src: e.joinChkResourceCh[workerID],
	}
	ok := true
	select {
	case <-e.closeCh:
		ok = false
	case joinResult.chk, ok = <-e.joinChkResourceCh[workerID]:
	}
	return ok, joinResult
}

func (e *HashJoinExec) join2Chunk(workerID uint, outerChk *chunk.Chunk, joinResult *hashjoinWorkerResult,
	selected []bool) (ok bool, _ *hashjoinWorkerResult) {
	var err error
	selected, err = expression.VectorizedFilter(e.ctx, e.outerFilter, chunk.NewIterator4Chunk(outerChk), selected)
	if err != nil {
		joinResult.err = errors.Trace(err)
		return false, joinResult
	}
	for i := range selected {
		if !selected[i] { // process unmatched outer rows
			e.joiners[workerID].onMissMatch(outerChk.GetRow(i), joinResult.chk)
		} else { // process matched outer rows
			ok, joinResult = e.joinMatchedOuterRow2Chunk(workerID, outerChk.GetRow(i), joinResult)
			if !ok {
				return false, joinResult
			}
		}
		if joinResult.chk.NumRows() == e.maxChunkSize {
			e.joinResultCh <- joinResult
			ok, joinResult = e.getNewJoinResult(workerID)
			if !ok {
				return false, joinResult
			}
		}
	}
	return true, joinResult
}

// Next implements the Executor Next interface.
// hash join constructs the result following these steps:
// step 1. fetch data from inner child and build a hash table;
// step 2. fetch data from outer child in a background goroutine and probe the hash table in multiple join workers.
func (e *HashJoinExec) Next(ctx context.Context, chk *chunk.Chunk) (err error) {
	if e.runtimeStats != nil {
		start := time.Now()
		defer func() { e.runtimeStats.Record(time.Now().Sub(start), chk.NumRows()) }()
	}
	if !e.prepared {
		e.innerFinished = make(chan error, 1)
		go util.WithRecovery(func() { e.fetchInnerAndBuildHashTable(ctx) }, e.finishFetchInnerAndBuildHashTable)
		e.fetchOuterAndProbeHashTable(ctx)
		e.prepared = true
	}
	chk.Reset()
	if e.joinResultCh == nil {
		return nil
	}
	result, ok := <-e.joinResultCh
	if !ok {
		return nil
	}
	if result.err != nil {
		e.finished.Store(true)
		return errors.Trace(result.err)
	}
	chk.SwapColumns(result.chk)
	result.src <- result.chk
	return nil
}

func (e *HashJoinExec) finishFetchInnerAndBuildHashTable(r interface{}) {
	if r != nil {
		e.innerFinished <- errors.Errorf("%v", r)
	}
	close(e.innerFinished)
}

func (e *HashJoinExec) fetchInnerAndBuildHashTable(ctx context.Context) {
	// innerResultCh transfer inner result chunk from inner fetch to build hash table.
	innerResultCh := make(chan *chunk.Chunk, e.concurrency)
	doneCh := make(chan struct{})
	go util.WithRecovery(func() { e.fetchInnerRows(ctx, innerResultCh, doneCh) }, nil)

	// TODO: Parallel build hash table. Currently not support because `mvmap` is not thread-safe.
	err := e.buildHashTableForList(innerResultCh)
	if err != nil {
		e.innerFinished <- errors.Trace(err)
		close(doneCh)
	}
	// wait fetchInnerRows be finished.
	for range innerResultCh {
	}
}

// buildHashTableForList builds hash table from `list`.
// key of hash table: hash value of key columns
// value of hash table: RowPtr of the corresponded row
func (e *HashJoinExec) buildHashTableForList(innerResultCh chan *chunk.Chunk) error {
	e.hashTable = mvmap.NewMVMap()
	e.innerKeyColIdx = make([]int, len(e.innerKeys))
	for i := range e.innerKeys {
		e.innerKeyColIdx[i] = e.innerKeys[i].Index
	}
	var (
		hasNull bool
		err     error
		keyBuf  = make([]byte, 0, 64)
		valBuf  = make([]byte, 8)
	)

	chkIdx := uint32(0)
	for chk := range innerResultCh {
		if e.finished.Load().(bool) {
			return nil
		}
		numRows := chk.NumRows()
		for j := 0; j < numRows; j++ {
			hasNull, keyBuf, err = e.getJoinKeyFromChkRow(false, chk.GetRow(j), keyBuf)
			if err != nil {
				return errors.Trace(err)
			}
			if hasNull {
				continue
			}
			rowPtr := chunk.RowPtr{ChkIdx: chkIdx, RowIdx: uint32(j)}
			*(*chunk.RowPtr)(unsafe.Pointer(&valBuf[0])) = rowPtr
			e.hashTable.Put(keyBuf, valBuf)
		}
		chkIdx++
	}
	return nil
}

// NestedLoopApplyExec is the executor for apply.
type NestedLoopApplyExec struct {
	baseExecutor

	innerRows   []chunk.Row
	cursor      int
	innerExec   Executor
	outerExec   Executor
	innerFilter expression.CNFExprs
	outerFilter expression.CNFExprs
	outer       bool

	joiner joiner

	outerSchema []*expression.CorrelatedColumn

	outerChunk       *chunk.Chunk
	outerChunkCursor int
	outerSelected    []bool
	innerList        *chunk.List
	innerChunk       *chunk.Chunk
	innerSelected    []bool
	innerIter        chunk.Iterator
	outerRow         *chunk.Row
	hasMatch         bool

	memTracker *memory.Tracker // track memory usage.
}

// Close implements the Executor interface.
func (e *NestedLoopApplyExec) Close() error {
	e.innerRows = nil

	e.memTracker.Detach()
	e.memTracker = nil
	return errors.Trace(e.outerExec.Close())
}

// Open implements the Executor interface.
func (e *NestedLoopApplyExec) Open(ctx context.Context) error {
	err := e.outerExec.Open(ctx)
	if err != nil {
		return errors.Trace(err)
	}
	e.cursor = 0
	e.innerRows = e.innerRows[:0]
	e.outerChunk = e.outerExec.newFirstChunk()
	e.innerChunk = e.innerExec.newFirstChunk()
	e.innerList = chunk.NewList(e.innerExec.retTypes(), e.initCap, e.maxChunkSize)

	e.memTracker = memory.NewTracker(e.id, e.ctx.GetSessionVars().MemQuotaNestedLoopApply)
	e.memTracker.AttachTo(e.ctx.GetSessionVars().StmtCtx.MemTracker)

	e.innerList.GetMemTracker().SetLabel("innerList")
	e.innerList.GetMemTracker().AttachTo(e.memTracker)

	return nil
}

func (e *NestedLoopApplyExec) fetchSelectedOuterRow(ctx context.Context, chk *chunk.Chunk) (*chunk.Row, error) {
	outerIter := chunk.NewIterator4Chunk(e.outerChunk)
	for {
		if e.outerChunkCursor >= e.outerChunk.NumRows() {
			err := e.outerExec.Next(ctx, e.outerChunk)
			if err != nil {
				return nil, errors.Trace(err)
			}
			if e.outerChunk.NumRows() == 0 {
				return nil, nil
			}
			e.outerSelected, err = expression.VectorizedFilter(e.ctx, e.outerFilter, outerIter, e.outerSelected)
			if err != nil {
				return nil, errors.Trace(err)
			}
			e.outerChunkCursor = 0
		}
		outerRow := e.outerChunk.GetRow(e.outerChunkCursor)
		selected := e.outerSelected[e.outerChunkCursor]
		e.outerChunkCursor++
		if selected {
			return &outerRow, nil
		} else if e.outer {
			e.joiner.onMissMatch(outerRow, chk)
			if chk.NumRows() == e.maxChunkSize {
				return nil, nil
			}
		}
	}
}

// fetchAllInners reads all data from the inner table and stores them in a List.
func (e *NestedLoopApplyExec) fetchAllInners(ctx context.Context) error {
	err := e.innerExec.Open(ctx)
	defer terror.Call(e.innerExec.Close)
	if err != nil {
		return errors.Trace(err)
	}
	e.innerList.Reset()
	innerIter := chunk.NewIterator4Chunk(e.innerChunk)
	for {
		err := e.innerExec.Next(ctx, e.innerChunk)
		if err != nil {
			return errors.Trace(err)
		}
		if e.innerChunk.NumRows() == 0 {
			return nil
		}

		e.innerSelected, err = expression.VectorizedFilter(e.ctx, e.innerFilter, innerIter, e.innerSelected)
		if err != nil {
			return errors.Trace(err)
		}
		for row := innerIter.Begin(); row != innerIter.End(); row = innerIter.Next() {
			if e.innerSelected[row.Idx()] {
				e.innerList.AppendRow(row)
			}
		}
	}
}

// Next implements the Executor interface.
func (e *NestedLoopApplyExec) Next(ctx context.Context, chk *chunk.Chunk) (err error) {
	if e.runtimeStats != nil {
		start := time.Now()
		defer func() { e.runtimeStats.Record(time.Now().Sub(start), chk.NumRows()) }()
	}
	chk.Reset()
	for {
		if e.innerIter == nil || e.innerIter.Current() == e.innerIter.End() {
			if e.outerRow != nil && !e.hasMatch {
				e.joiner.onMissMatch(*e.outerRow, chk)
			}
			e.outerRow, err = e.fetchSelectedOuterRow(ctx, chk)
			if e.outerRow == nil || err != nil {
				return errors.Trace(err)
			}
			e.hasMatch = false

			for _, col := range e.outerSchema {
				*col.Data = e.outerRow.GetDatum(col.Index, col.RetType)
			}
			err = e.fetchAllInners(ctx)
			if err != nil {
				return errors.Trace(err)
			}
			e.innerIter = chunk.NewIterator4List(e.innerList)
			e.innerIter.Begin()
		}

		matched, err := e.joiner.tryToMatch(*e.outerRow, e.innerIter, chk)
		e.hasMatch = e.hasMatch || matched

		if err != nil || chk.NumRows() == e.maxChunkSize {
			return errors.Trace(err)
		}
	}
}


text:
newsinfo / Banner Story
Banner Story
Bohol quake 'like 32 Hiroshima bombs'
Quake kills at least 97 in Bohol and Cebu
By: Jeannette I. Andrade, Nikko Dizon - @inquirerdotnet
Inquirer Visayas, Philippine Daily Inquirer / 12:00 AM October 16, 2013
LOBOC TOWER. This is what remains of the historic Church of San Pedro tower in Loboc, Bohol province, after a major 7.2-magnitude earthquake struck the region on Tuesday, leaving scores dead and destroying churches and buildings in and around one of the Philippines' major tourist hubs. LOBOC VICE MAYOR PABLIO SUMAMPONG/CONTRIBUTOR
An earthquake with energy equivalent to "32 Hiroshima bombs" jolted the Visayas, and parts of Mindanao and southern Luzon early Tuesday morning, causing centuries-old churches and modern buildings to crumble, disrupting power and phone services, setting off stampedes and killing at least 97 people.
The nuclear bomb dropped over Hiroshima, Japan, on Aug. 6, 1945, packed power equal to 20,000 tons of TNT.
The 7.2-magnitude earthquake struck at 8:12 a.m. with its epicenter at 2 kilometers southeast of Carmen town in Bohol province, known for its chocolate hills and tarsiers.
Offices and schools were closed for a national holiday—the Muslim festival of Eid al-Adha—which may have saved lives.
Bohol and Cebu have declared a state calamity as the death toll rose to 97 in the two provinces, including a 9-year-old girl who died in a stampede that broke out at the queue for the cash transfer program in Pinamungahan town, Cebu.
President Aquino will fly to Bohol and Cebu Wednesday to check on the damage caused by the quake.
Aeta worker lauded for returning money dropped by passenger at Clark airport
P3.2-M 'hot' logs seized from Chinese man, 4 others in Bulacan
"I will be going to Bohol and Cebu tomorrow, and if possible other areas. And if our assessment is there are a lot of other things that are not being taken care of, then we will reconsider the (Korea) visit. But as of this time, the things that have to be done are being done," the President told reporters.
Senior Supt. Dennis Agustin, the Bohol police chief, reported 87 fatalities in the province based on an actual body count. At least nine others were killed in nearby Cebu province and another died on Siquijor Island, according to field reports.
Agustin said Loon town accounted for at least 20 fatalities; San Isidro and Sagbayan, nine fatalities each; Balilihan, Calape and Antequerra, five fatalities each; Tubigon, Inabanga, Bilar and Catigbian, four fatalities each; and Maribojoc, three fatalities.
Agustin said the towns of Clarin, Buenavista, Loay and Albor had two fatalities each. Tagbilaran City also had the same number of fatalities.
The towns of Getafe, Batu-an, Baclayon, Cortes and Talibon each had one fatality.
Aquino presided over an hourlong closed-door executive session of the National Disaster Risk Reduction and Management Council (NDRRMC) at the Office of Civil Defense.
Combined figures from the Bohol provincial police and the NDRRMC showed that at least 164 people were injured in the province.
East Bohol Fault
The Philippine Institute of Volcanology and Seismology (Phivolcs) said the movement of the East Bohol Fault triggered the strongest quake in the Visayas in 23 years.
Phivolcs Director Renato Solidum placed the depth of the tectonic tremor at 33 kilometers.
The US Geological Survey initially reported the quake as having a magnitude of 7.2, but shortly afterward lowered it to 7.1.
By noon, Phivolcs had recorded 137 aftershocks in Carmen and Tagbilaran, the strongest of which was magnitude 4.3 at 9:37 a.m. Intensity IV was felt in Tagbilaran.
Magnitude is the measurement of the energy released by the earthquake, while intensity measures the extent of damage caused by the quake.
Limestone church crumbled
Many roads and bridges were reported damaged, but historic churches dating from the Spanish colonial period suffered the most. Among them is the country's oldest, the 16th-century Basilica of the Holy Child in Cebu, which lost its bell tower.
A 17th-century limestone church in Loboc town, southwest of Carmen, crumbled to pieces, with nearly half of it reduced to rubble.
Bohol Administrator Alfonso Damalerio said two other churches in Maribojoc and Loon were destroyed.
The Provincial Disaster Risk Reduction and Management Council of Bohol also received reports of damage to old churches in Loay, Clarin and Baclayon as well as the belfry in Panglao.
Photos on social media showed extensive damage not only to churches but also to modern buildings, including a university, while major roads had also been torn apart.
In the immediate aftermath of the quake, authorities were struggling to reach or contact damaged areas, with power lines as well as phone networks down, and a clear picture of the disaster had yet to emerge.
Neil Sanchez, head of the Cebu disaster management office, said authorities were trying to confirm reports that a school had collapsed, with an undetermined number of children trapped.
"Communications lines are quite difficult here. Even the disaster risk reduction management office has been damaged. We had to move elsewhere," Sanchez said.
Businesses in Cebu were on a standstill as people rushed out of buildings, homes and hospitals.
Malls and several establishments closed down for the day to allow engineers to check on their buildings. They are expected to resume operations on Wednesday.
CHOCOLATE HILLS. The observation deck used to view Bohol's famous Chocolate Hills lies in ruins after the earthquake. Inset is one of the hills. PHOTOS FROM ROBERT MICHAEL POOLE'S TWITTER ACCOUNT
Classes, flights suspended
Cebu declared a state of calamity and suspended classes in both private and public schools on Wednesday to allow school officials to check on the buildings.
Operations at Mactan Cebu International Airport and Bohol's Tagbilaran airport were halted after the quake struck, as airport safety authorities conducted safety checks.
By 10:30 a.m. on Tuesday, both airports resumed operations. John Andrews of the Civil Aviation Authority of the Philippines said damage was reported at both locations. In the case of Tagbilaran, the second floor ceiling of the terminal collapsed but the debris was already cleared, he said.
Philippine Long Distance Telephone Co. and Globe Telecom said service in earthquake-hit areas continued but noted that operations were likely hindered by the lack of power and damage to their facilities. The companies said engineers are working to restore services.
Ports operations resumed at 1 p.m. after the Coast Guard Cebu Station commander, Weniel Azcuna, lifted a suspension order. He, however, urged passengers bound for Bohol to take the boat to the province's Tubigon town because the passenger terminal in Tagbilaran was damaged.
Bridge collapsed
Bohol Gov. Edgar Chatto said the Abatan Bridge that connected Maribojoc to Tagbilaran City had collapsed. But an alternative route in Antequerra town can be used.
The highway in Cortes particularly in Lilo-an was rendered impassable due to a landslide. A part of Cortes' highway was also damaged.
Municipal halls in Sagbayan was destroyed while the municipal hall in Clarin was damaged.
In Cebu, nine persons were reported killed in the cities of Cebu, Talisay and Mandaue, and in the towns of Ronda and Pinamungahan.
Four people were killed when a portion of the ceiling of the Pasil Fish Market collapsed. Only three fatalities were identified—Leona Cabarrubias, Rondilino Bondoc and Condrado Perez.
Cabarrubias was identified by her son-in-law, Douglas Encabo, who went looking for her in the market which was cordoned by the police.
Encabo said his mother-in-law was selling fish in the market when the tragedy happened.
Reports from Cebu City said 53 people were brought to Cebu City Medical Center (CCMC) for minor cuts and bruises.
Patients evacuated
At least 250 patients of CCMC were evacuated after cracks were found in the hospital. Most of the patients were transferred to the nearby Pahina Central gym. Others stayed under the tents placed on the sidewalk near CCMC.
Eight patients with critical cases were taken to the other hospitals.
A fatality in Cebu City, Aurora Abellar Repe, 64, died after she was hit by a concrete wall in Barangay (village) Sawang Calero.
Four-year-old Shaisha Mia Patiluna was killed in a stampede on Tuesday morning when people panicked after they felt the earth shaking while they were lining up to receive cash assistance from the government's Pantawid Pamilyang Pilipino Program (4Ps) in Pinamungahan town, Cebu.
A separate stampede also occurred in Toledo City where the Department of Social Welfare and Development personnel were distributing the cash doles when the earthquake hit. At least 20 people were hurt.
Ethel Natera, information officer of the provincial government, identified two of the fatalities as Mordencia Lumera, 80, of Ronda town and Leio Planos of Talisay.
She said Planos was killed while his two companions were wounded when their vehicle was hit by falling debris in Talisay.
A woman was also killed after she was hit by a glass decor at the fish section of the new public market in Barangay Centro, Mandaue City.
Roger Paller, Mandaue information officer, said 39 others were wounded by glass shards.
At least 3,000 people from Cebu City's coastal barangays were evacuated to nearby gyms and church grounds. These were in Pasil, Sawang Calero, Duljo Fatima and San Nicolas.
INC towers destroyed
Two towers of Iglesia ni Cristo (INC) on General Maxilum Avenue in Cebu City collapsed while cracks were found on the walls of Fort San Pedro, the Bureau of Customs building and approaches to the flyover in Barangay Mambaling.
In Iloilo, two persons were hurt.
One of them was a 50-year-old woman who fell from a scaffolding while overseeing repairs at her home in Barangay Tabuc Suba in Jaro District.
Iloilo City Mayor Jed Patrick Mabilog ordered the suspension of classes to allow the inspection of school buildings for damage and structural integrity.—Reports from Carine M. Asutilla, Doris C. Bongcac and Connie E. Fernandez, Nestor P. Burgos Jr., Jhunnex Napallacan and Carmel Matus, Inquirer Visayas; Miguel R. Camus, Tarra Quismundo and Cynthia Balana in Manila; AP and AFP
20 dead, power down as 7.2 quake hits Bohol
Phivolcs records 110 aftershocks
Netizens post scenes from Bohol quake
Bohol quake felt in much of Mindanao
Cebu, Bohol suspend classes
Originally posted: 2:17 pm | Tuesday, October 15th, 2013
Drilon dares COA to file raps if DAP funds were misused
TAGS: Bohol earthquake, cebu earthquake, News, Regions


The September edition of the Porsche Christophorus Customer Magazine, issue-378, will appear for the first time in its 65-year history in six different cover versions. Delius Klasing is now launching a six-pack containing all six titles in an elegant slip cover to be sold in book shops. In other words: six identical issues with six different covers.
New York-based star photographer Martin Schoeller, one of the most famous and influential portrait photographers in the world, produced portraits of all six LMP1 drivers in the FIA World Endurance Championship (WEC) during the six-hour race on the Nürburgring in July 2016: the drivers were Mark Webber, Neel Jani, Brendon Hartley, Marc Lieb, Timo Bernhard and Romain Dumas.
This photo project involved photographing the drivers in a mobile photo studio immediately after they had climbed out of the cockpit of the Porsche 919 hybrid-racing car. Schoeller explained: "I wanted to feel, understand and experience what goes on there – how exhausted the drivers feel after racing, how disappointed they are when they loose and how euphoric they are when they win." Consistently working with analog technology and producing his pictures on film, Scholler has succeeded in capturing the strain on the drivers' faces from long-distance races. All six LMP1 driver portraits are now to be presented in Christophorus issue no. 378.


Bay Medical Company was established in 1994 to provide great products to the medical and health users. Since then, we added a large warehouse and many high quality products with excellent service. Please continue to visit our website as we change our online appearance and information that we provide. Call us at 415-508-0900 to get more information about a product you need.
Bay Medical Company ensures that every item we provide our customers is sourced from the most trusted medical supply and equipment manufacturers. By implementing stringent quality guidelines, we assure you that we provide only products that have passed our high quality standards.
We at Bay Medical Company envision ourselves as not only the first medical supplies provider you think of whenever you need medical supplies. More importantly, we see ourselves as your partner of choice in providing the best products to your customers. To achieve this vision, we utilize all our best efforts to deliver the highest quality medical supplies while constantly improving on the efficiency and quality of service we offer to you, our most valued customers.


Win tickets to support our Lionesses at Meadow Lane!
Nottinghamshire FA is giving you the chance to win 10x tickets for your team to see the England Women's team take on Brazil on 6th October.
We are thrilled that the first of their three home friendly international games, ahead of the 2019 FIFA Women's World Cup, is taking place in Nottingham, and we want your team to be there to support!
To be in with a chance of winning simply tweet us @nottsfa with a picture or video of you showing your support for our Lionesses with the hashtag #Support4Lionesses.
Please send in your entries by Tuesday 2nd October, and be as creative as possible!
For more information on the competition please contact Saffron Smith on saffron.smith@nottinghamshirefa.com.
Are you a coach for a female team?
The Nottingham Women's High Performance Centre are holding a workshop for coaches in the female game before the match.
100 Years on, Armistice 1918 Football and the Celebration of Peace.
Linby Colliery Welfare FC to unveil brand new playing surface at Church Lane.


The Future Market is a showcase for concept food products from the year 2065. Each of these products will explore the evolution in production and consumption we may see deep into the future. The full line of concept products is in development for our digital and physical store.
After decades of large-scale, mono-culture farming, the soil and environment of 2065 can no longer bear the stress of these 'old-world' practices. Fossil fuel shortages have made artificial fertilizer a scarce commodity, and the agribusiness industry has been forced to change its production methods.
That's why we believe the consumers of 2065 will demand sustainable food practices in a mainstream way. Big food will be forced to step up and abandon its use of major ingredients (wheat, corn, soy…) for every season and location.
The Three Sisters are corn, beans, and squash–crops that Native Americans have been planting together for over 6,500 years to sustain themselves and the planet. Growing these crops together is a form of Polyculture, an agricultural technique where multiple crops are planted together to mimic the biodiversity found in natural ecosystems. Polycultures rely on the natural order of biodiverse systems to grow food that's naturally sustainable and resilient.
Not only are the Three Sisters good for the Earth, but these three crops contain complex carbohydrates, essential fatty acids and all 8 essential amino acids, which makes for a highly nutritious and complete, plant-based meal.
When Polyculture replaces Monoculture, Big Food equals Good Food.


We just posted a new article to improve your springtime success on warmwater streams and lakes. It's The Spring Run Southern Style: White Bass! Click on "Articles" to read it and enjoy great fishing this spring.
« On the Move . . .


A head-on collision occurs when two cars traveling in opposite directions crash into each other. These auto accidents are among the most dangerous because the force of the impact is doubled due to the traveling speed of each vehicle. Therefore, even a relatively slow auto accident with each car traveling at just 25mph will result in a tremendous impact equal to the force of hitting a wall at 50mph. Considering that most people travel slightly above the speed limit, it is more likely that you will experience a 60-70 mph impact if involved in a head-on collision.
If you or a loved one was involved in a head-on collision and you believe negligence played a role in the accident, contact our experienced Cranston car accident attorney to discuss your legal options. We proudly offer free, initial consultations for all new and potential clients and we are happy to sit down with you and answer your questions. We are available 24/7 to assist you—our attorney even gives out his personal cell phone number so you can rest assured that legal guidance is always just a phone call away.
Call us today at (401) 244-7433 to get started with your complimentary case evaluation!
There are several common causes of head-on collisions. These accidents are most likely to occur when one driver due to inattention or, possibly, drunk driving drifts into the oncoming lane and causes a head-on collision. It can also occur due to inclement weather (ice or snow) and it can occur when one driver attempts to make a left hand turn across traffic without regard for the oncoming vehicle.
Head-on auto accidents account for a large number of fatalities on the road. According to one recent report, head-on auto accidents accounted for 10% of all auto accident deaths in America even though head-on collisions only account for 2% of all accidents.
Common fractures in head-on collisions include ankle and foot fractures, leg fractures, and pelvic fractures. Wrist and elbow injury can also occur depending on the position of your arms on the steering wheel.
Unlike a rear-end accident where the backseat and headrest prevent the passenger from too serious an accident, in a head-on collision, the passenger is thrown forward into the airbag, seatbelt, and if unbelted, the windshield. Airbags will almost certainly deploy in these types of car crashes which can result in additional injuries such as injuries to the eyes and ears. Finally, seatbelts restrict with tremendous force and can cause damage, in the form of bruises, fractures, punctured lungs and hematomas.
Let our firm fight for the just recovery you are owed! Contact our office at (401) 244-7433 to schedule a free consultation with our Cranston auto accident attorney today.


text:
The Present — October 15, 2021
How faster internet could reduce unemployment
If you're looking for work, a new study says having fast internet helps.
Credit: Praveen Kumar Mathivanan / Unsplash
A study examined the economic benefits of giving cheap internet to the poor.
Those getting the discounted internet were more likely to seek and find work.
Fast internet is not a cure-all, but it is a modern necessity on par with water and electricity.
Copy a link to the article entitled http://How%20faster%20internet%20could%20reduce%20unemployment
Share How faster internet could reduce unemployment on Facebook
Share How faster internet could reduce unemployment on Twitter
Share How faster internet could reduce unemployment on LinkedIn
Broadband internet has become vital to modern life. Given how dependent many people are on high-quality internet connections for work, school, and socializing, it is not a stretch to conclude that a good internet connection is a necessity on par with water and electricity.
However, the quality of American internet connections is often lacking. Depending on the exact measure, the U.S. is in the middle of the pack among developed countries when it comes to how well it provides internet access. Also, if you are an American, you are probably paying a little more for internet that is a little slower than the connections in other countries.
As with so many things, the situation is compounded by income inequality. While 86 percent of households earning more than $70,000 per year have a broadband connection, this percentage drops to 56 percent for those making less than $40,000. Underscoring the importance of this is a new study published in the American Economic Journal: Economic Policy that demonstrates how much low-income families benefited from getting broadband access that they lacked previously.
A life without broadband? Perish the thought.
The study, carried out by George Zuo of the University of Maryland, examined families who participated in the Internet Essentials (IE) program offered by Comcast as part of an arrangement that they made with the U.S. government to reduce fears of the possible negative side effects of a merger.
The program offered "15 megabits per second (Mbps) broadband internet for $9.95 per month to families with children eligible for free and reduced-price lunch through the National School Lunch Program (NSLP). The discounted pricing is $20 to $30 lower than typical, nonpromotional prices for equivalent speeds. The program also provides ancillary benefits such as fee waivers and instructional materials to mitigate other financial and psychic costs of connecting online from home."
Since the program was only available in areas where Comcast operated and for families with children getting food aid while having incomes below 185 percent of the federal poverty line, it was possible to compare economic outcomes for this group with a similar one that did not receive the same benefits. The comparative employment rates over time are shown in the following graph.
A graph comparing the employment rate for households enrolled and in areas covered by the IE program. Notice how quickly the employment rate climes for those who could get the program in comparison to those who could not. (Credit: GW Zuo, Am Econ J Econ Policy, 2021.)
It turns out that giving people cheap, affordable internet is good for them. As shown, those eligible for the program who received discounted internet from Comcast were much more likely to become employed than both those in the same area who were ineligible for the program and those who could have qualified for the program but lived in areas not serviced by the provider.
Dr. Zuo explained in his study that the "availability of Internet Essentials led to a 0.9 percentage point increase (1.6 percent) in the probability that an eligible low-income individual was employed. After adjusting for take-up rates, I calculate that enrollees were 8.1 percentage points (14.3 percent) more likely to be employed."
The economic benefits were calculated to be about $2,202 per enrolled household — more than four times the cost of providing the discounted internet service.
Cheap internet is not a cure-all
Unlike previous studies tying improved internet access to people finding high-paying jobs, this study found no evidence that the jobs people gained access to were of substantially higher quality than those they might otherwise have found.
Still, most people cite the internet as the most important tool they have for finding a new job. Improved internet access not only makes the job hunt easier, but for many positions, it makes the hunt possible in the first place. Dr. Zuo concludes his paper by restating the importance of the internet in finding work:
"Those who cannot afford monthly broadband subscriptions are inherently restricted when navigating the modern labor market. These individuals also risk falling behind in ways that extend beyond the labor market. The internet plays a central role in education, access to goods and services, communication, and more."
Economics & WorkTech Trends
Want to live longer? You may need to move
Longevity gets a new motto: location, location, location.
Is Bitcoin really "economic freedom"?
Bitcoin's creator owns five percent of the entire Bitcoin supply, meaning that he has a larger percent of Bitcoin than the U.S. has of gold.
To boost the economy, treat the cause of aging
By slowing down aging, we could reap trillions of dollars in economic benefits.
How much does it cost to start a business? There's a world map for that
UAE is the world's most expensive country to start a business, but it's free in Rwanda.
These 1,000 hexagons show how global wealth is distributed
A cartogram makes it easy to compare regional and national GDPs at a glance.
The power to choose: How Stoicism approaches toxic relationships
Stoicism says that we should change what we can, endure what we must. The company we keep is something we can, and often should, change.


Kick off your summer season with a spectacular Rosé tasting in our garden.
Bring friends to enjoy hot & cold antipasto as well as passed hors d'oeurves in our majestic herb and vegetable garden. Get the summer started with Rosé, all day.
Call 914.478.2800 to reserve your spot as space is limited.
Part of Harvest on Hudson's Friday Night Dinner Series.