Poll workers must have knowledge of the voting technology.
Poll workers must understand the user interface and must be able to troubleshoot problems and enable speech if necessary.
Poll workers must learn how to deal directly with the blind voter.
I'm an ordinary person, just blind. You don't need to raise your voice or address me as if I were a child. Don't ask my spouse questions about what I want or need; ask me directly.
Don't avoid words like "see." I use them too. "I'm always glad to see you."
I use a long white cane or guide dog for travel; please do not feel that it is necessary to move things out of my way. If I am using a cane, do not grab it. Likewise, if I am using a dog, please do not speak to or pet the dog without first asking my permission.
If we are walking together, you are welcome to offer me your arm. However, do not grab my arm; let me take yours. I'll keep a half step behind to anticipate curbs and steps.
If there is something that I need to do, please provide me with directions or information rather than simply doing it for me without telling me.
I don't want pity. But don't talk about the "wonderful compensations" of blindness. My sense of smell, touch, or hearing did not improve when I became blind. I rely on them more and, therefore, may get more information through those senses than you do--that's all.
I'll discuss blindness with you if you're curious, but it's an old story to me. I am a part of our community, and I have as many other interests as you do.
Don't think of me as just a blind person. I'm a person who happens to be blind.
There is no need for me to jump to the front of the line because I am blind. Please expect me to do the same things as all voters. Consider bringing in blind individuals from the local NFB chapter to present the appropriate way to interact with the blind (their personal stories will make a difference).
To find information about your local NFB affiliate, visit our state and local organizations page.
DO NOT perform disability simulations. If not done properly, they send a negative message.
Preserve the right of a blind voter to vote privately. Blind voters have the right to the "secret" ballot. Some voters may choose not to use the voting machines and seek the assistance of sighted poll workers or another designated person of their choice. Blind voters should not be forced to use a particular method of voting over another.
To view or download a video demonstrating some of the above courtesy rules, left click on the link below to view or right click to download.
Use the following checklists to ensure that poll worker training adequately covers the nonvisual election technology operation and user interface. These documents are available in Word, text, ASCII, and Duxbury formats. Right click on the links below to download the desired format.
At a minimum, poll worker training should also include instruction on how to navigate through the audio ballot, how low vision features operate, and how to address potential problems with the nonvisual election technology on election day. These documents are available below in Word, text, ASCII, and Duxbury formats. Right click on the links to download the desired format. For the most up to date training materials, contact the nonvisual election technology manufacturer.
Use the link below to view or download a certificate that may be presented to poll workers upon their successful completion of the poll worker training and awareness curriculum. Left click on the link to view the certificate or right click to download.
Great benefits come from having people with disabilities as poll workers. Consider approaching your local NFB chapter to recruit blind people to work at the polls.
a. Consider placing an announcement on your state's NFB-NEWSLINE® system in order to advertise the need for poll workers (your state NFB-NEWSLINE®Coordinator can help with this).
b. Remind blind individuals that poll worker pay does NOT count against disability benefits.
In many communities, a committee of consumers is used to give feedback on the voting process and poll worker training.
Consider separating the disability awareness/accessibility training out from the general poll worker training (have it on a separate day). This way poll workers are more likely to pay attention specifically to that information. Having at least one poll worker who has had extensive training at each site is suggested.
While blind people do not want to skip the line, some states have laws requiring poll workers to move people with disabilities to the front of the line. Consideration should be given to training the poll workers on offering this rather than forcing it upon voters.
a. A lack of helpfulness among poll workers, assuming that the machine was enough.
b. Only directing people with disabilities to the accessible voting machine rather than treating it as a machine available to all voters (this creates a negative stigma, presents problems in areas where there are few people using the machine, and does not effectively move people through the polling place). Accessible voting machines are for everyone. Consider placing the accessible machine in the middle rather than on an end by itself in order to reinforce this concept.
We hope these suggestions will help you to be better poll workers.


Courses are flexible to meet the needs of the delegates, so whilst course content is listed below, trainers will add any additional material which they feel is relevant on the day.
Conflict in the workplace always has a number of causes. In this course, trainers discuss ideas about how to manage a difficult relationship with the another person in order to change the dynamic. Even if you don't always achieve your objective, you will be in a position to manage the outcome.
How personal safety can be compromised.
What are good interpersonal skills?
Understanding an individual's natural response to Threat.
Awareness of body language during conflict.
Staying calm and managing personal responses.
Acknowledging the other person's point of view.
Using simple and practical strategies to staying composed.
This Course is tailored to meet organisation requirements and is based on a full training needs analysis.


This code sample is named GetPhoneNumber. It demonstrates how to retrieve a mobile device's phone number.
The application entry point (message box containing phone number if available).
For this sample, it is assumed that the mobile device uses a SIM with the device's phone number programmed into it. Some devices do not store their phone number on a SIM. For these devices, there is no way to programmatically determine the device's phone number and this sample will not successfully return the number.
This application does not need to run Privileged (i.e., it does not need to be signed with a certificate from the privileged store).


Leeks are like delicate onions. They add their rich but subtle flavor to everything from creamy sauces to soups and stews. They're a must for any food enthusiast's garden. The best place for growing Leeks is in full sun in fertile, well-drained soil. When planting Leeks in the garden, make a shallow trench (about 4-5 in. deep) and place the plants inside, spacing about 6 in. apart and covering with only a light amount of soil. This frost-hardy plant can be harvested long after many other garden vegetables.
A perfect variety of Leek for the home gardener. American Flag has thick, 3 in. wide, blue-green leaves with large, 10-15 in. long, creamy white stems. Delicious in soups, stir fries, salads and stews. Very hardy.


text:
Home » Lakeside Surfaces, Inc. succeeds with state-of-the-art technology
Lakeside Surfaces, Inc. succeeds with state-of-the-art technology
A little more than 20 years ago, Lakeside Surfaces Inc. of Norton Shores, MI, began in the garage of owner Rob Riegler, and today the company is a fully integrated digital shop with the latest generation of technology in the marketplace
Photo © 2013 Lakeside Surfaces Inc. In operation since 1992, Lakeside Surfaces Inc. of Norton Shores, MI, has enjoyed steady growth over the years. One of the company's most significant investments has been a double-table Fusion bridge saw/waterjet from Park Industries.
The company processes high-end stonework for homes throughout Michigan and parts of Ohio. Photos courtesy of Chuck Heiney Photography © 2013 Mike Schaap Builders Inc.
Some projects utilize a combination of natural stone and quartz surfacing. Photo © 2013 Designs by Dawn
Photo © 2013 Lakeside Surfaces Inc. Lakeside Surfaces Inc. offers stone from the Artisan Collection as well as other options.
Photo © 2013 Lakeside Surfaces Inc. The Fusion runs on five axes, which allows it to make turns and rotate for angled cuts used in drop-miter products. "This prevents the need for a 45-degree angled cut on a CNC, which is much less efficient," explained Rob Riegler of Lakeside Surfaces.
Photo © 2013 Lakeside Surfaces Inc. After being cut to size, the parts are placed onto one of four CNCs, three of which are single-bed Titans from Park Industries.
Photo © 2013 Lakeside Surfaces Inc. The efficiency of the waterjet has freed up space and time on the CNCs, which can focus on advanced edge profiling.
Photo © 2013 Lakeside Surfaces Inc. Tooling for the CNCs is from Granite City Tool. "Our shop uses an abrasive tooling process that includes seven tools per operation, typically four diamonds and three polish wheels, or occasionally five and two," said Kevin Dumont, Production Manager.
Photo © 2013 Lakeside Surfaces Inc. The shop can process a total of 1,000 square feet of slabwork per day.
Photo © 2013 Lakeside Surfaces Inc. Material handling throughout the shop is performed using a series of three overhead cranes and hand operated vacuum lifts from Anver.
Photos © 2013 Lakeside Surfaces Inc. Slabsmith technology allows the company to create finished products with better flow of grain and patterning, while also increasing yield. "When paired with our state-of-the-art inspection center, our ability to work with partials and color match materials has risen to a whole new level," Riegler said. "The center has four different light configurations and 50 bulbs to mimic various light sources and angles."
Templating is done using the Laser LT-55 XL system from Laser Products. This last upgrade to lasers has further increased efficiency, accuracy and the company's versatility in the field. In addition, the company's template teams utilize tablets on site to pre-compose its engineering drawings, which allows that department to push even more square footage than ever before.
Michael Reis
KEYWORDS bridge saws / CNC stoneworking / granite countertops
For aspiring fabricators, the story of Lakeside Surfaces Inc. of Norton Shores, MI, is a model of how to grow a business: start small, grow intelligently, ride out the tough times, and stay prepared for the future. Today, the company is a leading processor in its region, and it is poised for sustained long-term growth.
Lakeside Surfaces Inc. is primarily focused on custom-designed countertops for residential homes. "The vast majority of our work is 'hard' surfaces produced using quartz products, but we also specialize in granite, soapstone, marble and occasionally even semi-precious materials," explained Rob Riegler, President of Lakeside Surfaces Inc. "Additionally, we fabricate more complex products like tub and fireplace surrounds, full-height backsplashes, shower walls and innovative options including mitered drop panels and stacked chiseled edges. Smaller entities of Lakeside Surfaces Inc. include fabrication of acrylic countertops — solid surfaces — as well as custom parts in both hard and solid surface for commercial installations and large development projects.
"Our longstanding relationship with Cambria is extremely important to us," Riegler went on to say. "We began doing business with them in April of 2004, then in 2011 we were welcomed into an exclusive partnership. Being a member of the Lexus Partner Program has empowered us to build our fabrication model bigger and stronger while staying true to the customer service principles that are important to both us, and to Cambria."
The business was founded by Riegler more than 20 years ago. "Rob started the business in 1992, and he was doing Corian," said Matt Neiger, Vice President at Lakeside. "In the late '90s, he was involved with some of the Big Box stores, and DuPont Zodiaq was just starting to come out, and they asked him if he was interested in purchasing machinery to do quartz. He was the first to work with Zodiaq and quartz in Michigan."
"Lakeside is truly a textbook American success story," Riegler added. "The early years of the business were operated out of my garage. We have always been a fabricator of countertop solutions, but the product mix and approach to the market has changed quite a bit since our inception."
Inside the shop
On the fabrication floor, primary cutting is completed using a double-table Park Fusion combination bridge saw/waterjet. The machine runs on five axes, which allows it to make turns and rotate for angled cuts used in drop-miter products. "This prevents the need for a 45-degree angled cut on a CNC, which is much less efficient," Riegler explained. "Using the Fusion has freed up a ton of space and time on our CNCs, which are doing edge profiling. Additionally, the waterjet, which collaborates with the saw on basic parts, features 60,000 psi for creating extremely elaborate parts and inlays."
After being cut to size, the parts are placed onto one of our four CNCs, three of which are single-bed Titans from Park Industries, with the fourth being a Speed 3 from CMS/Brembana.
Tooling for the CNCs is from Granite City Tool. "Our shop uses an abrasive tooling process that includes seven tools per operation, typically four diamonds and three polish wheels, or occasionally five and two," said Kevin Dumont, Production Manager. "The series of tools performs a progressive shave followed by a finish polish with the goal of coming off the machine ready to install. Our machines allow us the ability to utilize 204 tools, and the entire process is water intensive. This includes machine operations as well as any hand polishing. Our polishing department uses a series of 3-inch polish pads, typically in a five-step process, but very little has to be hand finished."
While the main workpieces are processed on the CNCs, backsplashes and similar parts are polished using a Fastback, also from Park Industries. The Fastback is a straight line polish machine that completes parts that require a flat eased, mirror finish.
Material handling throughout the shop is performed using a series of three overhead cranes and hand operated vacuum lifts from Anver.
"Because our entire process is water intensive, we have a robust water reclamation system," Riegler said. "We have recently upgraded our system and now reclaim nearly 100% of the 200,000 gallons of water we use every day back into holding tanks. Gray water is used as a halo spray that cools the tooling and prevents dust, while clear water is run through five micron filters and sent through the vacuum pumps and center spindles of the CNCs."
A new level of technology
With all of the new equipment in place, Lakeside Surfaces Inc. is achieving optimal efficiency. "In the last few years, we have really turned a corner in making our process more efficient," Riegler said. "Most recently, we have simply been adding capacity, but prior to that, we made investments in technology that have allowed us to cut full days off our production time. One of the most significant was moving away from our bridge saw and utilizing the Fusion. Because we can now cut complex parts instead of basic ones, our CNC time, which is in high demand, can be focused almost exclusively on edge processes. This gives us a huge boost to our square footage capacity. The Fastback is also a fairly recent addition and allowed us to free up a tremendous amount of time in our polish department, which is also in high demand."
Lakeside Surfaces Inc.
Norton Shores, MI
Type of work: Fabrication and installation of quartz surfacing and natural stone for a wide range of applications
Technology: Fusion combination bridge saw/waterjet from Park Industries of St. Cloud, MN; three Titan CNC stoneworking centers from Park Industries; Speed 3 CNC stoneworking center from CMS/Brembana of Caledonia, MI; CNC tooling from Granite City Tool of Waite Park, MN; Fastback edger from Park Industries; hydraulic lifts from Anver of Hudson, MA; Laser LT-55 XL templating systems from Laser Products of Romeoville, IL; Slabsmith system from Northwood Designs of Antwerp, NY
Number of Employees: 80
Production Rate: 1,000 square feet of stone and quartz surfacing per day
Lakeside has also made investments beyond heavy equipment. "Apart from our actual manufacturing process, we have implemented two powerful additions to our process that have a dramatic impact on our yield, which gives us more capital to invest in further process improvements," Riegler said. "Slabsmith technology allows us to create exceedingly beautiful products, with better flow of grain and patterning, and it also helped our yield. When paired with our state-of-the-art inspection center, our ability to work with partials and color match materials has risen to a whole new level. The center has four different light configurations and 50 bulbs to mimic various light sources and angles. We want to show how natural light will affect the way a material looks; for example, early morning versus late afternoon light."
"We can comfortably fit three slabs in the inspection station," Riegler added. "One person can manipulate the three slabs and see how they match up, and they can take gloss readings. Color match is one thing, but the sheen and shine is also important. We want to see the seams and how the tops will line up together."
Templating is done using the Laser LT-55 XL system from Laser Products, which is the third generation of the company's templating process, and each one has been a significant upgrade. Moving to a digital process a few years ago saved a great deal of company resources over stick templating, but this last upgrade to lasers has further increased efficiency, accuracy and the company's versatility in the field. In addition, the company's template teams utilize tablets on site to pre-compose its engineering drawings, which allows that department to push even more square footage than ever before.
Intelligent growth
As the economy continues to rebound, Lakeside Surfaces Inc. is carefully planning its future investments to accommodate growth. "The end game is capacity, but also efficiency," Riegler said. "It takes careful planning to make the best decision based on the current state of the production model. Sometimes it is more cost-effective to add a machine; other times it makes more sense to improve the efficiency of the process. In both cases, we are rewarded with increased capacity, so the decision really comes down to maximizing the return on our investment. While some of the work that we can do now easily may have been cost prohibitive a few years ago, most of our investments have merely improved our process as opposed to giving us the ability to create new products."
Currently, Lakeside Surfaces Inc. has around 80 employees, and the company is implementing a system in which some workers are cross-trained. "In the past, we have relied on specializations within departments," Riegler said. "Unique processes were handled by specific employees with specialized training. Recently, we have been moving to streamline all processes and training within each department. It has become clear that the better we can equip teams of people, the more efficient the entire workflow gets."
When searching for new employees, Lakeside Surfaces Inc. utilizes a range of methods. "Our human resources department utilizes a wide variety of strategies to find quality employees," Riegler said. "These include partnerships with staffing agencies, advertising in local classifieds and direct postings on our website, among other methods. We also take advantage of aptitude and personality tests to assist in personnel decisions."
Once hired, the company has a strong and diverse training program for all new employees.
"We want people to know where they fit in with the vision of the company," Neiger added. "The success of our business is about people. We make countertops, but what we really do is create careers here. As we've brought people on, the good employees might know someone else who is good, and it really has created a great environment. They know there are high expectations, but it is also a place where they can have a career; people get real value out of working here."
Lakeside Surfaces Inc. reports a capacity of approximately 1,000 square feet of material processed per day. "We don't really measure in kitchens or projects because it doesn't give an accurate picture of our capacity, especially when you have to factor in the smaller vanities and OEM parts we manufacture," Riegler said. "Our main customer base is independent kitchen and bath dealers. In rare cases, we service builders, architects and designers, provided they meet a very specific set of criteria. It is very important to us that we foster long-term relationships with our primary customer base, which has always been independent kitchen and bath dealers."
The company services all of Michigan as well as some areas of Ohio. "We regularly travel all over the state to install or deliver countertop projects," Schelhas said.
Lakeside Surfaces Inc. is a member of the Artisan Group, a North American network of independent countertop professionals. "We've been involved for a little over two years, and that's a great group to be a part of," explained Ray Schelhas, Director of Marketing. "They supply us with the Artisan Collection, which is our most popular source of granite. We collectively work with 34 other members, and through AG&M, we essentially import our own stone. We have access to some unique products as well, such as soapstone. Because of the buying power, that the group has, we've been able to consistently supply soapstone, which is becoming increasingly popular in our region, especially as outdoor kitchens become popular."
With the recession well past them, the staff at Lakeside Surfaces Inc. is focused on long-term success. "Rob [Riegler] has viewed everything we have faced as an opportunity to improve and move the business forward," Schelhas said. "The biggest challenges we face are the same things facing all businesses these days. The uncertainty related to the economic and political climate make it hard to really invest and grow. We have been able to systematically improve and grow our fabrication with careful planning and hard work. In 2008, we had about 45 employees, and we laid off half of the workforce during the recession. Since that time, we've had a renewed commitment to make sure the business is financially sound, no matter what happens with the economy. Sales have tripled over the last four years, and it has been quite a ride."
"There is a balance between seizing opportunities and not putting your business in a difficult position if the economy were to turn again," Neiger added. "We saw this during the recession, when we saw some good companies go under. There is so much opportunity here, but we have to temper our enthusiasm."
Going through the economic downturn also gave the staff at Lakeside a renewed approach to the company culture. "Our priorities changed from countertops to people," Riegler said. "We started on focusing on creating careers instead of jobs. Back in 2009, we had to have a lot of faith that this would be more than a countertop company. We had to have faith in the vision of the company and faith in one another. Ultimately, that's who we are as a company, and that has set us apart from our competitors — great vision and great people."
Recent Articles by Michael Reis
Positive showing for StonExpo/Marmomacc Americas
Bridging the past and future of Bluestone
Reviving a classic quarry
Union Marble of Westbury, NY, is equipped for high-end fabrication
"Guardians" sculpture in New York City is example of one-of-a-kind fabrication on display in Manhattan
Growing a family business with state-of-the-art technology
Making A Name With State-Of-The-Art Equipment
Establishing itself with state-of-the-art machinery
Re-Emerging:<br>Launching with state-of-the art equipment

redpajama_set_name: RedPajamaCommonCrawl


text:
using std::shared_ptr;
using std::vector;

int BettingTreeBuilder::NearestAllowableBetTo(int old_pot_size, int new_bet_to, int last_bet_size) {
  int min_bet = last_bet_size;
  if (min_bet < betting_abstraction_.MinBet()) {
    min_bet = betting_abstraction_.MinBet();
  }
  int lower_bound = old_pot_size / 2 + min_bet;
  int below;
  for (below = new_bet_to - 1; below >= lower_bound; --below) {
    if (betting_abstraction_.AllowableBetTo(below)) break;
  }
  int stack_size = betting_abstraction_.StackSize();
  int above;
  for (above = new_bet_to + 1; above < stack_size; ++above) {
    if (betting_abstraction_.AllowableBetTo(above)) break;
  }
  if (below >= lower_bound) {
    double below_pot_frac = (below - old_pot_size) / (double)old_pot_size;
    // There should always be a valid above bet because all-in is always
    // allowed so if the original new-bet-to was all-in then we wouldn't get
    // here.
    double above_pot_frac = (above - old_pot_size) / (double)old_pot_size;
    double actual_pot_frac = (new_bet_to - old_pot_size) / (double)old_pot_size;
    // Use Sam's translation method
    double below_prob = ((above_pot_frac - actual_pot_frac) *
			 (1.0 + below_pot_frac)) /
      ((above_pot_frac - below_pot_frac) *
       (1.0 + actual_pot_frac));
    if (below_prob >= 0.5) {
      return below;
    } else {
      return above;
    }
  } else {
    return above;
  }

}

// Some additional tests get performed later.  For example, if a bet is a raise, we check later that
// the raise size is valid (at least one big blind, at least as big as the previous bet).
void BettingTreeBuilder::GetNewBetTos(int old_bet_to, int last_bet_size,
				      const vector<double> &pot_fracs, int player_acting,
				      int target_player, bool *bet_to_seen) {
  int all_in_bet_to = betting_abstraction_.StackSize();
  // Already all-in; no bets possible
  if (old_bet_to == all_in_bet_to) return;
  int old_pot_size = 2 * old_bet_to;
  if ((! betting_abstraction_.Asymmetric() &&
       old_pot_size >= betting_abstraction_.OnlyPotThreshold()) ||
      (betting_abstraction_.Asymmetric() && player_acting == target_player &&
       old_pot_size >= betting_abstraction_.OurOnlyPotThreshold()) ||
      (betting_abstraction_.Asymmetric() && player_acting != target_player &&
       old_pot_size >= betting_abstraction_.OppOnlyPotThreshold())) {
    // Only pot-size bets allowed.  (Well, maybe all-ins also.)  So skip code below that looks at
    // pot_fracs.
    if (old_pot_size > 0) {
      int new_bet_to = 3 * old_pot_size / 2;
      if (new_bet_to > all_in_bet_to) {
	bet_to_seen[all_in_bet_to] = true;
      } else {
	bet_to_seen[new_bet_to] = true;
      }
    }
  } else {
    int num_pot_fracs = pot_fracs.size();
    for (int i = 0; i < num_pot_fracs; ++i) {
      double frac = pot_fracs[i];
      double double_bet_size = old_pot_size * frac;
      int bet_size = (int)(double_bet_size + 0.5);
      if (bet_size == 0) continue;
      int new_bet_to = old_bet_to + bet_size;
      int new_pot_size = 2 * new_bet_to;
      if (betting_abstraction_.CloseToAllInFrac() > 0 &&
	  new_pot_size >= 2 * all_in_bet_to * betting_abstraction_.CloseToAllInFrac()) {
	// Don't add the bet, but add an all-in bet instead
	bet_to_seen[all_in_bet_to] = true;
      } else if (new_bet_to > all_in_bet_to) {
	bet_to_seen[all_in_bet_to] = true;
      } else {
	if (betting_abstraction_.AllowableBetTo(new_bet_to)) {
	  bet_to_seen[new_bet_to] = true;
	} else {
	  int nearest_allowable_bet_to =
	    NearestAllowableBetTo(old_pot_size, new_bet_to, last_bet_size);
	  bet_to_seen[nearest_allowable_bet_to] = true;
	}
      }
    }
  }
}

// We are contemplating adding a bet.  We might or might not be facing a
// previous bet.
void BettingTreeBuilder::HandleBet(int street, int last_bet_size, int last_bet_to, int new_bet_to,
				   int num_street_bets, int player_acting, int target_player,
				   int *terminal_id, vector< shared_ptr<Node> > *bet_succs) {
  // New bet must be of size greater than zero
  if (new_bet_to <= last_bet_to) return;

  int new_bet_size = new_bet_to - last_bet_to;

  bool all_in_bet = (new_bet_to == betting_abstraction_.StackSize());

  // Cannot make a bet that is smaller than the min bet (usually the big
  // blind)
  if (new_bet_size < betting_abstraction_.MinBet() && ! all_in_bet) {
    return;
  }

  // In general, cannot make a bet that is smaller than the previous
  // bet size.  Exception is that you can always raise all-in
  if (new_bet_size < last_bet_size && ! all_in_bet) {
    return;
  }

  // For bets we pass in the pot size without the pending bet included
  shared_ptr<Node> bet =
    CreateNoLimitSubtree(street, new_bet_size, new_bet_to, num_street_bets + 1,
			 player_acting^1, target_player, terminal_id);
  bet_succs->push_back(bet);
}

// May return NULL
shared_ptr<Node> BettingTreeBuilder::CreateCallSucc(int street, int last_bet_size, int bet_to,
						    int num_street_bets, int player_acting,
						    int target_player, int *terminal_id) {
  // We advance the street if we are calling a bet
  // Note that a call on the final street is considered to advance the street
  bool advance_street = num_street_bets > 0;
  // This assumes heads-up
  advance_street |= (Game::FirstToAct(street) != player_acting);
  shared_ptr<Node> call_succ;
  int max_street = Game::MaxStreet();
  if (street < max_street && advance_street) {
    call_succ = CreateNoLimitSubtree(street + 1, 0, bet_to, 0, Game::FirstToAct(street + 1),
				     target_player, terminal_id);
  } else if (! advance_street) {
    // This is a check that does not advance the street
    call_succ = CreateNoLimitSubtree(street, 0, bet_to, num_street_bets, player_acting^1,
				     target_player, terminal_id);
  } else {
    // This is a call on the final street
    call_succ.reset(new Node((*terminal_id)++, street, 255, nullptr, nullptr, nullptr, 2, bet_to));

  }
  return call_succ;
}

shared_ptr<Node> BettingTreeBuilder::CreateFoldSucc(int street, int last_bet_size, int bet_to,
						    int player_acting, int *terminal_id) {
  int player_remaining = player_acting^1;
  shared_ptr<Node> fold_succ;
  // Player acting field encodes player remaining at fold nodes
  // bet_to - last_bet_size is how many chips the opponent put in
  fold_succ.reset(new Node((*terminal_id)++, street, player_remaining, nullptr, nullptr, nullptr, 1,
			   bet_to - last_bet_size));
  return fold_succ;
}

// There are several pot sizes here which is confusing.  When we call
// CreateNoLimitSuccs() it may be as the result of adding a bet action.
// So we have the pot size before that bet, the pot size after that bet,
// and potentially the pot size after a raise of the bet.  last_pot_size is
// the first pot size - i.e., the pot size before the pending bet.
// current_pot_size is the pot size after the pending bet.
void BettingTreeBuilder::CreateNoLimitSuccs(int street, int last_bet_size, int bet_to,
					    int num_street_bets, int player_acting,
					    int target_player, int *terminal_id,
					    shared_ptr<Node> *call_succ,
					    shared_ptr<Node> *fold_succ,
					    vector< shared_ptr<Node> > *bet_succs) {
  // *fold_succ = NULL;
  // *call_succ = NULL;
  bet_succs->clear();
  bool no_open_limp =
    ((! betting_abstraction_.Asymmetric() &&
      betting_abstraction_.NoOpenLimp()) ||
     (betting_abstraction_.Asymmetric() && player_acting == target_player &&
      betting_abstraction_.OurNoOpenLimp()) ||
     (betting_abstraction_.Asymmetric() && player_acting != target_player &&
      betting_abstraction_.OppNoOpenLimp()));
  if (! (street == 0 && num_street_bets == 0 &&
	 player_acting == Game::FirstToAct(0) && no_open_limp)) {
    *call_succ = CreateCallSucc(street, last_bet_size, bet_to, num_street_bets,
				player_acting, target_player, terminal_id);
  }
  bool can_fold = (num_street_bets > 0);
  if (! can_fold && street == 0) {
    // Special case for the preflop.  When num_street_bets is zero, the small
    // blind can still fold.
    can_fold = (player_acting == Game::FirstToAct(0));
  }
  if (can_fold) {
    *fold_succ = CreateFoldSucc(street, last_bet_size, bet_to, player_acting,
				terminal_id);
  }

  bool our_bet = (target_player == player_acting);
#if 0
  int current_pot_size = last_pot_size + 2 * last_bet_size;
  vector<int> new_pot_sizes;
  if (betting_abstraction_.AllBetSizeStreet(street)) {
    if (num_street_bets < betting_abstraction_.MaxBets(street, our_bet)) {
      GetAllNewPotSizes(current_pot_size, &new_pot_sizes);
    }
  } else if (betting_abstraction_.AllEvenBetSizeStreet(street)) {
    if (num_street_bets < betting_abstraction_.MaxBets(street, our_bet)) {
      GetAllNewEvenPotSizes(current_pot_size, &new_pot_sizes);
    }
  }
#endif
  int all_in_bet_to = betting_abstraction_.StackSize();
  bool *bet_to_seen = new bool[all_in_bet_to + 1];
  for (int bt = 0; bt <= all_in_bet_to; ++bt) {
    bet_to_seen[bt] = false;
  }

  if (num_street_bets < betting_abstraction_.MaxBets(street, our_bet)) {
    if ((! betting_abstraction_.Asymmetric() &&
	 betting_abstraction_.AlwaysAllIn()) ||
	(betting_abstraction_.Asymmetric() && our_bet &&
	 betting_abstraction_.OurAlwaysAllIn()) ||
	(betting_abstraction_.Asymmetric() && ! our_bet &&
	 betting_abstraction_.OppAlwaysAllIn())) {
      // Allow an all-in bet
      bet_to_seen[all_in_bet_to] = true;
    }
  }

  if (num_street_bets < betting_abstraction_.MaxBets(street, our_bet)) {
    if ((! betting_abstraction_.Asymmetric() &&
	 betting_abstraction_.AlwaysMinBet(street, num_street_bets)) ||
	(betting_abstraction_.Asymmetric() && our_bet &&
	 betting_abstraction_.OurAlwaysMinBet(street, num_street_bets)) ||
	(betting_abstraction_.Asymmetric() && ! our_bet &&
	 betting_abstraction_.OppAlwaysMinBet(street, num_street_bets))) {
      // Allow a min bet
      int min_bet;
      if (num_street_bets == 0) {
	min_bet = betting_abstraction_.MinBet();
      } else {
	min_bet = last_bet_size;
      }
      int new_bet_to = bet_to + min_bet;
      if (new_bet_to > all_in_bet_to) {
	bet_to_seen[all_in_bet_to] = true;
      } else {
	if (betting_abstraction_.AllowableBetTo(new_bet_to)) {
	  bet_to_seen[new_bet_to] = true;
	} else {
	  int old_pot_size = 2 * bet_to;
	  int nearest_allowable_bet_to =
	    NearestAllowableBetTo(old_pot_size, new_bet_to, last_bet_size);
	  bet_to_seen[nearest_allowable_bet_to] = true;
	}
      }
    }
  }

#if 0
  double multiplier = 0;
  if (num_street_bets < betting_abstraction_.MaxBets(street, our_bet)) {
    multiplier = betting_abstraction_.BetSizeMultiplier(street,
							num_street_bets,
							our_bet);
  }
  if (multiplier > 0) {
    int min_bet;
    if (num_street_bets == 0) {
      min_bet = betting_abstraction_.MinBet();
    } else {
      min_bet = last_bet_size;
    }
    int current_bet_to = current_pot_size / 2;
    int bet = min_bet;
    // We can add illegally small raise sizes here, but they get filtered
    // out in HandleBet().
    while (true) {
      int new_bet_to = current_bet_to + bet;
      int new_pot_size = 2 * new_bet_to;
      if (new_pot_size > all_in_pot_size) {
	break;
      }
      if (betting_abstraction_.CloseToAllInFrac() > 0 &&
	  new_pot_size >=
	  all_in_pot_size * betting_abstraction_.CloseToAllInFrac()) {
	break;
      }
      pot_size_seen[new_pot_size] = true;
      double d_bet = bet * multiplier;
      bet = (int)(d_bet + 0.5);
    }
    // Add all-in
    pot_size_seen[all_in_pot_size] = true;
  }

  // Not using multipliers
  bool no_regular_bets =
    ((! betting_abstraction_.Asymmetric() &&
      current_pot_size >= betting_abstraction_.NoRegularBetThreshold()) ||
     (betting_abstraction_.Asymmetric() &&
      player_acting == target_player &&
      current_pot_size >=
      betting_abstraction_.OurNoRegularBetThreshold()) ||
     (betting_abstraction_.Asymmetric() &&
      player_acting != target_player &&
      current_pot_size >=
      betting_abstraction_.OppNoRegularBetThreshold()));
#endif

  if (num_street_bets < betting_abstraction_.MaxBets(street, our_bet)) {
    const vector<double> &pot_fracs =
      betting_abstraction_.BetSizes(street, num_street_bets, our_bet, player_acting);
    GetNewBetTos(bet_to, last_bet_size, pot_fracs, player_acting, target_player, bet_to_seen);
  }
  vector<int> new_bet_tos;
  for (int bt = 0; bt <= all_in_bet_to; ++bt) {
    if (bet_to_seen[bt]) {
      new_bet_tos.push_back(bt);
    }
  }
  delete [] bet_to_seen;

  int num_bet_tos = new_bet_tos.size();
  for (int i = 0; i < num_bet_tos; ++i) {
    HandleBet(street, last_bet_size, bet_to, new_bet_tos[i], num_street_bets,
	      player_acting, target_player, terminal_id, bet_succs);
  }
}

shared_ptr<Node> BettingTreeBuilder::CreateNoLimitSubtree(int st, int last_bet_size, int bet_to,
							  int num_street_bets, int player_acting,
							  int target_player, int *terminal_id) {
  shared_ptr<Node> call_succ(nullptr);
  shared_ptr<Node> fold_succ(nullptr);
  vector< shared_ptr<Node> > bet_succs;
  CreateNoLimitSuccs(st, last_bet_size, bet_to, num_street_bets, player_acting, target_player,
		     terminal_id, &call_succ, &fold_succ, &bet_succs);
  if (call_succ == NULL && fold_succ == NULL && bet_succs.size() == 0) {
    fprintf(stderr, "Creating nonterminal with zero succs\n");
    fprintf(stderr, "This will cause problems\n");
    exit(-1);
  }
  // Assign nonterminal ID of -1 for now.
  shared_ptr<Node> node;
  node.reset(new Node(-1, st, player_acting, call_succ, fold_succ, &bet_succs, 2, bet_to));
  return node;
}

shared_ptr<Node> BettingTreeBuilder::CreateNoLimitTree1(int target_player, int *terminal_id) {
  int initial_street = betting_abstraction_.InitialStreet();
  int player_acting = Game::FirstToAct(initial_street_);
  int initial_bet_to = Game::BigBlind();
  int last_bet_size = Game::BigBlind() - Game::SmallBlind();

  return CreateNoLimitSubtree(initial_street, last_bet_size, initial_bet_to, 0, player_acting,
			      target_player, terminal_id);
}

redpajama_set_name: RedPajamaGithub


text:
Providing an excellent multifaceted education for people committed to transforming themselves, others, and the world
Philip Brooks
pbrooks@ciis.edu
School of Professional Psychology and Health (SPPH)
EdD, MA, University of Massachusetts
BA, Lake Forest College
BIOGRAPHY Other Interests
Philip Brooks Ed.D., MFT retired from the Integral Counseling Psychology program in 2020 after teaching for over 30 years. He started out teaching Psychosynthesis, the approach that provided the psychospiritual foundation of the ICP program. In 2000 Philip added Therapeutic Communication, and would continue teaching that, mostly on Thursday mornings, for 20 years. In 2010 he added Integral T-Group/Group Dynamics to his teaching portfolio, which soon became a passion for him. The highlight of Philip's experience at CIIS was his contact with students. He was ever amazed by the openness, trust, intelligence and enthusiasm they brought to his classroom year after year. With much appreciation for faculty and staff as well, Philip feels enriched, transformed, and deeply grateful for his years at this vibrant institution. Philip continues his psychotherapy practice in San Francisco, which he maintained concurrently with his academic activities.
The Psychosynthesis approach has been Philip's primary clinical focus for thirty five years. He has taught this psychospiritual approach in Bay Area universities and training organizations, and was the founding director of the Psychosynthesis Training Program which he co-led for seventeen years.. Philip is a member of the Association for the Advancement of Pychosynthesis, which coordinates conferences, publishes a newsletter, and distributes the latest readings and research. (www.aap-psychosynthesis.org) In June, 2010 he will be presenting at the Psychosynthesis conference Creating the World We Want, on the teaching of Psychosynthesis in graduate programs. In his ongoing quest for improving the teaching of psychotherapy skills, Philip conducted a search for instructional videos, helping to create a large collection of videos highlighting both challenging clinical issues as well as various schools of practice. These videos are used extensively by both students and faculty members to augment learning and teaching. He also produced and directed the video series Psychotherapy Live, which offers real time psychotherapy sessions followed by a commentary by both the client and therapist. This series has drawn favorable review from within the CIIS community as well as other colleges and training sites.
Philip founded the ICP Diversity Committee, and has been active in shepherding this committee through its first few years as it provides support for students as well as change strategies for the ICP program. He has also secured funding for people of color who need financial support in order to participate in the program.
Philip has spent several years on the Integral Education Committee, which has been a fruitful time of service. He is intrigued with the exploration of the various ways we practice integral education at CIIS, consistently looking at how we can improve our teaching. Through this group he has also come to know faculty members in other programs, and appreciate the rich contributions they make to life at CIIS.
Occasional teaching at the International School for Psychotherapy, Counseling and Group Leadership in St. Petersburg Russia, where he has adjunct faculty status.
Involvement with hospice. Philip was on the founding Board of Hospice by the Bay, and served there for ten years, two of which he spent as Board Chair. His latest contribution in this arena was teaching guided imagery to hospice nurses at Kaiser.
Participation with Bay Area groups such as the David Brower Youth Awards, the Pachamama Alliance, and numerous other environmental and social action groups.
Buddhist meditation in an ongoing weekly practice group for the past twelve years.


Frisco Gold is the sire of BRKRD Pagemaster and grand sire to MMALP Alvitah, both Futurity Champions with multiple Championship winners. He is also sire to Futurity Champion Eldora's Que Bella.
We purchased Sonata at the 2015 Futurity Sale. Thank you Leanne and Richard Nakashima! This is a lovely, lovely female who can go to work in any top breeding program or jumpstart a new breeding program. Sonata is a fleece machine on a large well proportioned frame with a beautiful 'Rockstar' head. Note Sonata's show record which includes Nationals Best Lock, 2014.
Special Note: Sonata's full brother Tempo is a 4 time Championship/Reserve Championship winner and Judge's Choice winner at the Suri Network Fleece Show for 2014.
Full Accoyo, 6x Champ, Accoyo Goldstar son!
Edan's first and second crop of kids just finished their 2018 Spring show season and WOW!
Thank you, Edan for passing on your luster and density! Looking forward to your 2018 cria.
Posi's sire is multible Futurity Champion producer Eldora's Peruvian Frisco Gold. Frisco Gold is the sire of BRKRD Page Master, who is an 8 time Champion/Resrve Champion and the 2013 Futurity White Reserve Champion male. Frisco Gold also sired Eldora's Que Bella, the 2013 Futurity combined Mixed female Color Champion.


IT'S TIME TEXAS collects two types of personal identification information from users: personal data (such as names and email addresses); And aggregate data (such as information on traffic patterns on the Site, for example, how many users log in to the Site on a daily basis).
Personal data is collected when users provide personal information to IT'S TIME TEXAS, for example when registering for electronic newsletters, creating a user profile, responding to surveys, purchasing IT'S TIME TEXAS items and registering for contests and other promotional opportunities provided by IT'S TIME TEXAS.
Aggregated information, such as the pages that users access or visit and the information voluntarily offered by users, such as survey information and / or site records, is collected through various methods. For example, IT'S TIME TEXAS collects IP addresses. An IP address is a number that is automatically assigned to your computer when you are surfing the Web. Web servers, computers that "serve" web pages, automatically identify your computer by your IP address and when you request an IT'S TIME TEXAS page, our servers register your IP address.
IT IS TIME TEXAS does not link IP addresses to anything personally identifiable, so even though your session will be registered, you will remain anonymous to us. IT'S TIME TEXAS collects IP addresses for the purposes of system administration and to provide aggregate data to advertisers on the volume of use on the Site.
We can also request a username and email address when a user submits a form through the "Contact Us" section of the IT'S TIME TEXAS website so that we can respond to the query. We collect the email address for the sole purpose of responding directly to a specific query at one time.
If personal information is not provided to us, IT'S TIME TEXAS may not be able to provide access to certain content and functionality on the IT'S TIME TEXAS website or provide other information, products or services that may be requested.
We may disclose information when required by law to do so, for example, in response to a court order or subpoena, or when we disclose information to service providers or other group companies that provide support for the operations of our website and that you do not use nor disclose the information for any other purpose.
If we sell all or part of our business or make a sale or transfer of our assets or are involved in a merger or transfer of business, we may transfer user data to a third party as part of that transaction, to the extent permitted by applicable law. law.
We do not allow third-party companies to request or advertise our users. Our intention is to maintain the IT'S TIME TEXAS Community Challenge website free of any direct advertising.
4. Children under 13 years old.
IT'S TIME TEXAS does not to collect or request personal information from people under 13 nor do we allow them to register. If you are under 13, please do not try to register on the IT'S TIME TEXAS Community Challenge website or send any information about you to us, including your name, address, telephone number or email address. No one under the age of 13 can provide any personal information to IT'S TIME TEXAS or on the IT'S TIME TEXAS Community Challenge website. In the event that we learn that we have collected personal information from a child under the age of 13 without verification of parental consent, we will remove that information as quickly as possible. If you believe we have any information from or about a child under 13, please contact us.
We recommend that children under 13 years of age or older ask permission from their parents before sending any information about themselves to anyone via the Internet. IT'S TIME TEXAS may collect and use personally identifiable information, in a manner consistent with the terms of this policy, of users between the ages of 13 and 17. If a user or his parent or guardian changes his mind regarding such use, such user, parent or guardian may instruct us to cease the use of such information by contacting us.
The security of your personal information is important to us. We have implemented appropriate physical, electronic and administrative procedures to safeguard and help prevent unauthorized access, maintain data security and correctly use the information we collect online. When you enter sensitive information, such as your credit card number or our membership subscription form, we encrypt that information using Secure Socket Layer (SSL) technology.
If you decide to donate to IT'S TIME TEXAS, your full name, email address, billing information of your credit card, including the postal address, will be required at the time of purchase. This information is not stored by IT'S TIME TEXAS and, instead, is collected and stored by our payment processing provider for the purpose of processing payments made to IT'S TIME TEXAS. That information is protected with appropriate security and will not be used for other purposes. In addition, our payment processing provider has agreed to maintain the confidentiality, security and integrity of the personal and financial information you obtain from IT'S TIME TEXAS.
It is important to note that this Site contains links to third party websites over which IT'S TIME TEXAS has no control and that such sites may not follow the same privacy policies as IT'S TIME TEXAS. For example, if you click on an ad on this Site, you will be redirected to a totally different site. This may include links from advertisers, content providers and partners who may use the IT'S TIME TEXAS logo and / or style as a result of a co-branding agreement. These sites may send their own cookies to you and may collect data and make uses of it that IT'S TIME TEXAS does not.
We will add your name and address to our "Do Not Contact" list and we will do our best to ensure that we honor your request. Please note that any request to update your personal information may take up to ten days to be processed. If, due to human error, you continue to receive unwanted communications, please contact us again and we will do everything possible to correct the situation.
If for any reason you do not want to receive promotional emails (for example, not related to orders) that notify you of new product arrivals, exclusive offers, upcoming events, store openings and more, simply click on the unsubscribe link that appears at the end of each email we send.
As of October 1, 2018.


text:
Twisted Online
by CourVO | Mar 7, 2014 | Technology, The Cloud
My geek genes run deep. But you already knew that.
When I was aimlessly walking around the show floor at CES in January a bauble caught my eye, and now it's on my desk. I've been watching the growth and acceptance of ChromeBooks over past months, and when Toshiba got into the game, I saw the combination of factors that made it right for me. Here are the specs: toshiba_CB30-A3120_chromebook
But the important figures that make this a good buy were the price ($299) the screen size (13.3 in), and feature set: wifi, webcam, SDCard slot, 100GB of free Google Drive storage, 16GB SSD, HD Graphics, 2 USB ports, and more.
On top of that, I knew from CES that the Chromebook was FAST. It is. The BIG question was: could I manage all the tasks I need in a day, as a Voice Actor, blogger, online nerd, and all-around geek, on a device that only runs Google Chrome and Google Apps? The answer is yes. I still drag out my trusty Acer laptop for using any Windows proprietary programs. But only the most advanced programs are needed. You wouldn't believe the panoply of Google Chrome Apps and extensions available today that can answer your needs. Besides, most of what you do is in the cloud, anyway…right?
The Google ChromeBook is a nice compromise for people like me who refuse to move to an OSX machine. The Toshiba Chromebook acts like a Windows computer in many ways, but looks like a MacBook air, and did I mention it's felony fast?
Here's the other important caveat to consider: "No", you can't record audio on the Chromebook. At least not passable audio. Too bad, 'cause it runs silently. But in furiously adding ChromeBook Apps, I noticed a Twisted Wave app… the popular editing app for iOS (they say it's on OSX too, but I wouldn't know).
Maybe I'm late to the party on this one, but did you know that an online version of Twisted Wave is available in Beta form? It's free so far, and looks to be very full-featured. How cool is this?
You can upload a file from anywhere, including an import from SoundCloud and Google Drive. The program even comes with a bookmarklet that you can put on your browser toolbar for launching the audio editor.
Here's a look at the window that popped up when I uploaded a demo. (click for full view)
One less program I need a laptop for. I figure I'll use my ZoomH6n for remote recording on a SD card…insert the card into Chromebook for online Twisted Wave editing…and I'm off and running for hotel room auditions!
Anybody else tried Twisted Wave Online?
CourVO


Digital Rewards Company Tango Card Raises $35 Million in Growth Equity from FTV Capital - FTV Management Company, L.P. | FTV Management Company, L.P.
SEATTLE–(BUSINESS WIRE)–Tango Card, the innovative provider of digital rewards and incentives to enterprise customers, today announced that it has raised $35 million in growth equity from FTV Capital. Tango Card will use the capital to continue investment in its core Reward Delivery Platform (RDP®) and Rewards as a Service (RaaS®) API, to scale its Rewards Genius™ dashboard, to deliver new marketplace integrations, and to accelerate international expansion and grow its workforce. As part of this transaction, Chris Winship and Robert Anderson of FTV Capital will join the company's board of directors.
Tango Card's purpose from day one has been to create a seamless and best-in-class experience for companies seeking to recognize and reward employees, engage existing customers, and attract new customers. Rewards and incentives are the key motivator in programs that drive material business results, including higher employee engagement, retention, and productivity; lower health insurance costs; faster revenue growth; and increased customer lifetime value.
One of those customers, Extole, the leading advocate marketing platform powering referral programs for hundreds of brands, has been automating the delivery of their egiftcards through Tango Card's API since 2013. "Our programs succeed when they are incredibly responsive and give immediate gratification to customers. Tango Card helps us deliver egiftcards quickly, reliably, and exactly when they matter most. People deserve their rewards in real-time not when we get around to it. Tango Card shares that belief and has a platform that does just that," said Chris Duskin, VP of Marketing at Extole.
Tango Card takes a unique approach to reward delivery technology, digital reward content, and program support that allows it to be responsive to customers and to scale quickly. Tango Card offers hundreds of digital gift cards and other products via its RaaS API, sends millions of rewards monthly, and supports customer needs in dozens of countries.
With this investment, Tango Card will continue to improve its RaaS API and Rewards Genius™ dashboard – offering customers ways to automate, administer, and validate the effectiveness of reward and incentive programs. To deliver on these growth initiatives and product improvements, Tango Card expects to make key hires at its Seattle headquarters.
Tango Card is the leader in digital incentives and rewards. We bundle simple technology, great rewards, and expert service to help companies get the most out of their rewards programs. With headquarters in Seattle and an office in Boise, our Reward Delivery Platform supports thousands of enterprise clients in the U.S. and abroad. For more information, visit www.tangocard.com.
FTV Capital is a growth equity investment firm that has raised over $2.7 billion to invest in high-growth companies offering a range of innovative solutions in three sectors: enterprise technology & services, financial services, and payments & transaction processing. FTV's experienced team leverages its domain expertise and proven track record in each of these sectors to help motivated management teams accelerate growth. FTV also provides companies with access to its Global Partner Network®, a group of the world's leading enterprises and executives who have helped FTV portfolio companies for nearly two decades. Founded in 1998, FTV Capital has invested in 100 portfolio companies, including payments and transaction processing companies such as CardConnect (acquired by First Data for $750 million), CashStar (acquired by Blackhawk Network for $175 million), Clearent, VPay, WePay (acquired by JPMorgan Chase & Co), and World First. FTV has offices in San Francisco and New York. For more information, visit www.ftvcapital.com.


text:
package org.wso2.das.analytics.rest.beans;

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlRootElement;
import java.util.Map;

/**
 * This class Contains Sub-categories of a given facet field/column. "path" represents the hierarchical
 * path to the categories and "categories" contains the list of categories with their scores.
 */
@XmlRootElement(name = "subCategories")
@XmlAccessorType(XmlAccessType.FIELD)
public class SubCategoriesBean {

    private String[] categoryPath;
    private int categoryCount;
    private Map<String, Double> categories;

    /**
     * This constructor is used by JAX-RS
     */
    public SubCategoriesBean() {

    }
    public SubCategoriesBean(String[] path,
                             Map<String, Double> categories) {
        this.categoryPath = path;
        this.categories = categories;
    }

    public SubCategoriesBean(String[] categoryPath, int categoryCount,
                             Map<String, Double> categories) {
        this.categoryPath = categoryPath;
        this.categoryCount = categoryCount;
        this.categories = categories;
    }

    public void setCategories(Map<String, Double> categories) {
        this.categories = categories;
    }

    public void setCategoryPath(String[] categoryPath) {
        this.categoryPath = categoryPath;
    }

    public int getCategoryCount() {
        return categoryCount;
    }

    public void setCategoryCount(int categoryCount) {
        this.categoryCount = categoryCount;
    }

    public String[] getCategoryPath() {
        return categoryPath;
    }

    public Map<String, Double> getCategories() {
        return categories;
    }
}


Each village in the Southwest suburbs of Chicago has a unique atmosphere. Find neighborhood information by clicking on Village of Hinsdale.
Browse through the economic and demographic data about Hinsdale, IL 60523 displayed below. Community information such as public and private schools available in zip code 60523 are at the bottom of the page.
Search properties in Hinsdale or check our Property Search with market statistics.


Torafu Architects create incredibl y beautiful projects for clients and also design products for Kaminokousakujo. Air Vase is a paper vase that enfolds air. Simply adjust its shape to suit your own personal requirements. The fine lightweight paper is deceptively strong and can be used for purposes such as a t ray for small objects, to decorate a vase, gi f t wrap a bottle of wine or simply as its own work of modern art. Enjoy the ever-changing patterns as you expand and compactit in diverse ways. The colours are l i s ted here and all have their own features such as the Mat te Black that creates a 3D illusion, the Gold /Silver checker pattern that catches light to create an impressive sparkling display, the coloured pieces that look different depending on the light.


Durable, versatile, and easy to use, Streamlight's C.O.P.S. Siege AA Blue Lantern provides a lot of light for your work area without taking up a lot of space.
For every blue Siege AA sold, Streamlight will donate $2 to Concerns of Police Survivors. In addition to rebuilding lives, C.O.P.S. provides training to law enforcement agencies on survivor victimization issues and educates the public of the need to support the law enforcement profession and its survivors.
Equipped with one white C4® LED and two blue LEDs, the Siege AA Lantern provides soft, even 360° light distribution that's excellent for both close quarter and large area illumination. The recessed power button prevents accidental actuation and makes it easy to cycle through the lantern's lighting modes.
A keyed battery door makes it easy to replace the lantern's three AA alkaline batteries in the dark. The lantern's durable, waterproof, impact-resistant polycarbonate thermoplastic body features a rubber base that provides stability on slippery or uneven surfaces.
The ergonomic handle locks into an upright position when in use for easy carrying. A spring-loaded, incorporated D-ring and an incorporated hook allow you to hang the lantern from the ceiling or on a horizontal rope, cable, or pipe to serve as an overhead light.
Case Material: Durable polycarbonate thermoplastic construction with a removable polycarbonate cover and a rubber molded base that provides stability on slippery or uneven surfaces.
To change the lights (beam) color from white to blue, or blue to white, press and hold the on/off button for two seconds until the light changes color. Then release the button.
Switching Output Modes: Pushing the button within 1.5 seconds of the last button push will change the light mode. You may sequence through all light levels and then to off.
Approvals: Meets applicable European Community directives. CE compliant.


text:
in: Character, Featured, Manly Lessons
Brett & Kate McKay • October 7, 2013 • Last updated: September 25, 2021
What They Left and What They Kept: What an Antarctic Expedition Can Teach You About What's Truly Valuable
"Do you hear that? We'll none of us get back to our homes again."
Tom McLeod, member of the 1914 Imperial Trans-Antarctic Expedition, stood anxiously on the deck of the Endurance. He looked out on a nearby ice floe where ten Emperor penguins stood wailing a mournful cry. None of the ship's twenty-eight member crew had seen such a large group of penguins gather together before, nor heard them issue such a strange and chilling sound. Surely, McLeod thought, this was a foreboding omen.
Ernest Shackleton, leader of the expedition, bit his lip. One did not have to be superstitious to feel the crew's prospects were bleak. The Endurance had been stalled out for months, having become trapped in an ice pack as it sailed towards the South Pole. The crew's aim was to launch an expedition that would traverse the Antarctic continent. But now the ice floes surrounding the ship had begun violently pinching and twisting it, tearing open holes in the hull through which freezing water poured. The men had worked for days in exhausting, round-the-clock shifts, pumping out the water by hand. But Shackleton knew their efforts were not enough to save the ship; the next day he ordered the Endurance abandoned. "She's going boys," he said. "I think it's time to get off."
The men trudged out onto an ice floe, leaving behind what had been, all things considered, a warm and comfortable home. It was a farewell to their last tie to civilization. They had now entered a lone and dreary wilderness. The men set up their tents on a tenuous foundation that was likely no more than 6 feet deep and could crack open at any time – plunging them into the icy deep.
Shackleton strode from the Endurance carrying a copy of the Bible given him by Queen Alexandria at the outset of their journey and made his way to the center of the hastily constructed campsite. Gathering his men around him, he told them of the new plan: they would begin a march across the ice towards Paulet Island, some 346 miles to the west. As they hoped to hit open water along the way, the men would have to drag two, one-ton lifeboats along with them, hauling them across a vast wasteland of ice and over ridges that could rise two stories high. "We cannot hope to make rapid progress," Shackleton told the men, "but each mile counts."
Given the arduous nature of the task ahead, Shackleton solemnly informed his men that "nothing but the bare necessities are to be taken on the march, for we can not afford to cumber ourselves with unnecessary weight." Author Alfred Lansing writes in Endurance that through studying the outcome of past expeditions, Shackleton had come to believe that traveling light was absolutely paramount, as "those that burdened themselves with equipment for every contingency had fared much worse than those that had sacrificed total preparedness for speed."
Each member of the team was allowed the clothes on his back, plus two pairs of mittens, six pairs of socks, two pairs of boots, and a sleeping bag. Beyond these basic provisions, Shackleton ordered that each man only bring a maximum of two pounds of personal possessions.
Shackleton moved to set the example for his men. He took his Bible and ripped out the flyleaf upon which the Queen had inscribed: "May the Lord help you to do your duty & guide you through all the dangers of the land and sea. May you see the Works of the Lord & all His Wonders in the deep." Then he tore out the 23rd Psalm, as well as a page from Job he considered "wonderful":
Out of whose womb came the ice?
And the hoary frost of Heaven, who hath gendered it?
The waters are hid as with a stone,
And the face of the deep is frozen. (Job 38:29-30)
Shackleton placed the torn pages inside his jacket and laid the Bible in the snow. He then reached into his pocket and withdrew a gold watch, gold cigarette case, and a handful of gold sovereigns. He gave the items one last look before tossing them into the snow as well.
It was a dramatic gesture, but Shackleton was determined to impress upon his men the absolute necessity of each man stripping himself of every ounce of superfluous weight. "No article has any value when measured against our survival," Shackleton intoned. "Everything is replaceable except your lives."
What They Left and What They Kept
Shackleton's men were faced with a series of heart-wrenching choices. Given the scant two-pound allowance, which of their cherished personal possessions should they keep, and which should they cast aside into what Shackleton called "the privacy of these white graves"?
Taking inventory of what the members of the Endurance expedition decided to keep and what they left behind can teach us much about what is truly valuable — not only literally, in terms of material possessions — but as broader symbols of what matters most in life for all of us.
We may never face a situation of life and death survival as the members of the Endurance expedition did. Yet in a world of gray morality, shallow culture, and relentless consumerism, the survival of every man's values, happiness, goals, and manhood are ever at risk. Every "mile" matters in our personal journeys too, and the lighter we travel, the further we can get in the goal of becoming men of excellence. What kinds of things should we "carry" with us on life's journey, and what weighs us down and keeps us from ever getting where we want to go?
What They Left Behind
Money/Jewelry/Gold. The thing that had the most value in the explorer's lives back home would have the least value on their Antarctic march. Or as Frank Worsley, captain of the Endurance put it, "there are times when gold can be a liability rather than an asset." Heavy and worthless, their "wealth" would simply serve to weigh them down.
As a symbol for our own lives: Few things can impede your search for a happy and fulfilling life more than a love of money and a heedless pursuit of material possessions. Debt shackles. Accumulating piles of shiny tchotchkes doesn't bring lasting satisfaction and forces you to invest your time in taking care of your stuff, rather than in things with true value like relationships, experiences, and service to others.
Clothes. The men could only take the clothes on their backs. Their remaining pairs of pants and shirts were jettisoned.
As a symbol for our own lives: This one can translate more literally and relates to the point above. Instead of having a huge wardrobe, just have a few pieces that really get the job done and will work in a wide variety of situations. Instead of having a house full of junk, try to own only those things you really need, use, and get true enjoyment from.
Scientific instruments. In addition to the goal of being the first men to cross Antarctica, the expedition had also originally aimed to gather geologic and other scientific data about the continent. But with the sinking of the Endurance, that original purpose had to be jettisoned; the men had to focus all of their energies on their new mission: simply making it home alive. Thus, microscopes, telescopes, and other scientific equipment were discarded in the snow.
As a symbol for our own lives: Sometimes the plan we set out for ourselves – either professionally or personally — changes dramatically. These curveballs can come because of an intentional shift in our goals, or from challenges and circumstances over which we have no control. Either way, there's no use in holding onto the past. You have to leave behind the trappings and the baggage of your old dream, and ditch the regrets for what could have been and the guilt for the path you "should" have taken. When plans change, one must find a new purpose, and press onward.
Books. Reading had been a welcome source of entertainment for the men while they lived on the Endurance. But given their size and weight, there was no way the books could be bought along on the march.
As a symbol for our own lives: Studying and educating ourselves about who we want to be and how best to do something is absolutely vital. But there also comes a time when you have to move beyond the realm of the abstract and hypothetical, get moving, and try to do the thing yourself.
Suitcases. The men did not simply leave their suitcases behind, but instead used the leather from them to make something that was badly needed: new boots.
As a symbol for our own lives: I love this one, because the men took the thing that holds all the stuff you tote along for a trip, and transformed it into something to sheath the only true essential you need for a journey: your own two feet. It captures the essence of traveling light. In all areas of our lives, from paring down how much stuff we own, to peeling back the influence of media and popular culture in order to find our own beliefs, to homing in on our life's purpose, we are well-served in stripping away the dross in search of the essential core.
What They Kept
Toothbrush. When it came to cleanliness on the expedition, Lansing describes the men as divided into two camps: "some men scrubbed their faces in snow whenever the weather permitted. Others purposely let the dirt accumulate on the theory that it would toughen their skin against frostbite." But there was a general consensus when it came to the importance of caring for one's teeth, and thus most of the men chose a toothbrush as one of the few precious items to bring with them. Thousands of miles from the nearest dentist, a painful problem with one's teeth could have spelled real trouble on the march.
As a symbol for our own lives: As you can see, the idea that daily tooth brushing is one of the habits every young man should develop is endorsed by Arctic explorers! But one can find a deeper meaning here beyond the necessity of keeping your chompers in good condition. There are many things in our life that require mundane daily maintenance to keep on top of, and while consistency in these small, regular efforts may not be fun, they ultimately prevent the creation of huge problems and pain down the line.
Religious items. Many of the men kept small reminders of their faith. Shackleton had his few pages of the Bible. Tom Crean kept a devotional scapular that he had worn around his neck since he was a young man. Such tokens offered strength and comfort to the men in incredibly trying circumstances, while also reminding them of their families and their roots as well.
As a symbol for our own lives: Faith, spirituality, and philosophy can offer meaning and purpose beyond ourselves and help us continue on when we face challenges and struggles. Our beliefs provide direction as to the big questions of who we are, why we are here, and where we are going, and moral reminders are key in helping us remember those answers.
Photographs. The most universal item the men chose to take with them were a few photographs of loved ones back home. Completely isolated at the bottom of the world and faced with traversing an alien terrain, they felt a million miles from their old lives. Photographs kept their connection to home alive and reminded them that there was something worth fighting to return to.
As a symbol for our own lives: Our relationships are truly the most valuable things in our lives. Connections with friends and family have been proven by science time and again to be the single biggest contributor to happiness. At the end of their lives, it's their relationships that people look back on most fondly and regret not investing more time into. Our loved ones not only bring us joy and add a beautiful depth and richness to our lives, but also give us something to live for.
For some members of the expedition, the two-pound weight limit was relaxed to allow them to carry items with a value that was deemed worth the extra burden.
Medical supplies and instruments. The two surgeons amongst the crew were allowed to bring their first aid supplies and medical instruments; it didn't matter how light the men were traveling if an injury or ailment kept them from moving at all.
As a symbol for our lives: Is there anything more valuable than our health? Good health must form the foundation of our lives, as achieving all our other aims becomes much harder, and sometimes impossible, if we are extremely obese, very sick, or quite dead.
Banjo. Leonard Hussey's five-string banjo weighed 12 pounds – making it practically an anvil compared with each man's Spartan allotment. But Shackleton insisted it be lashed underneath one of the lifeboats and brought along. "It's vital mental medicine," he said, "and we shall need it." He was right. At the end of their grueling journey, Shackleton credited the banjo's music and the crew's frequent sing-alongs "to being a vital factor in chasing away symptoms of depression."
As a symbol for our lives: Oftentimes when we're trying to turn our lives around, we concentrate on getting rid of what's not working: throwing out our junk, ending toxic relationships, quitting bad habits. But becoming the man you want to be can never be entirely about emptying yourself of the bad; you must also fill the newly created space with the good. We need people/hobbies/traditions in our lives that brighten the way and bring us joy and fulfillment.
Diaries. The men who kept diaries were allowed to bring them along. These journals later proved invaluable in the ability of Shackleton and future authors and historians to create and share with the world a richly detailed account of the expedition, ensuring that this epic story of survival, courage, and leadership would not be forgotten.
As a symbol for our own lives: In a literal way, keeping a journal offers numerous benefits. In a symbolic way, understanding our personal histories, whether written down or simply etched in our brains, is essential to making progress in our lives. What experiences made us who we are today? What dreams and ideals from our youth do we want to carry into our manhood? What mistakes did we make in the past that we don't want to repeat?
If you were faced with the same kind of decision as the members of the Endurance crew, which of your personal possessions would you take and which would leave behind? What does the nature of your selections reveal about what you truly value in your life?
On a deeper level, what attitudes and behaviors are you carrying with you that are actually weighing down your progress on your own 20 Mile March? What negative habits have become a burden, keeping you from becoming the man you want to be?
Once you answer such questions, the most important question then becomes: are you putting your time and money where you mouth is? Are you investing the resources of your life into what you truly value, or are you wasting them on things, that, if push came to shove, you would ultimately leave behind in an icy grave?
Endurance: Shackleton's Incredible Voyage by Alfred Lansing
South: The Story of Shakleton's 1914-1917 Expedition by Ernest Shackleton
Tom Crean: Unsung Hero of the Scott and Shackleton Antarctic Expeditions by Michael Smith
How to Throw a Devastating Left Hook Punch: An Illustrated Guide
The Libraries of Famous Men: Ernest Shackleton
So You Want My Job: Antarctic Driller/Researcher
How to Overcome Morning Peevishness: Advice from an Antarctic Explorer
How to "Teach" a Kid to Ride a Bike (Without Having to Teach Them at All)
The Most Valuable Gift Is Your Time: Spend It With Dad


CIS creates environments in which businesses and individuals succeed and flourish – places that improve lives and neighborhoods. We design, build, and manage communities that reflect the tastes, needs and neighborhoods of our residents, from homes for young families and older adults to assisted living and senior communities. Focusing our attention down to the smallest detail, our properties keep our residents in mind.


New York City is one of the most insane places to be on New Year's Eve. Mike went to Times Square to visit his dad, who was working lighting and sound for the ball drop. Instead of the ball drop, we went to Webster Hall to see Infected Mushroom, our second time seeing them. Mike Basile joined us on this epic journey featuring crime, drugs, music, transsexual cops, dancing, and lots of fun & adventure.
Mind-blowing… VIP for an intense psychedelic journey into trance music. Infected Mushroom at Webster Hall, May 19 2007.
The Farm League at the now-defunct Opus at the always defunct Palisades Center Mall in West Nyack, NY.


text:
Home > News and Speeches > 2021 > October
More than 2 900 beneficiaries now have dignified homes at Forest Village
hs-forest-village.jpg
Beneficiary Mrs Marylin Meggel
The Forest Village Housing Project continues to serve as a catalyst in improving the lives of our residents. Over the last six weeks, 85 deserving and qualifying beneficiaries, have moved into their brand-new homes. This brings the total number of beneficiaries that have benefitted from this development to 2 906.
The Forest Village Housing Development has benefited residents from across the Cape Metropole. 579 of these residents are N2 Gateway beneficiaries, 508 are from the Southern Corridor, 160 are Priority Cases and 1 659 are from the local area, which includes Eersteriver, Eersteriver South, Electric City, Faure, Dreamworld, Blue Downs, Malibu Village, Kleinvlei, Rosedale, Mfuleni and Fairdale.
Minister Tertuis Simmers said: "Being afforded the opportunity to continuously assist our people to live in safer and dignified conditions, brings me great joy. It is particularly pleasing to note how our people from different backgrounds, creeds, cultures and languages are integrating and making this new community theirs. This clearly demonstrates how the Western Cape Government is addressing the apartheid spatial injustices of the past".
One of the latest beneficiaries Mrs Marylin Meggel, a former backyard dweller from Kleinvlei could barely hide her emotions, stating: "After 17 years on the housing waiting list, I am absolutely over the moon, to have finally received the keys to my new house and home for my children. This is truly something that is beyond my wildest dreams. I am grateful to the officials and Western Cape Government for helping my family and granting us this gift".
Another beneficiary, Mr Mabhelandile Nogemane previously from Mfuleni added: "I am delighted at being a homeowner, as I will no longer live under the hardship of unruly landlords. It is difficult to express my gratitude, but know that this is a dream come true".
Forest Village is one of the Western Cape Department of Human Settlement's Catalytic Projects, which commenced in January 2016 and has a budget allocation of R1.1billion. This mixed-use development consists of various types of units to cater for beneficiaries of different income levels and specific needs such as Military Veterans, Breaking New Ground (BNG) and Finance Linked Individual Subsidy Programme (FLISP) units.
"As the Western Cape Government, we remain committed to accelerating human settlement delivery, while promoting social inclusion through the development of integrated, resilient, safe and sustainable human settlements in an open opportunity society," concluded Simmers.
Nathan Adriaanse
Director Communication & Stakeholder Relations
Tell: 021 483 2868
Email: Nathan.Adriaanse@westerncape.gov.za


text:
Aespa's Karina Made Netizens Fall In Love With Her In Just 13 Seconds
Her power!
How long does it take to fall in love? According to this trending Korean post on aespa's Karina, it can take as little as 13 seconds! This short clip from a recent "Black Mamba" performance had netizens enamored in an instant.
The fancam clip starts just as aespa's SBS Inkigayo stage ends, with Karina striking a final pose elegant enough to capture anyone's attention.
| 스브스케이팝 / SBS KPOP/YouTube
As the camera zooms in, the leader's big, doll-like eyes widen at the confetti falling around her.
Then, after she catches her breath, she just can't resist adorably trying to catch a piece!
But the cuteness didn't stop there. When Karina managed to grab some confetti, her jaw dropped in excitement…
…and she shared her awe with the members with the prettiest expression on her face.
The clip is just 13 seconds long, but that was long enough for everyone to fall for Karina. After watching her fancam, one netizen uploaded a GIF of the clip to popular Korean forum The Qoo with the caption "aespa Karina's cuteness kekeke". Racking up tens of thousands of views and hundreds of replies, the GIF soon hit the site's "HOT" trends category.
Netizens flocked to the post with comments about how "cute" and "pretty" she looks. With her small face, big eyes, and pretty nose, many compared her visuals to that of a Pixar character, a Disney princess, or a Barbie doll.
| @aespa_official/Twitter
Others couldn't believe how "charming" her personality was in just one short clip, with some noting that it's in total contrast to the "cold" beauty vibe she gives off in photos.
Watch the full fancam for yourself here:
Source: The Qoo
aespa's Karina Reveals Her Must-Have Items That She Carries In Her Bag
High Schoolmate Of aespa's Winter Reveals Yet Another Past Photo And Reveals How She Was Like In School
aespa's Karina Reveals That She Almost Debuted With Another Stage Name
See more aespa


I recently purchased a used vehicle in Pennsylvania after the dealer promised me that the parts were "like new." One month later, the fuel system and transmission needed to be replaced. What can I do?
Under Pennsylvania laws, buyers and sellers of used automobiles are typically bound by the language contained in the purchase agreement. During any sale for the purchase of goods, sellers often make promises – known as "express warranties" – that may be binding upon proof of the conversation. However, in most scenarios, it is difficult for parties to prove exactly what was said at the time of purchase – prompting most courts to rely solely on the written language in the agreement.
Express warranties that are listed in the purchase agreement will be binding on the seller, regardless of what the he or she claims was said during the exchange. In this scenario, an express warranty guaranteeing "like new" parts will undoubtedly work in the favor of the buyer in the event of a breakdown shortly after purchase. If the warrant contains a time or mileage limit, this will control over any oral promises to contrary as well.
One crucial component of a used car purchase agreement is the "as is" clause. Many times, car dealers make wild promises to entice the buyer to make a purchase, only to throw in an "as is" clause, preventing the buyer from making any claims for repairs after purchase. In many cases, buyers will be stuck with this clause, and will be required to make costly repairs themselves. However, if the buyer can prove that the seller somehow engaged in conduct to hide or diminish the "as is" clause during the transaction, the court may rule it unenforceable and require the seller to make necessary repairs.
Lastly, a concept known as "implied warranties of merchantability" may apply to the situation, which warrants the vehicle is fit for its particular purpose (i.e., driving). If the purchase agreement is silent as to the implied warranties, the buyer may be able to sue for damages under this concept, unless the seller has disclaimed this warranty – which must be clearly stated on the purchase agreement in 20-point font and clearly affixed to the window of the vehicle.
If you are facing a difficult situation following a recent used vehicle purchase, please do not hesitate to contact an experienced Lemon Law attorney today!


text:
Q: Simplify API calls when using pipe and HttpService in Angular8 In most of my API calls I use this pattern:

*

*call server and pipe result

*Check for error and throw if needed

*map results from server
public getItems() : Observable<Item[]> {
  return this.http.get<Item[]>>(environment.url + '/items').pipe(

         catchError((error:any)=> throwError('Failed getting items')),

         map((ret)=> this.mapResults(ret)));

}
Is there a way to merge the catchError and map operators to a single operator ?
Something like this:
catchErrorAndMap("Message in case of error",itemForMapping)

itemForMapping will go into the mapping function. something like this?
 return this.http.get<Item[]>>(environment.url + '/items').pipe(

                catchErrorAndMap('Failed getting items'),ret));

A: Yes. An RxJS operator is just a function. So, you can write your own RxJS operators.
There is an example here: https://netbasal.com/creating-custom-operators-in-rxjs-32f052d69457
In the section entitled: "Creating Operators from Existing Operators".
So you can create a catchErrorAndMap function that you can then use as an operator.
Here is an example:
export function catchErrorAndMap(errorMessage): OperatorFunction<User[], User[]> {
  return source =>
    source.pipe(
      catchError((error: any) => throwError(errorMessage)),
      map(items => items.map(item => ({ ...item, name: item.name + "'s"} as User)))
    );
}

This creates a function that takes in an Observable<User[]> and returns an Observable<User[]>. You'd need to modify it as needed for your project. (Probably Item[]).
It then pipes the source (which is the emitted item from the source stream) through the desired operators.
In this example, I used a map operation appropriate for my data. You could of course change it to your this.mapResults().
You'd call this operator just like any other pipe operator:
  users$ = this.http
    .get<User[]>(this.userUrl)
    .pipe(catchErrorAndMap("Error Occurred"));

redpajama_set_name: RedPajamaStackExchange


The roommate must be clean no drugs , smoking or drinking problems , good character and have referencies . The building is well located , in Avenida Nossa Senhora de Copacabana, near the subway station, bus stops, and the area is also surrounded by several 24 restaurants, pharmacies, grocery store and supermarket they're always open. There's also internet connection.


Everyone has some kind of phobia. But when a large insect invades a weatherman on location report, it becomes a hilarious bug video bomb.
Before realizing he was live, weatherman Brad Willis showed his fear of a large insect flying around him.
This is an embarrassing moment that won't soon be lived down partly because he was flailing around and partly because he couldn't knock the large bug out of the air.
Needless to say, we've all acted similarly to some creature we're afraid of. Fortunately, it wasn't broadcast on live television.


text:
Google Makes Docs Add-Ons More Enterprise-Friendly
Frederic Lardinois	@fredericl / 6 years
Google is making it easier for Google Docs add-on developers to get their services into enterprise organizations and for IT admins to manage them.
About a year ago, Google launched an add-ons program for its Docs and Sheets productivity apps Support for Forms followed last October, though there still aren't any add-ons for Slide, Google's presentation app. For the most part, though, end-users had to install these add-ons one-by-one, and IT admins didn't get a lot of control over the process (though they could always disable this feature across their domains).
Starting now, developers will have the option to make their add-ons available across entire domains. This, the company argues, will make it easier for potential customers to find them, but maybe more importantly, it also means that admins can now easily install an add-on for the whole organization.
They can also now block add-on installs across their domains and only allow users to install a set of IT-approved ones from the Apps Marketplace. This gives IT more granular control over how add-ons can be used in their organizations (though they don't get separate settings for the different tools inside of Google Docs, so you can't allow them in Docs and disallow them in Forms).
Google never made a lot of noise around Docs add-ons and the Apps Marketplace is in dire need of a redesign. Today's update, however, will make this feature more attractive to larger organizations and, in turn, help attract more developers.