Congratulations to the world's top 10 entomology departments, as listed today (April 3) in the long-awaited Times Higher Education's Center for World University Rankings.
The rankings show the University of Florida's Department of Entomology and Nematology as No. 1.
In California, the University of California, Riverside, is ranked No. 2, and UC Davis, No. 7. That's not a national statistic, but a global one. Kudos!
The departments were scored in five peformance areas: Teaching (the learning environment); research (volume, income and reputation); citations (research influence); international outlook (staff students and research) and industry outcome (knowledge transfer). View the World University Rankings methodology here.
The UC Davis Department of Entomology and Nematology, based in Briggs Hall, is led by chair Steve Nadler and vice chair Joanna Chiu.
Interested in insect science? Be sure to visit the UC Davis Department of Entomology and Nematology's displays at the 103rd annual campuswide Picnic Day on Saturday, April 22. Last year thousands of visitors flocked to Briggs Hall; Bohart Museum of Entomology, home of nearly eight million insect specimens; and the Sciences Laboratory Building (nematology display). Here's what the department did last year. More information pending!
Beekeepers know the varroa mite as "Public Enemy No. 1."
And it's an enemy to be reckoned with, Extension apiculturist Eric Mussen told students in the UC Davis "Biology of Parasitism" class, taught by forensic entomologist Robert Kimsey and nematologist Steve Nadler, Department of Entomology and Nematology.
Guest-lecturing at a special session held at the Harry H. Laidlaw Jr. Honey Bee Research Facility, UC Davis, Mussen talked about the varroa mite--its history, biology, damage and control methods--and then opened several hives at the apiary.
The Varroa destructor, a native of Asia, is now found in hives throughout the world except in Australia. It was first detected in the United States in 1987.
The eight-legged reddish-brown parasite, about 1–1.8 mm long and 1.5–2 mm wide, is a blood sucker that's difficult to control, Mussen said. Mites transmit viruses (there are now some 22 named RNA viruses) that can wipe out a hive. A familiar mite-transmitted disease that beekeepers see is DWV or Deformed Wing Virus. Mites are also known lowering the protein level of a bee's blood, and reducing its weight and life span.
Mussen said that mites spread from colony to colony by phoresy (animal-to-animal transport). They ride on flying drones (males) and adult worker bees (females). They also spread changing hosts on flowers.
"A mite enters a honey bee cell just before or during the time it is being capped," Mussen said. "It feeds on older larva or prepupa. Sixty hours later, the mite lays its first egg. The egg will hatch in about 24 hours."
"The number and release of offspring depend on the length of the pupal stage. The queen is pupa for 8.5 days (no mites). The worker is pupa for 12.5 days (1.3 mites) and the drone is pupa for 14.7 days (3 or 4 mites)," he said. Thus, due to the longer time required for drone development, drone pupae get the worst of it.
"When maturing, the newly emerged mites climb onto adult bees and feed by puncturing the intersegmental membranes and sucking the bee blood," Mussen related. "Often these are nurse bees that stay around the brood nest. Sometimes the hosts are drones and older foragers that are flying from the hive every day. Eventually the new mite climbs off the nurse bee onto a comb in the brood nest and enters a cell. The reproductive cycle starts and within 6 days, 44 percent of the young mites have moved into the brood cells; within 12 days, 69 percent of the mites are in the brood cells; and within 24 days, 90 percent of the mite are in the brood cells."
"If there is no brood, the mite has to feed on adult bee blood every six days or so to remain alive," Mussen said. "Mite life expectancy in summer is around 60 days; bees about 42 days. Mite life expectancy in the winter is up to 9 months; bees about six months."
Mussen also discussed how to detect mite infestations through non-chemical and chemical methods, and listed chemical treatments being used throughout the nation. Mites are developing resistance to a few chemical treatments, he pointed out. And, some of the chemical treatments not only kill the mites, but damage or kill the queen and the brood.
Beekeepers who try to go organic, figuring that "if the bees can't make it on their own--if they're not fit--let them die" are really doing a disservice to neighboring beekeepers, Mussen said. The mite will overrun a colony and then infest other colonies.
Public Enemy No. 1--definitely a force to be reckoned with.
It's exciting to see a promising career unfold.
We first met UC Davis graduate student Alex Van Dam in 2010 when he received a $12,000 award from the University of California Institute for Mexico and the United States (UC MEXUS), an academic research institute dedicated to encouraging, securing, and contributing to binational and Latino research and collaborative academic programs and exchanges.
Then later in 2010 he received a Robert and Peggy van den Bosch Memorial Scholarship for his research on a scale insect. His project: "Investigating Host-Associated Lineage Splitting Within Dactylopius Using Molecular Phylogenetics."
Now Van Dam has just been selected for a National Science Foundation (NSF) Postdoctoral Fellowship to work on insect/host plant research.
The postdoctoral fellowship award is supported by both the Directorate for Biological Sciences and the Office of International Science and Engineering at NSF. During his two-year fellowship, he will work on a project, "New Insights into Insect Host-Plant Generalization: Population Transcriptome Sequencing of Porphyrophora spp.," under the sponsorship of Uffe H. Mortensen at the Department of Systems Biology, Technical University of Denmark.
Van Dam will identify genes responsible for host-plant range in scale insects, and how they are maintained across populations. "This will be accomplished by testing hypotheses delineating physiological genes responsible for insect host-plant generalization," he said. "Host-plant generalization is the ability to feed on many different species of plants. I will test if increased dispersal of host-plant detoxification genes in generalists leads to maintenance of functional gene paralogs, that is, gene duplications, across large effective populations.
A native of Los Angeles, Van Dam received his bachelor's degree and master's degree in entomology at UC Riverside and is currently a doctoral candidate and a member of the Entomology Graduate Group. He studies with major professor Bernie May in the Department of Animal Science. Professors Jay Rosenheim and Steve Nadler of the Department of Entomology are members of his dissertation committee.
Meanwhile, Van Dam is gearing up for his exit seminar at the Animal Science Spring Seminar Series. He'll present his seminar on Monday, April 29 from 12:10 to 1 p.m. in Weir Room 2154, Meyer Hall.
Alex Van Dam, photographed next to a giant cactus.


text:
#include "global.h"
#include "correct_alignment.h"

// Global variables to specify if we should print output - used for debugging only
// These are used in generate_paths.c
bool gen_paths_print_contigs = false, gen_paths_print_paths = false;
bool gen_paths_print_reads = false;

#define INIT_BUFLEN 1024

size_t correct_aln_worker_est_mem(const dBGraph *graph) {
  return 2*graph_walker_est_mem() + 2*rpt_walker_est_mem(graph->ht.capacity, 22) +
         db_alignment_est_mem() + 2*INIT_BUFLEN*sizeof(dBNode) +
         2*INIT_BUFLEN*sizeof(size_t) + sizeof(CorrectAlnWorker);
}

void correct_aln_worker_alloc(CorrectAlnWorker *wrkr, bool store_contig_lens,
                              const dBGraph *db_graph)
{
  CorrectAlnWorker tmp = {.db_graph = db_graph,
                          .start_idx = 0, .gap_idx = 0, .end_idx = 0,
                          .store_contig_lens = store_contig_lens};

  // Graph alignment of reads
  db_alignment_alloc(&tmp.aln);

  // Graph traversal
  graph_walker_alloc(&tmp.wlk, db_graph);
  graph_walker_alloc(&tmp.wlk2, db_graph);
  rpt_walker_alloc(&tmp.rptwlk, db_graph->ht.capacity, 22); // 4MB
  rpt_walker_alloc(&tmp.rptwlk2, db_graph->ht.capacity, 22); // 4MB

  // Node buffers
  db_node_buf_alloc(&tmp.contig, INIT_BUFLEN);
  db_node_buf_alloc(&tmp.revcontig, INIT_BUFLEN);
  int32_buf_alloc(&tmp.rpos, INIT_BUFLEN);

  correct_aln_stats_alloc(&tmp.aln_stats);
  seq_loading_stats_init(&tmp.load_stats);

  memcpy(wrkr, &tmp, sizeof(CorrectAlnWorker));
}

void correct_aln_worker_dealloc(CorrectAlnWorker *wrkr)
{
  db_alignment_dealloc(&wrkr->aln);
  graph_walker_dealloc(&wrkr->wlk);
  graph_walker_dealloc(&wrkr->wlk2);
  rpt_walker_dealloc(&wrkr->rptwlk);
  rpt_walker_dealloc(&wrkr->rptwlk2);
  db_node_buf_dealloc(&wrkr->contig);
  db_node_buf_dealloc(&wrkr->revcontig);
  int32_buf_dealloc(&wrkr->rpos);
  correct_aln_stats_dealloc(&wrkr->aln_stats);
}

/*!
  @param params Settings for correction - needs to be passed since we don't know
                which source the reads came from and diff input sources have
                different requirements (e.g. expected insert size)
 */
void correct_alignment_init(CorrectAlnWorker *wrkr,
                            const CorrectAlnParam *params,
                            const read_t *r1, const read_t *r2,
                            uint8_t fq_cutoff1, uint8_t fq_cutoff2,
                            int8_t hp_cutoff)
{
  ctx_assert(params->ctxcol == params->ctpcol);

  db_alignment_from_reads(&wrkr->aln, r1, r2,
                          fq_cutoff1, fq_cutoff2, hp_cutoff,
                          wrkr->db_graph, params->ctxcol);

  const dBAlignment *aln = &wrkr->aln;

  // Copy parameters
  wrkr->params = *params;

  // reset state
  wrkr->start_idx = wrkr->prev_start_idx = 0;
  wrkr->gap_idx = wrkr->end_idx = db_alignment_next_gap(aln, 0,
                                                        &wrkr->gap_idx_missing_edge,
                                                        wrkr->db_graph);
  wrkr->end_idx_missing_edge = wrkr->gap_idx_missing_edge;

  wrkr->aln_stats.num_missing_edges += wrkr->gap_idx_missing_edge;

  // Update stats
  wrkr->load_stats.total_bases_read += aln->r1bases + aln->r2bases;
  wrkr->load_stats.num_kmers_parsed += aln->nodes.len;

  if(aln->passed_r2) wrkr->load_stats.num_pe_reads += 2;
  else               wrkr->load_stats.num_se_reads++;

  wrkr->aln_stats.num_ins_gaps += aln->used_r2;
}

// Merge stats into dst and reset src
void correct_aln_merge_stats(CorrectAlnWorker *restrict dst,
                             CorrectAlnWorker *restrict src)
{
  correct_aln_stats_merge(&dst->aln_stats, &src->aln_stats);
  correct_aln_stats_dealloc(&src->aln_stats);
  seq_loading_stats_merge(&dst->load_stats, &src->load_stats);
  seq_loading_stats_init(&src->load_stats);
}

// block is nodes that we are walking towards
// if forward is true, we are walking left to right, otherwise right to left
// Resets node buffer, GraphWalker and RepeatWalker after use
static TraversalResult traverse_one_way2(const dBNode *block, size_t n,
                                         bool forward, dBNodeBuffer *contig,
                                         size_t gap_min, size_t gap_max,
                                         GraphWalker *wlk, RepeatWalker *rptwlk,
                                         bool only_in_col, bool do_paths_check)
{
  dBNode end_node = db_nodes_get(block, n, forward, 0);

  // char tmpstr[MAX_KMER_SIZE+3];
  // db_node_to_str(wlk->db_graph, end_node, tmpstr);
  // status("Endnode: %s contig->len: %zu", tmpstr, contig->len);

  // max_len allows for node on other side of gap
  size_t init_len = contig->len, max_len = contig->len + gap_max + 1;
  db_node_buf_capacity(contig, max_len);

  TraversalResult result = {.traversed = false, .paths_disagreed = false,
                            .gap_too_short = false, .gap_len = 0};

  // DEBUG
  // fprintf(stderr, "\ntraverse_one_way2:\n\n");
  // db_nodes_print_verbose(contig->b, contig->len, wlk->db_graph, stderr);

  while(contig->len < max_len && graph_walker_next(wlk) &&
        rpt_walker_attempt_traverse(rptwlk, wlk) &&
        (!only_in_col || graph_step_in_col(wlk->last_step)))
  {
    // DEBUG
    // db_nodes_print_verbose(&wlk->node, 1, wlk->db_graph, stderr);

    if(db_nodes_are_equal(wlk->node, end_node)) {
      result.traversed = true;
      break;
    }
    contig->b[contig->len++] = wlk->node;
  }

  result.gap_len = contig->len - init_len;
  rpt_walker_fast_clear(rptwlk, contig->b+init_len, result.gap_len);

  // Check paths match remaining nodes
  if(result.traversed && do_paths_check) {
    if(( forward && !graph_walker_agrees_contig(wlk, block+1, n-1, true)) ||
       (!forward && !graph_walker_agrees_contig(wlk, block, n-1, false))) {
      // printf("1) Paths don't agree!\n");
      result.traversed = false;
      result.paths_disagreed = true;
    }
  }

  // printf("gap_len: %zu contig->len: %zu; success: %i gap_min: %zu\n",
  //        result.gap_len, contig->len, (int)traversed, gap_min);

  // Clean up GraphWalker, RepeatWalker
  graph_walker_finish(wlk);

  // Fail if we bridged but too short
  if(result.gap_len < gap_min) {
    result.traversed = false;
    result.gap_too_short = true;
  }

  if(!result.traversed) contig->len = init_len;

  return result;
}

// Traversed from both sides of the gap
// nodes in contig1 will be the *reverse*
// Resets node buffers, GraphWalkers and RepeatWalkers after use
static TraversalResult traverse_two_way2(dBNodeBuffer *contig0,
                                         dBNodeBuffer *contig1,
                                         const dBNode *rhs_block, size_t rhs_n,
                                         size_t gap_min, size_t gap_max,
                                         GraphWalker *wlk0, RepeatWalker *rptwlk0,
                                         GraphWalker *wlk1, RepeatWalker *rptwlk1,
                                         bool only_in_col, bool do_paths_check)
{
  const size_t init_len0 = contig0->len, init_len1 = contig1->len;

  // graph_walker_print_state(wlk0, stdout);
  // graph_walker_print_state(wlk1, stdout);

  // +1 to allow for node on other side of gap
  db_node_buf_capacity(contig0, contig0->len + gap_max + 1);
  db_node_buf_capacity(contig1, contig1->len + gap_max + 1);

  bool use[2] = {true,true};
  GraphWalker *wlk[2] = {wlk0, wlk1};
  RepeatWalker *rptwlk[2] = {rptwlk0, rptwlk1};
  dBNodeBuffer *contig[2] = {contig0, contig1};
  dBNode nodes[2] = {wlk0->node, wlk1->node};
  size_t i, gap_len = 0;

  TraversalResult result = {.traversed = false, .paths_disagreed = false,
                            .gap_too_short = false, .gap_len = 0};

  while(gap_len <= gap_max && (use[0] || use[1])) {
    for(i = 0; i < 2; i++) {
      use[i] = (use[i] && graph_walker_next(wlk[i]) &&
                (!only_in_col || graph_step_in_col(wlk[i]->last_step)));

      if(use[i])
      {
        // If one of the sides gets stuck in a repeat, we should abandon
        if(!rpt_walker_attempt_traverse(rptwlk[i], wlk[i])) {
          use[0] = use[1] = false; // set both to false to exit loop
          break;
        }

        nodes[i] = wlk[i]->node;

        if(db_nodes_are_equal(nodes[0], db_node_reverse(nodes[1])))
        {
          // gap_len may now be > gap_max since we loop twice before
          // checking outer loop condition
          result.traversed = (gap_len <= gap_max);
          use[0] = use[1] = false; // set both to false to exit loop
          break;
        }

        contig[i]->b[contig[i]->len++] = nodes[i];
        gap_len++;
      }
    }
  }

  // printf("2-way Traversal %s\n", result.traversed ? "Worked" : "Failed");

  if(result.traversed && do_paths_check)
  {
    // Check paths match remaining nodes
    dBNode *left_contig = contig0->b; size_t left_n = contig0->len;
    dBNode *right_contig = contig1->b; size_t right_n = contig1->len;

    if(db_nodes_are_equal(wlk[0]->node, db_node_reverse(right_contig[right_n-1]))) {
      right_n--;
    } else {
      ctx_assert(db_nodes_are_equal(db_node_reverse(wlk[1]->node), left_contig[left_n-1]));
      left_n--;
    }

    if(!graph_walker_agrees_contig(wlk[0], right_contig, right_n, false) ||
       !graph_walker_agrees_contig(wlk[0], rhs_block, rhs_n, true) ||
       !graph_walker_agrees_contig(wlk[1], left_contig, left_n, false))
    {
      result.traversed = false;
      result.paths_disagreed = true;
    }
  }

  // Clear RepeatWalker
  rpt_walker_fast_clear(rptwlk0, contig0->b+init_len0, contig0->len-init_len0);
  rpt_walker_fast_clear(rptwlk1, contig1->b+init_len1, contig1->len-init_len1);

  // Clean up GraphWalker
  graph_walker_finish(wlk0);
  graph_walker_finish(wlk1);

  // Fail if we bridged but too short
  if(gap_len < gap_min) {
    result.traversed = false;
    result.gap_too_short = true;
  }

  if(!result.traversed) {
    contig0->len = init_len0;
    contig1->len = init_len1;
  }

  result.gap_len = gap_len;
  return result;
}

static TraversalResult traverse_one_way(CorrectAlnWorker *wrkr,
                                        size_t gap_idx, size_t end_idx,
                                        size_t gap_min, size_t gap_max)
{
  const CorrectAlnParam *params = &wrkr->params;
  const int aln_colour = wrkr->aln.colour; // -1 for all
  const dBNode *aln_nodes = wrkr->aln.nodes.b;
  const dBNodeBuffer *nbuf = &wrkr->contig;
  const size_t block1len = end_idx-gap_idx;
  TraversalResult result;

  bool only_in_one_col = aln_colour != -1;

  ctx_assert(!only_in_one_col || (size_t)aln_colour == params->ctxcol);
  ctx_assert(db_nodes_are_equal(aln_nodes[gap_idx-1], nbuf->b[nbuf->len-1]));

  // Start traversing forward
  graph_walker_prime(&wrkr->wlk, nbuf->b, nbuf->len,
                     params->max_context, true);

  // left to right
  result = traverse_one_way2(aln_nodes+gap_idx, block1len, true,
                             &wrkr->contig, gap_min, gap_max,
                             &wrkr->wlk, &wrkr->rptwlk,
                             only_in_one_col, params->use_end_check);

  correct_aln_stats_update(&wrkr->aln_stats, result);

  if(result.traversed) return result;

  // right to left
  graph_walker_prime(&wrkr->wlk, aln_nodes+gap_idx, block1len,
                     params->max_context, false);

  ctx_assert(wrkr->revcontig.len == 0);

  result = traverse_one_way2(nbuf->b, nbuf->len, false,
                             &wrkr->revcontig, gap_min, gap_max,
                             &wrkr->wlk, &wrkr->rptwlk,
                             only_in_one_col, params->use_end_check);

  correct_aln_stats_update(&wrkr->aln_stats, result);

  return result;
}

static TraversalResult traverse_two_way(CorrectAlnWorker *wrkr,
                                        size_t gap_idx, size_t end_idx,
                                        size_t gap_min, size_t gap_max)
{
  const CorrectAlnParam *params = &wrkr->params;
  const int aln_colour = wrkr->aln.colour; // -1 for all
  const dBNode *nodes = wrkr->aln.nodes.b;
  const size_t block1len = end_idx-gap_idx;
  TraversalResult result;

  ctx_assert(aln_colour == -1 || (size_t)aln_colour == params->ctxcol);

  graph_walker_prime(&wrkr->wlk, wrkr->contig.b, wrkr->contig.len,
                     params->max_context, true);
  graph_walker_prime(&wrkr->wlk2, nodes+gap_idx, block1len,
                     params->max_context, false);

  result = traverse_two_way2(&wrkr->contig, &wrkr->revcontig,
                             nodes+gap_idx, block1len,
                             gap_min, gap_max,
                             &wrkr->wlk, &wrkr->rptwlk,
                             &wrkr->wlk2, &wrkr->rptwlk2,
                             aln_colour != -1, params->use_end_check);

  correct_aln_stats_update(&wrkr->aln_stats, result);

  return result;
}

// @return NULL if end of alignment, otherwise returns pointer to wrkr->contig
dBNodeBuffer* correct_alignment_nxt(CorrectAlnWorker *wrkr)
{
  if(wrkr->start_idx == wrkr->end_idx) return NULL;

  const size_t kmer_size = wrkr->db_graph->kmer_size;

  const dBAlignment *aln = &wrkr->aln;
  const CorrectAlnParam params = wrkr->params;
  const size_t num_align_nodes = aln->nodes.len;

  // Get arrays for nodes and kmer positions in alignment
  const dBNode *aln_nodes = aln->nodes.b;
  const int32_t *aln_rpos = aln->rpos.b;

  // worker_generate_contigs ensures contig is at least aln_nodes->len long
  bool both_reads = (aln->used_r1 && aln->used_r2);
  size_t i, j, block0len, block1len;
  size_t gap_est, gap_min, gap_max;

  dBNodeBuffer *contig = &wrkr->contig, *revcontig = &wrkr->revcontig;
  Int32Buffer *contig_rpos = &wrkr->rpos;

  block0len = wrkr->gap_idx - wrkr->start_idx;

  db_node_buf_reset(contig);
  int32_buf_reset(contig_rpos);
  db_node_buf_push(contig,    aln_nodes+wrkr->start_idx, block0len);
  int32_buf_push(contig_rpos, aln_rpos +wrkr->start_idx, block0len);

  while(!wrkr->gap_idx_missing_edge && wrkr->end_idx < num_align_nodes)
  {
    // block0 [start_idx..gap_idx-1], block1 [gap_idx..end_idx]
    wrkr->end_idx = db_alignment_next_gap(aln, wrkr->end_idx,
                                          &wrkr->end_idx_missing_edge,
                                          wrkr->db_graph);

    wrkr->aln_stats.num_missing_edges += wrkr->end_idx_missing_edge;

    // block0len = wrkr->gap_idx - wrkr->start_idx;
    block1len = wrkr->end_idx - wrkr->gap_idx;

    // We've got a gap to traverse
    long gap_min_long, gap_max_long;
    bool is_mp;

    // Get bound for acceptable bridge length (min,max length values)
    is_mp = (both_reads && wrkr->gap_idx == aln->r2strtidx);

    // gap_est is how many kmers we lost through low qual scores, hp runs etc.
    if(is_mp) {
      ctx_assert(aln->r1enderr == db_aln_r1enderr(aln,kmer_size));
      gap_est = aln->r1enderr + aln_rpos[wrkr->gap_idx];
      wrkr->aln_stats.num_ins_gaps++;
    } else {
      gap_est = aln_rpos[wrkr->gap_idx] - aln_rpos[wrkr->gap_idx-1];
      wrkr->aln_stats.num_mid_gaps++;
    }

    // Wiggle due to variation / error
    long wiggle = gap_est * params.gap_variance + params.gap_wiggle;

    gap_min_long = gap_est - wiggle;
    gap_max_long = gap_est + wiggle;

    // Note: do not apply wiggle to insert gap
    // Work out insert gap kmers using fragment length
    if(is_mp) {
      // Work out insert-gap kmers using fragment length
      size_t sum_read_bases = aln->r1bases + aln->r2bases;
      gap_min_long += params.frag_len_min - sum_read_bases + kmer_size-1;
      gap_max_long += params.frag_len_max - sum_read_bases + kmer_size-1;
    }

    if(gap_max_long < 0) break;

    // Note: we don't deal with negative gaps currently
    gap_min = (size_t)MAX2(0, gap_min_long);
    gap_max = (size_t)MAX2(0, gap_max_long);

    db_node_buf_reset(revcontig);

    // Alternative traversing from both sides
    // gap len is the number of kmers filling the gap
    TraversalResult result;

    if(params.one_way_gap_traverse)
      result = traverse_one_way(wrkr, wrkr->gap_idx, wrkr->end_idx,
                                gap_min, gap_max);
    else
      result = traverse_two_way(wrkr, wrkr->gap_idx, wrkr->end_idx,
                                gap_min, gap_max);

    // status("traversal: %s!\n", result.traversed ? "worked" : "failed");

    if(!result.traversed) break;

    if(is_mp) wrkr->aln_stats.num_ins_traversed++;
    else      wrkr->aln_stats.num_mid_traversed++;

    // reverse and copy from revcontig -> contig
    db_node_buf_capacity(contig, contig->len + revcontig->len);

    // reverse order and orientation of nodes
    size_t new_contig_len = contig->len + revcontig->len;
    for(i = contig->len, j = revcontig->len-1; i < new_contig_len; i++, j--)
      contig->b[i] = db_node_reverse(revcontig->b[j]);

    contig->len += revcontig->len;

    // Append -1 values to rpos for gap
    size_t len_and_gap = contig_rpos->len + result.gap_len;
    int32_buf_capacity(contig_rpos, len_and_gap);
    while(contig_rpos->len < len_and_gap)
      contig_rpos->b[contig_rpos->len++] = -1;

    // Copy block1, after gap
    db_node_buf_push(contig,    aln_nodes+wrkr->gap_idx, block1len);
    int32_buf_push(contig_rpos, aln_rpos+wrkr->gap_idx,  block1len);

    // Update gap stats
    if(is_mp) {
      correct_aln_stats_add_mp(&wrkr->aln_stats, result.gap_len,
                               aln->r1bases, aln->r2bases, kmer_size);
    } else {
      correct_aln_stats_add(&wrkr->aln_stats, gap_est, result.gap_len);
    }

    wrkr->gap_idx = wrkr->end_idx;
    wrkr->gap_idx_missing_edge = wrkr->end_idx_missing_edge;
  }

  wrkr->prev_start_idx = wrkr->start_idx;
  wrkr->start_idx = wrkr->gap_idx;
  wrkr->gap_idx = wrkr->end_idx;
  wrkr->gap_idx_missing_edge = wrkr->end_idx_missing_edge;

  // db_nodes_print_verbose(contig->b, contig->len, wrkr->db_graph, stdout);
  // ctx_check(db_node_check_nodes(contig->b, contig->len, wrkr->db_graph));

  size_t contig_length_bp = contig->len + kmer_size - 1;

  wrkr->load_stats.contigs_parsed++;
  wrkr->load_stats.num_kmers_loaded += contig->len;
  wrkr->load_stats.total_bases_loaded += contig_length_bp;

  if(wrkr->store_contig_lens)
    correct_aln_stats_add_contig(&wrkr->aln_stats, contig_length_bp);

  return contig;
}

/*!
  Correct a whole read, filling in gaps caused by sequencing error with the
  graph
  @param wrkr     Initialised temporary memory to use in doing alignment
  @param r        Read to align to the graph
  @param nodebuf  Store nodebuf from read and inferred in gaps in buffer
  @param posbuf   Positions in the read of kmers (-1 means inferred from graph)
 */
void correct_aln_read(CorrectAlnWorker *wrkr, const CorrectAlnParam *params,
                      const read_t *r, uint8_t fq_cutoff, uint8_t hp_cutoff,
                      dBNodeBuffer *nodebuf, Int32Buffer *posbuf)
{
  size_t i, j;

  db_node_buf_reset(nodebuf);
  int32_buf_reset(posbuf);

  db_node_buf_capacity(nodebuf, r->seq.end);
  int32_buf_capacity(posbuf, r->seq.end);

  // Correct sequence errors in the alignment
  correct_alignment_init(wrkr, params, r, NULL, fq_cutoff, 0, hp_cutoff);

  const dBAlignment *aln = &wrkr->aln;

  // All or no nodes aligned
  if(db_alignment_is_perfect(aln) || aln->nodes.len == 0) {
    memcpy(nodebuf->b, aln->nodes.b, aln->nodes.len * sizeof(dBNode));
    for(i = 0; i < aln->nodes.len; i++) posbuf->b[i] = i;
    nodebuf->len = posbuf->len = aln->nodes.len;
    return;
  }

  size_t left_gap = aln->rpos.b[0], right_gap = aln->r1enderr;

  // Temporary walkers used to traverse the graph
  GraphWalker *wlk = &wrkr->wlk;
  RepeatWalker *rptwlk = &wrkr->rptwlk;

  // Get first alignment, if there are gaps, backtrack
  // nbuf = correct_alignment_nxt(wrkr);
  // ctx_assert(nbuf != NULL); // We've already checked aln->nodes.len > 0

  // Append contigs
  while(correct_alignment_nxt(wrkr) != NULL)
  {
    // printf("got thing!\n");
    ctx_assert(wrkr->contig.len ==  wrkr->rpos.len);
    db_node_buf_push(nodebuf, wrkr->contig.b, wrkr->contig.len);
    int32_buf_push(posbuf, wrkr->rpos.b, wrkr->rpos.len);
  }

  // Couldn't get any kmers
  if(nodebuf->len == 0) {
    // printf("\nGot no kmers!\n\n");
    return;
  }

  if(left_gap > 0)
  {
    // Extend to the left
    wrkr->aln_stats.num_end_gaps++;

    dBNodeBuffer *revcontig = &wrkr->revcontig;
    db_node_buf_reset(revcontig);
    db_node_buf_capacity(revcontig, left_gap);

    // Try to fill in missing kmers
    size_t n = 1;
    while(n < nodebuf->len && posbuf->b[n] == posbuf->b[n-1]+1) { n++; }

    graph_walker_prime(wlk, nodebuf->b, n, params->max_context, false);

    for(i = 0; i < left_gap && graph_walker_next(wlk) &&
                               rpt_walker_attempt_traverse(rptwlk, wlk);  i++)
    {
      revcontig->b[i] = wlk->node;
    }
    revcontig->len = i;

    graph_walker_finish(wlk);
    rpt_walker_fast_clear(rptwlk, revcontig->b, revcontig->len);

    if(revcontig->len > 0)
      wrkr->aln_stats.num_end_traversed++;

    // Insert zero'd items into the start of the arrays
    db_node_buf_unshift_zero(nodebuf, revcontig->len);
    int32_buf_unshift_zero(  posbuf,  revcontig->len);

    // copy in reverse order
    for(i = 0, j = revcontig->len-1; i < revcontig->len; i++, j--) {
      // printf("[add] %zu: %zu\n", j, revcontig->b[j].key);
      nodebuf->b[i] = db_node_reverse(revcontig->b[j]);
      posbuf->b[i] = -1;
    }
  }

  if(right_gap > 0)
  {
    // Extend to the right
    wrkr->aln_stats.num_end_gaps++;

    size_t n = nodebuf->len-1;
    while(n > 0 && posbuf->b[n] == posbuf->b[n-1]+1) { n--; }

    graph_walker_prime(wlk, nodebuf->b + n, nodebuf->len - n,
                       params->max_context, true);

    size_t orig_len = nodebuf->len;
    size_t end_len = nodebuf->len + right_gap;
    db_node_buf_capacity(nodebuf, end_len);
    int32_buf_capacity(  posbuf,  end_len);

    for(i = nodebuf->len; i < end_len && graph_walker_next(wlk) &&
                          rpt_walker_attempt_traverse(rptwlk, wlk); i++)
    {
      nodebuf->b[i] = wlk->node;
      posbuf->b[i]  = -1;
    }
    nodebuf->len = posbuf->len = i;

    if(nodebuf->len > orig_len)
      wrkr->aln_stats.num_end_traversed++;

    graph_walker_finish(wlk);
    rpt_walker_fast_clear(rptwlk, nodebuf->b+orig_len, nodebuf->len-orig_len);
  }
}

redpajama_set_name: RedPajamaGithub


text:
News 24 Dec 2018
Drop GHG emissions offset by yields increase
Greenhouse gas emissions from agriculture are not projected to change significantly (-0.3%) between 2012 and 2030. This is according to the latest EU agricultural outlook.
Agriculture accounts for 10% of total EU greenhouse gas (GHG) emissions. Total non-CO2 (CH4 and N2O) GHG emissions from agriculture are not projected to change significantly (-0.3 %) between 2012, the year used as a reference for the environmental baseline, and the CAPRI projection for 2030.
Agriculture accounts for 10% of total EU greenhouse gas (GHG) emissions. Photo: Shutterstock
Decrease is offset by increase in yields
In 2030, livestock will continue to be responsible for 99% of all methane (CH4) emissions from agriculture, the biggest share (85%) coming from ruminants digestion. A decrease in emissions from ruminants digestion (-5%) is expected due to a decrease in dairy cattle heads associated with an expected increase in productivity. Nevertheless, this decrease will be offset by an increase in nitrous oxide (N2O) emissions. These emissions come mostly from crops (higher crop yields and production) but also from manure application on fields, although the total amount of manure will slightly decrease. Greenhouse gas emissions are therefore expected to stay at the same level then in 2012. Despite this, there is an anticipated drop in the level of atmospheric ammonia across the whole EU, with emissions estimated to decrease by 9% by 2030.
Ammonia emissions per region
The reports also shows some maps to show the ammonia decreases per region. Projected absolute changes in ammonia emissions shows that although many regions are following the general EU trend for a decrease in emissions, many others show no significant change and some may even experience an increase in NH3 levels, for example a number of regions in Poland. The main drivers can be found in the production projections. Looking at animal products, we see that in Bulgaria meat production and N in manure are decreasing and in Romania and Poland, meat production and N in manure from pigs and poultry are increasing but production and manure from dairy cattle are decreasing.
Read also: Global agriculture at a critical crossroads
Large animal production increase in Poland
Whereas the decrease in dairy cattle in Romania offsets the increase in the pigs and poultry sector, resulting in a net decrease in total N in manure, results for Poland show large increases in total animal production (+35% protein production), and N in manure (+15%). Additionally, in Poland the increase in cereal yields is leading to higher cereal production (+30%) and higher total use of N mineral fertiliser (+21%). As a result, total NH3 emissions between 2012 and 2030 are predicted to increase in Poland by 13%, a figure that can be split into emissions from manure (+8%) and from mineral fertiliser (+22%). The emissions from manure are explained not only by the increase in total manure but also by projected changes in manure management systems. In Aragon (north-eastern Spain) the increase is mostly due to increased pigmeat production (+40%). As the model does not account for additional measures to be taken to meet the limits in the NEC Directive, the 2030 NH3 emissions are likely to be lower. Looking at the projected regional distribution of NH3 emissions in 2030, the reports shows that despite the increase in emissions projected in Poland, Spain and Austria, levels are still lower than in those of most of the current hotspots (regions in Belgium, the Netherlands, France, Italy, etc.). The decreases projected for Germany and the UK show a better situation for 2030, except for north-western Germany.
Nitrogen lost to water
The report anticipates a decrease in the amount of nitrogen lost to water in the EU, with projected figures suggesting a drop of 8% when compared to 2012. This change will be primarily driven by productivity gains in the dairy (with less manure produced) and crop sources. This will have a positive effect on plant biodiversity in the EU. The 2012 to 2030 period however should see a modest increase in the potential plant species, showing an increase of 2%.
The full report can be downloaded here.
Emmy Koeleman
Editor: All About Feed & Dairy Global
Eucalyptus reduces methane in dairy calves
Mitigating methane production is still a major concern in dairy production. Researchers are turning to...
On 1 Jul 2020 In Feed additives
Research: Reducing cow's methane emission via feeding
A new project will look at how to reduce the cow's methane emission via feeding and the biological reasons why...
On 6 Mar 2020 In Feed additives
Sustainable contract farming moving forward
Constantly improving both environmental, sustainable and social responsible production, that is the core of the...
On 21 Oct 2020 In Specials
Methane reduction tested at actual dairy farm
Currently, for every litre of milk, about 13 grammes of this strong greenhouse gas gets into the atmosphere....
On 18 Feb 2019 In Raw materials

redpajama_set_name: RedPajamaCommonCrawl


Simplify your ebook protection and fulfillment.
You control the access to your content on every purchase so you can confidently sell your ebooks.
In a few clicks, have your shop up and running with enterprise-grade DRM. Our integrations make it simple and easy to get started.
EditionGuard also supports the ONIX protocol, so you can synchronize with your existing DAM, ERP or other business system able to export ONIX data.
EditionGuard takes care of special licensing and complex configurations so you can focus on your business.
Traditional DRM requires costly licenses. EditionGuard builds licensing into pricing so our customers can reduce initial investment and start delivering content to thier customers.
Custom DRM solutions can take full time staff to create, integrate and maintain. With EditionGuard your business can rely on a proven product with little or no ongoing maintenance.
Give our product a shot. We'll help you integrate and if you aren't satisfied with EditionGuard as a solution we'll offer your money back.


text:
All submissions are made through a secured, third-party software platform. The links below will direct you to that platform. All data and information that is submitted remains confidential, and is only viewed by CREBA staff and/or committee members that have signed a confidentiality agreement.
Representatives from Baker Tilly Virchow Krause, LLP monitor the process to ensure fairness and confidentiality.
For the first step in the awards process, you will want to read and review the rules for each category. Below you will find links to each category's page. Each page will provide you with the rules for the category as well as an example submission where relevant.
Multi-Million Dollar Leasing Club – at least 100,000 square feet or eight million dollars ($8,000,000) ALV
Top 5 Leasing Agents (35 and under) – Regional
Top 10 Developer/Landlord Agent- Regional
Top 10 Leasing Award – DC, VA, MD
Top Regional GSA Leasing
Leasing Transaction of the Year (Over 75,000 RSF)- DC, MD, VA
Leasing Transaction of the Year (Under 75,000 RSF) – Regional
Leasing Firm of the Year- Regional
Multi-Million Dollar Retail Leasing Club – at least 75,000 square feet or four million dollars ($4,000,000) ALV
Top Retail Broker of the Year (Highest total ALV) – Regional
Retail Transaction of the Year- Regional
Multi-Million Dollar Sales Club – at least eight million dollars ($8,000,000) in aggregate sales volume
Top 10 Sales Awards – Regional
Sales Transaction of the Year (Office) – Regional
Sales & Financing Firm of the Year
Multi-Million Dollar Finance Club – at least twenty million dollars ($20,000,000) in aggregate finance volume
Top 10 Finance Awards – Regional
Finance Transaction of the Year- Regional
James L. eichberg Broker of the Year
Broker of the Year nominees must meet minimum qualifications for Multi-Million Dollar Leasing Club and/or Multi-Million Dollar Sales Club. Candidates will be selected based on their overall production during 2020 and prior years, along with their display of leadership qualities within their respective firms, active involvement in community service, and overall participation in the commercial real estate industry.
Brendan McCarthy Memorial Award
This award recognizes a CREBA member whose charitable and philanthropic work best personifies the selfless qualities identified with the life and career of Brendan McCarthy. Candidates will be selected for demonstrating those same qualities of unselfishness, caring, and giving of oneself to help others.
Joseph Stettinius Jr. Leadership Award
This award recognizes industry leadership and management and will be given to an individual active today in a high-level leadership position at any firm related to commercial real estate (This could include leaders at a brokerage house an architectural firm, construction firm, financier, owner, etc.). It will recognize a leader who is kind, compassionate, visionary and smart. A TRUE LEADER who puts the good of all his or her colleagues first and is a confidant and great friend to the business community – all the things that Joe accomplished in his leadership roles.
Recipient of the Rising Star Award shall be selected based upon their contributions to the industry, their customers and their firms. To qualify, a candidate must be 35 years old or younger. Rising Stars should also submit an application for the Multi-Million Dollar Leasing and/or Sales Club(s).
Best in the Industry Awards
Here is your opportunity to recognize your firm as the best in the industry. All nominating firms must have at least one member of the firm registered as a member of the Commercial Real Estate Brokerage Association of Greater Washington, DC (CREBA) in good standing. You may also nominate your favorite firm in these categories. The categories are: Developer, Construction Contractor, Law Firm, Flexible Office Space Provider, Architecture Firm, Furniture Vendor, Moving Company and Project of the Year.
Once you have reviewed the rules and you are ready to begin, download the MS Excel Sample Spreadsheet for the categories below and fill in applicable information. Submit your completed spreadsheet and provide your totals here.
MS Excel Leasing & Retail Submission Spreadsheet (updated 1.11.21)
Top 5 Regional Leasing Agents (35 and under)
Top 10 Developer/Landlord Agent – Regional
Top Regional Retail Brokers of the Year
Leasing Firm of the Year
MS Excel Sales & Finance Submission Spreadsheet (updated 1.11.21)
Top 10 Regional Finance Awards
Top 10 Regional Sales Awards
Below you will find links to the awards submission pages for the following awards.
Brendan McCarthy Memorial
Joseph Stettinius Jr. Leadership Awards
Finance Transaction of the Year – Regional
Sales Transaction of the Year – Regional
Leasing Transaction of the Year (Over 75,000 RSF)- MD , VA, DC
Leasing Transaction of the Year (Under 75,000 RSF) - Regional
Retail Transaction of the Year
AWARDS ENTRY DEADLINE : FEBRUARY 12, 2021


Added Anti-Virus and SPAM methods (amavisd-new, spamassassin, clamav), updated cyrus-imapd section with update instructions, added instruction to restrict imapd admin access.
Non-official test-release: Added lots of fixes and updates. Added OpenSSL and more pam related stuff.
Added Michael Muenz' hints for SMTP AUTH, corrected ca-cert related mistake, improved SGML code (more metadata), updated the software mentioned in the document.
Added new SQL query to initialize web-cyradm to have full data integrity in the MySQL Database, mysql-mydestination.cf reported to be operational as expected.
Added description what is needed in /etc/services Another fix for pam_mysql compile, updated software versions.
Added more description for web-cyradm, fix for wrong path of the saslauthdb-socket, Fix for wrong place of com_err.h, protection of the TLS/SSL private key.
Added description for Redhat users how to install the init scripts.
Added basic description for sieve and correct sender handling, minor fixes to db related stuff, Added mysql-lookup for »mydestination« , fixed bug for building postfix with mysql support.
The cyrus part is only valid for Cyrus-IMAP 2.1.x and Cyrus-SASL 2.1.x. If you plan to use Cyrus-IMAP 2.0.x then please consult the deprecated version 1.0.x of this HOWTO.
There are different approaches on how to set up different mailsystems. Most documents that are available are related to Sendmail, procmail, WU-IMAPd and friends. These packages are very good but are unfortunately very inflexible in their user administration.
For a long time I was testing alternative MTA's like qmail, postfix and exim, in conjunction with IMAP/POP-servers like Cyrus, vpopmail, Courier IMAP and others.
At the end of the day, from my point of view the couple Postfix/Cyrus seems to be the most flexible and best performing solution.
All these combinations of software had one thing in common: their was very little documentation available describing how these packages work together with each other. To install the software, lot of effort has be spent to get all information needed to get all the software running.
This document is copyrighted (c) 2002, 2003, 2004 Luc de Louw and is distributed under the terms of the Linux Documentation Project (LDP) license, stated below.
Martynas Bieliauskas <martynas at inet.lt> submitted a good idea how to restrict the cyrus admin to localhost only.
The nice people at < discuss at tldp.org> for supporting me in writing the HOWTOs.
Feedback is most certainly welcome for this document. Without your submissions and input, this document wouldn't exist. Please send your additions, comments and criticisms to the following email address : <luc at delouw.ch>.
Please understand, that I don't want to add Cyrus-IMAP 2.0.x related stuff in this document anymore.
At the moment no translations are available. A German translation is planned and would be written by me as soon as I get the time.
Translations to other languages are always welcome. If you translate this document, please translate the SGML source. Please let me know if you begin to translate, so I can set a link here.


As the NRA 2019 show approaches, the PRG group is once again thrilled to be presenting their full line of thermal, night vision and other products with special deals up to $700 off. PRG Defense will be located at Booth #420 at the Indiana Convention Center and invites all customers to stop on by and take a look!
PRG is proud to announce that Highby Outdoors, an online retail store based out of Sidney, Nebraska will now be carrying PRG Defense products. Specializing in your hunting and shooting needs, as well as camping and outdoor fun, Higby Outdoors strives to provide top notch customer service and strong product knowledge.
PRG Defense, headquartered in Ashburn, Virginia, has supported U.S. Government sponsored law enforcement, border security, counter-proliferation and anti-terrorism programs domestically and in over 90 countries in furtherance of critical Department of State, Defense, Justice, Treasury and Homeland Security programs since 2003.
PRG Defense, along with its specialty training programs, provides customers in the United States and around the world with thermal imaging, night vision and range finding devices, firearms, personal protective equipment to include ballistic helmets and body armor, as well as baggage and cargo screening systems ranging from handheld devices to large vehicle mounted X-ray systems.
In addition to our support of government and law enforcement, PRG Defense is pleased to announce our products are now available to the private consumer. Whether your passion is camping, wild life preservation, astronomy, air soft or your interest is in security, you will find a wide range of choices to enhance your experience. We now offer our thermal imaging, night vision, range finders, day optics, illumination products and more at a reasonable cost in order to make it easier to become part of your everyday tools. We are certain these will become your go-to products because they are high-quality, dependable and ruggedly built to withstand the most challenging environments.
PRG has proven itself to be a leader in the optics industry since 2003. We are dedicated to quality and want PRG Defense to be the name you think of when you think optics.
Our aim is to provide the best products for our customers at an affordable price. Our products and those of our partners are designed with the latest technology and rugged materials to meet the needs and exceed the expectations of our users and are always quality crafted with precision and integrity.
We invite you to give our superior products a try - you won't be disappointed!


text:
National Humanities Center
Residential Fellowships for 2019-2020
Institution Type: Other
Position: Fellow
Residential Fellowships 2019–2020
The National Humanities Center invites applications for academic-year or one-semester residential fellowships. Mid-career, senior, and emerging scholars with a strong record of peer-reviewed work from all areas of the humanities are encouraged to apply.
Located in the vibrant Research Triangle region of North Carolina, the Center affords access to the rich cultural and intellectual communities supported by the area's research institutes, universities, and dynamic arts scene. Fellows enjoy private studies, in-house dining, and superb library services that deliver all research materials.
Scholars from all parts of the globe are eligible; stipends and travel expenses are provided. Fellowship applicants must have a PhD or equivalent scholarly credentials. Fellowships are supported by the Center's own endowment, private foundation grants, contributions from alumni and friends, and the National Endowment for the Humanities.
Applications are due by 11:59 p.m. EDT, October 17, 2018. For more information and to apply, please visit: https://nationalhumanitiescenter.org/become-a-fellow/.
Tania Munz
Vice President for Scholarly Programs
fellowships@nationalhumanitiescenter.org
Website: https://nationalhumanitiescenter.org/become-a-fellow/
Primary Category: Humanities
Secondary Categories: None


text:
Q: how to create workmanager in websphere offline I have implementation of websocket using workmanager and it is working fine in weblogic.
Below is my web.xml and weblogic.xml
    <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
         http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">
  <display-name>Archetype Created Web Application</display-name>
  <resource-ref>
    <res-ref-name>test_workmanager</res-ref-name>
    <res-type>commonj.work.WorkManager</res-type>
    <res-auth>Container</res-auth>
    <res-sharing-scope>Shareable</res-sharing-scope>
  </resource-ref>
</web-app>

weblogic.xml
<weblogic-web-app xmlns="http://xmlns.oracle.com/weblogic/weblogic-web-app"
                  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                  xsi:schemaLocation="http://xmlns.oracle.com/weblogic/weblogic-web-app http://xmlns.oracle.com/weblogic/weblogic-web-app/1.7/weblogic-web-app.xsd">

    <container-descriptor/>

    <charset-params>
        <input-charset>
            <resource-path>/*</resource-path>
            <java-charset-name>UTF-8</java-charset-name>
        </input-charset>
    </charset-params>

    <work-manager>
        <name>test_workmanager</name>
        <ignore-stuck-threads>true</ignore-stuck-threads>
    </work-manager>

    <wl-dispatch-policy>test_workmanager</wl-dispatch-policy>

</weblogic-web-app>

When the weblogic server starts and user logs in then it will create the workmanger and its working fine.
But I wonder if the same behaviour is there in websphere. I know we can create workmanager in websphere admin console. But is it possible to create it offline(like creating websphere.xml) so that once server started it will create the workmanager instead of going to admin console and create it?

A: You can create a work manager offline using the WebSphere Application Server wsadmin tool, for more information on using wsadmin, start with this IBM KnowledgeCenter topic.  To do so, start wsadmin while the server is not running (or using the -conntype NONE parameter), then issue the following command:
AdminConfig.create('WorkManagerInfo', AdminConfig.getid('/Cell:myCell/Node:myNode/Server:server1/WorkManagerProvider:WorkManagerProvider/'), '[[name "test_workmanager"] [workReqQFullAction "0"] [minThreads "0"] [category ""] [defTranClass ""] [daemonTranClass ""] [numAlarmThreads "2"] [workReqQSize "0"] [jndiName "wm/test_workmanager"] [maxThreads "2"] [serviceNames ""] [isGrowable "true"] [threadPriority "5"] [description "test workmanager"] [workTimeout "0"]]')

You will need to subsitute the values for your cell, node and server names in the above.  One easy way to get those values is to create a work manager using the Admin Console, then use the Admin Console Command Assistance (on the right side of the console, under the Help section) to show the last command issued.  You may copy that command and change the name, jndiName and other attributes.

redpajama_set_name: RedPajamaStackExchange


text:
Long Live La Jiao!
'Red hot' chillies arrive at frozen seed vaultPage last updated at 08:22 GMT, Tuesday, 13 July 2010 09:22 UK
By Mark Kinver
Science and environment reporter, BBC NewsChillies cultivated by Native Americans are among those entering the vaultSeeds from some of North America's hottest food crops have arrived on the Arctic Archipelago of Svalbard to be stored in a "doomsday vault".
The consignment of chilli seeds was delivered to the frozen outpost by a delegation of seven US senators.
Built deep inside a mountain, the vault is designed protect the world's main food plants from future disasters.
Since opening in 2008, it has stored seeds from more than half a million of the planet's crops.
"The chillies really are an interesting story," said Cary Fowler, executive director of the Global Crop Diversity Trust, which funds the operation and management of the seed vault.
Continue reading the main storyThe seed vault in Svalbard will be the safety deposit box that ensures that we can keep that food supply intact
Benjamin Cardin,Democrat Senator for Maryland"They are traditional varieties; they have colourful names and histories," he told BBC News.
"A number of the varieties were provided by a fantastic group of nine US government organisations called Native Seed Search who work with Native American communities.
"These (chilli plant) varieties have been safeguarded for a long time and long may it continue," Dr Fowler added
"But that - of course - depends on an unbroken chain going into the future and you can never really count on such a thing."
Among the varieties to be deposited in the vault was Wenk's Yellow Hots, a pepper that starts out yellow and hot before losing some of its potency and turning red.
The remote, frozen landscape provides an ideal backdrop for the vaultAnother specimen was the "unpredictable" San Juan Tsile, described as a pepper with a heat that has been described as "ranging as anything from mild to medium to hot".
This particular variety is still cultivated by elder farmers in a Native American community in New Mexico.
The group delivering the seeds was led by Benjamin Cardin, Democrat Senator for Maryland, who said the all parts of the world were interdependent when it came to crop diversity.
"As we manage the impact of climate change around the world, the seed vault in Svalbard will be the safety deposit box that ensures that we can keep that food supply intact," he said.
The seeds from the chilli plants, along with other samples such as soy, melon and sorghum, were provided by the US Department of Agriculture's (USDA) National Plant Germplasm, based in Colorado.
"[We] have a strong commitment to sharing our crop diversity to ensure that Svalbard is well positioned to protect the world's genetic diversity," explained Edward Knipling, administrator for the USDA's Agricultural Research Service (ARS).
The seeds are preserved at a temperature of -18C (-0.4F) in two secure store rooms located 130m (426ft) inside a mountain.
The vault has been designed to store duplicates of seeds from collections from all around the world.
If the nation's seeds are lost as a result of a natural disaster, such as widespread flooding, the seed collections could be re-established using the specimens stored in the Arctic.
The £5m ($7m) facility took 12 months to build and opened in February 2008.


1) Why do Honours English? What are the major advantages of an Honours degree?
Many students with a strong engagement in their English program may find that the 36-credit Major simply isn't enough—just scratching the surface of what could be explored. A 60-credit Honours program allows students to graduate both with a broad, extensive background in most areas of the field and also with a strong, in-depth concentration on a specialized area of interest. In their later years, Honours students also take more small, upper-level seminars, thus developing more personal relationships with a range of professors in the department and with their student cohort, as well as a more advanced knowledge of English studies. In the final year of the Honours program, each student undertakes a 6-credit Honours Essay, working closely with one supervising professor over two semesters to complete this substantial, specialized research project. For many Honours students, the Honours Essay is a key attraction. The chance to conceive of an ambitious research project on a special topic of personal interest, design a reading list and research plan for approaching this topic, and then write up the essay in one-on-one consultation with a supervisor can be a highlight of the undergraduate career.
2) Why would some students reasonably choose not to do Honours?
An Honours program is intended to give the student advanced knowledge in one field or discipline. Students who are more interested in breadth than in specialization might decide to spread their studies over several departments (with a Major and two Minors, for example); students strongly interested in two distinct disciplines might choose a Double Major; and students who want to do fully interdisciplinary work bringing together study in two fields may design a Joint Honours program.
3) Is an Honours degree a prerequisite for admission to graduate school?
No, these days an Honours degree is no longer a specific requirement for most graduate programs. But, even if it is not technically required, an Honours program does still offer by far the best preparation for graduate study, and can be a great advantage for those applying to graduate schools. The Honours degree itself is a strong indicator that the student has earned admission to, and completed the requirements of, an advanced, highly selective program of study and research. An Honours English program gives students both broad coverage in their field and a coherent, in-depth training in their area of specialization. A range of smaller seminars in later years also gives Honours students an impressive amount of advanced training—and contact with several professors who have followed the students' work closely and so can support them with strong, detailed letters of reference. Successful completion of the research and writing for the yearlong, 40-to-50-page Honours Essay is an accomplishment valued by graduate schools in many fields, as well as by future employers outside of academia.
4) When do students apply to the Honours program?
Generally at the end of U1 (the first year in an English Major program)—after the student has completed at least 18 credits (6 courses) in English. But many students also apply at the end of U2. Those who apply at the end of U2 should have carefully planned their course selections in U1 and U2, choosing courses with an eye on the Honours requirements, in consultation with an Honours advisor, even before they have actually submitted their applications to the program.
5) If I do decide to apply to the Honours program later in my McGill career, will I be allowed to stay for an extra term or year at McGill, or to take credits beyond the 120-credit limit?
This is not a decision of the English Department, but of the Associate Dean of Students' office. Generally, though, the Associate Dean of Students will give a student permission to register for additional terms, and additional course credits, if it can be shown that these specific courses and credits are necessary for completion of the requirements of the student's Honours, major, or minor program.
6) Can I consult with an Honours Advisor before I am admitted to the Honours program?
Yes, students are strongly encouraged to meet with an Honours advisor as soon as they begin considering the option of applying to Honours. It is a good idea to consult with an Honours Advisor even before you apply to the program—to define a "field of inquiry," design a coherent study plan, choose courses, help select a potential Honours Essay supervisor, and so on. This is especially encouraged for students who plan to apply only at the end of U2; things will go much more smoothly if such students have consulted an Honours Advisor about course selection, etc., long before actually applying for admission to the Honours program.
7) Is it possible to combine a semester or year of Study Abroad with an Honours program?
Yes, but this will also require especially careful planning of course selections, both at McGill and at the foreign school.
8) Do I need to have already defined a precise topic for my Honours Essay at the time of applying to Honours?
9) What if my interests change after I have been admitted to Honours, and I decide I would like to shift the focus of my advanced course work and my Honours Essay to a different "field of inquiry"?
This is not unusual. The student would not be required to re-apply to the Honours Committee, but would simply need to find a new supervisor who agrees to work with the student on the newly-defined Honours Essay. In such cases, the professor who serves as "sponsor" of the application for admission to the program will be different from the essay supervisor (who consults with the student on the project and on related course choices in both terms of U3).
10) Is it possible to do a "creative" Honours Essay—in any of the department's three streams? How would such a project work?
In rare cases, students are allowed to plan a "creative" thesis—usually involving the writing of a collection of poems or short stories; the making of a film; or the writing/production of a play. In such cases, the student should of course have had a great deal of previous experience in such creative work, evidenced through course work, independent study projects, or a strong portfolio of prior creative projects. The student would also have to find a professor who would approve the project and agree to supervise it. All creative projects must also include an analytical component—an accompanying research essay exploring issues related to the creative work done for the project.
11) If I meet the minimum requirements for CGPA and EGPA, am I guaranteed admission into the Honours Program?
No. Meeting the grade requirements is a strong start, but the Honours Committee makes admissions decisions on the basis of the complete application package—including the writing sample, the statement defining a "field of inquiry," and so on.
12) When should I begin preparing my application to the Honours program?
Although completed applications are not due until the end of exam period in each winter term, students are encouraged to begin to prepare for the application process by at least January because the application process requires a good deal of prior thought, planning, legwork, and consultation with a potential faculty sponsor/supervisor. The application process is, in fact, quite simple. But getting the support and signature of the faculty sponsor/supervisor, and agreeing on the definition of the "field of inquiry," can take some time.
13)After I have submitted my application to the Honours program, when can I expect to hear about the Honours Committee's decision?
Normally the Honours Committee meets to make admissions decisions in late May, and students will be contacted about the decision in early June.


Driving alongside a large commercial truck on our highways and interstates can be an intimidating experience. Add a distracted driver to the equation and results can quickly turn deadly.
Distracted big rig drivers are causing more and more car accidents in Alabama and elsewhere. In an attempt to curb this deadly behavior, the (NTSB) that suggested that every state considers creating and enforcing a cell phone ban for commercial vehicle drivers.
The NTSB recommends that this ban includes both cell phones and text messaging devices, according to the Montgomery Advertiser. Cell phone use during emergency situations would be the only exception. A ban like this could significantly reduce the risks of trucking accidents in Alabama.
This recommendation comes after a hearing that recently took place that involved an Alabama trucker and a fatal accident that killed 11 people and took out several buildings back in March of 2010. The driver of the truck involved in that accident made several phone calls and sent several text messages just seconds before the fatal accident. Phone records reveal that he had made 70 texts and call within the 24-hour period leading up to the incident.
Our Montgomery trucking accident attorneys understand that accidents involving tractor-trailers and other big rigs can oftentimes product fatal consequences. To help prevent a number of these accidents, the NTSB recommends that all 50 states prohibit the use of both hand-held and hands-free devices by these drivers of commercial trucks. The board has turned the recommendation over to the Federal Motor Carrier Safety Administration to help pass it as a law since the NTSB does not have the authority to do so.
"It can be especially lethal when the distracted driver is at the wheel of a vehicle that weighs 40 tons and travels at highway speeds," said NTSB Chairman Deborah A.P. Hersman.
Some truckers are defending their right to use cell phones while driving, disregarding the number of studies that have proven the dangers of the action. Recent studies conclude that using a cell phone while driving gives you the same abilities and reaction times as a driver that is legally drunk, or has a blood alcohol concentration of 0.08.
One of the best solutions for this problem would be for the Alabama Legislature to enact a ban that would stop the use of cell phones and text messaging devices by all drivers on our roadways. A number of lawmakers have made that rather difficult though, as some have blocked recent bills to ban texting drivers statewide. A ban of cell phone use by drivers has never come close to passage in our state. Alabama is one of the few states left that has not regulated the use of cell phones by adult drivers.
"Distracted driving is becoming increasingly prevalent, exacerbating the danger we encounter daily on our roadways," Hersman says.
In 2009, there were nearly 5,500 people killed on U.S. roadways because of accidents that involved a distracted driver. More than 990 of these deaths were the result of driver using a cell phone, according to distraction.gov.
If you or a loved one has been injured in a trucking accident in Montgomery or the surrounding areas, contact the car accident attorneys at Allred & Allred P.C. to discuss your rights. Call for a free consultation at 334.396.9200.


The town of Srirangam is on a river island adjacent to the city of Trichy in the state of Tamil Nadu in south India. The central function of Srirangam is the thousand-year-old temple Sri Ranganathaswamy Temple dedicated to Vishnu, a principle deity in Hinduism, the preserver in the Hindu trimurti that includes Brahma, the creator, and Shiva, the destroyer. The temple is said to be world's largest functioning hindu temple with seven enclosures, and is on the list of becoming a UNESCO site. On the other side of the river in Trichy there is a rockfort with 7th century temples dedicated to Shiva and his son Ganesha.
For our Trichy visit, we decided to stay in Srirangam as there appear to be a few good housing choices on Airbnb. We booked a two-bedroom apartment that is probably within the fourth enclosure of the temple. The hosts are two young fellows probably in their upper twenties. Upon our arrival, they welcomed the two of us in the apartment, and while introducing the space, they informed us that this is a complex of brahmin families, and thus as a rule non-vegetarian food should not be consumed on the premises. Well that was fine with us and we respected it. They also told us that when we meet a guard at the gate we just needed to tell him that we are the guests at this apartment. So, that's noted. The two hosts also belong to the brahmin class.
The two-bedroom apartment with a living area, a dining area, a kitchen, and two bathrooms is on the second floor of a three-storey building. The interior decoration and furnishing was basic but neat and clean and enough for all living needs. There are windows on three sides. The design is that the windows mostly face into the shades, or gaps of walls, making the interior relatively cool but sacrificing any view. There are ceiling fans in all areas, and there is an AC in each of the bedrooms. Actually, AC's were not quite necessary even when the outside temperatures falled between 25 and 38 degrees celsius.
Inside, we were not seen by anyone, and though at times we heard conversations from other homes and as a matter of fact, some women did talk quite much, we did not make much noises to be heard by others. We did quite some reading and browsing in the apartment. The hosts prepared us a 4G wifi dongle that worked very well.
Out from the door of the apartment is a half open corridor with homes fully lined up on one side and half on the other side which has the open stairs. There is an elevator by the stairs but it was not in use. Outside the building there is not much yard space, just a walkway to the gate between the wall and the building. The ground floor apartments have doors open to the walkway. That was where we often saw some mid-aged women sitting outside. Every time, we gave greetings and a genuine smile. That is my attitude first acquired when studying in northern New England but fortified three years ago travelling in Sri Lanka where the buddhists believe authentic smiles giving other people happiness will also gain oneself credits for future lives. We are not buddhists but took this as a good way of life because smiling while giving other people a happy sense also at the same time makes ourselves happy on the subconscious level.
In the Srirangam complex, it was our first time discovering that smiles do not always give other people happiness. The women, though fixing their eyes on us while we passed by, had very numb eyes and faces. There were no reactive expressions to our smiles and greetings. I tried a bit to discern if there was any happiness behind the expressionlessness and actually found none. It just so appeared that happiness is not in their desire, "Is it perhaps a stage of enlightenment?", we questioned ourselves. We didn't know the answer, but kept doing our way of life during our limited times going in and out.
At times, we also saw men, the brahmins, always shirtless, riding motorcycles going in or out, not as idling as the women though. They generally ignored us, giving us not much chance for interaction, although during a couple times when we forcibly greeted some of them with our hands firmly folded, they did give us a nod back.
Coming back in the first evening from outside, we met the guard at the gate for the first time. We greeted him while walking in, but he stopped us. He did not speak much English, but appeared in a way that we the tourists were going into a place that is not for tourists. We explained in English that we were the guests at an apartment inside, but he didn't understand it, then we had to show him the key, though not marked with anything, he started to understand though still feeling confused that we stayed in there. He hesitantly let us in. As we walked past him, he showed a gesture much like a thumb up but with his thumb at his mouth while looking at us in a confused expression. We saw that similar gesture from Laos police while driving in Laos. It meant asking for a bribe for drinks. We couldn't believe that this man drinks, so just shaked our heads and walked away. At some later occasions and even at the time of our departure, he made the same gesture again, and I still don't understand what he meant.
A thousand answers then came up to my mind. Leo Jia, probably the most obvious. But I knew then he would ask "who is Leo Jia?". So that wouldn't do. An investor? A speculator actually? A quant trader? He won't understand it, I am sure. A doctor of philosophy? A former business executive? Well, does he really care? A world traveller? A life-long learner? Well, that sounds too broad to him. A Gandhi ji admiror ("Live as if you are to die tomorrow, learn as if you will live forever" is my motto)? Well what if he doesn't like Gandhi ji (I was shocked to learn some Indians don't)? A Shiva enthusiastic (been through a third into the wonderful TV series "Devon Ke Dev Mahadev", we were deeply touched by Shiva)? Well, he is most likely a Vishnu devotee. A newbie Vedanta learner? Well, does he learn the Vedanta? Or do I have enough to talk with him about the Vedanta? I just got started.
Or just to be dangerous enough, as Vedanta teaches: "A god, just as you are one"? I actually have been learning about the question "who am I" since many years ago, and recently came to realize that this is the most proper answer: I am a god. Well, that's very likely too dangerous there. He doesn't seem enlightened enough. Or he wouldn't have asked this question, and he definitely wouldn't show anger in his face.
So I chose a most practical answer: "I am the guest of this apartment".
As if not understanding my answer, he asked again, in the same way, "who are you?"
I answered again: "I am the guest of this apartment".
Then he said: "no foreigners are allowed in this building". (Well, should I have chosen a different answer? And I hadn't come up with the answer as a foreigner) Anyhow, I told him then I need to contact our host, then he nodded and left.
The young host came very shortly, and apologized repeatedly for the old mind. The older man turned out a leader of the community.
So we agreed to leave. As we were waiting for our Ola auto outside the gate, the guard showed up with his mouth-thumb gesture again, and we had to ignore him on that.
It was an exceptional experience. However one can make out of it, I chose to believe that God sent the old man to quiz me. Even though I didn't give the correct verbal answer, the answer in my mind leads to the correct one.


text:
Queen | Save Me (instrumental)
Queen | Save Me (instrumental)Reviewed by Studio on Dec 23Rating:
"Save Me" from the 1980 Queen release The Game helped the album go to #1 on the Billboard Top 200 Albums chart. The album was recorded at Musicland Studios, Munich, Germany and produced by Queen and Mack. Here's an example where you can hear all sorts of guitar parts, drum fills and background vocal parts you never hear as clearly in the full mix:
GUITARS (Brian May), DRUMS (Roger Taylor), PIANO (Freddie Mercury), BACKGROUND VOCAL (Brian May, Freddie Mercury, Roger Taylor):
Queen | Bohemian Rhapsody (vocals)
Queen | Seven Seas Of Rhye (multitrack)
Queen | Killer Queen (Brian May guitar only)
Queen | Brighton Rock (vocal only, Roger Taylor drums only)
Queen | Somebody To Love (background vocals only)
Tags: Queen


text:
The Creature from the Pit (La criatura del foso) es el tercer serial de la 17ª temporada de la serie británica de ciencia ficción Doctor Who, emitido originalmente en cuatro episodios semanales del 27 de octubre al 17 de noviembre de 1979. Es el primer serial con David Brierley como la voz de K-9

Argumento
El uso de un transceptor MK3 de emergencia en la TARDIS identifica una llamada de socorro y lleva la nave hasta el mundo lleno de jungla de Chloris, donde el metal en todas sus formas es una comodidad rara y preciada. El Cuarto Doctor, Romana y K-9 se aventuran al exterior para descubrir los restos de un huevo inmenso en la jungla, y cuando conocen a los habitantes, encuentran una sociedad matriarcal gobernada mediante el terror por la gélida e insensible Lady Adrasta. Sin metal para hacer herramientas que mantengan la jungla bajo control, la vida vegetal es la dominante. Lady Adastra controla hasta la última mina de metal del planeta, manteniéndose en el poder a través de los Cazadores y los Lobos de Maleza. Su sala del trono contiene un adorno de metal que incluye un escudo. Ella menciona a la Criatura que mora en un profundo foso en Chloris. Mientras tanto, Romana es capturada por un equipo de buscadores, dispuestas a encontrar y apoderarse de más metal, y se ven particularmente impresionados por las posibilidades de K-9...

Producción

En la realidad este fue el primer serial de la temporada que se rodó. Así, la interpretación y forma de vestir de Lalla Ward como Romana es algo diferente a lo visto en seriales anteriores, ya que aún estaba haciéndose con el personaje. También fue la última historia dirigida por Christopher Barry, uno de los trabajadores más longevos de Doctor Who.

Aunque la solución del Doctor al problema de la estrella de neutrones agitando un escudo de aluminio a su alrededor se criticó como tonta, la idea de hecho se la propusieron a David Fisher miembros del Instituto de Astronomía de la Universidad de Cambridge. El director, Christopher Barry, y el diseñador de efectos especiales, Mat Irvine, sufrieron una reprimenda de la dirección de la BBC por la apariencia de la criatura, Erato. La apariencia fálica del proboscis en el primer episodio provocó carcajadas descontroladas en el estudio y un cambio durante la noche para añadirle a la criatura un par de pinzas.

Notas del reparto
Tollund fue interpretado por el antiguo director de Doctor Who Morris Barry. Eileen Way había aparecido en el primer serial de la primera temporada de Doctor Who, An Unearthly Child. Terry Walsh interpretó a Doran en la primera parte. Fue su última aparición en la serie tras varias anteriores desde 1966 y después de trabajar como coreógrafo de luchas y como doble para Jon Pertwee y Tom Baker.

Publicaciones comerciales
The Creature from the Pit se publicó en VHS en julio de 2002. El DVD se publicó en mayo de 2010.

Referencias

Episodios de Doctor Who del Cuarto Doctor
Episodios de televisión de 1979

redpajama_set_name: RedPajamaWikipedia


Karen has been a practicing nurse continuously since 1976 and is a retired Professor of Pediatrics, UNC School of Medicine, who spent 35 years working in infant mortality reduction at the local, state and national level. She worked as a Red Cross Disaster Nurse from 1995-2002 and assisted in emergency operations across NC, in VA, PA and at the Pentagon, September 11, 2001. She is also experienced as a Hospice Nurse, a Geriatric Care Manager and is currently the Nurse and Executive Director of Fearrington Cares.
Pat has a Bachelor of Social Work, a Masters in Professional Accountancy and a CPA – license now expired. She managed a 3 location medical practice, included all financial work, financial statements, A/P, A/R, staffing, patient relations, insurance billing. She was also the property manager for 2 of the 3 locations. Pat has been with Fearrington Cares since January 2008.
Paula was born in Chicago, moved to NYC and then to North Carolina, her home for over 40 years. She went to the University of Illinois majoring in Math Education. She started her career in advertising, then worked in marketing and human resources. After retiring, Paula began volunteering, first for Hospice and then Fearrington Cares. She also volunteers for CARE, an animal rescue group.
Christy is a native North Carolinian and lover of this part of the state. She became acquainted with Fearrington Cares in the spring of 2015 when she did her community externship here for school. Working with villagers and seeing this amazing organization had a profound impact, so she decided to stay! Christy is a Licensed Massage and Bodywork Therapist and she has the privilege of serving those here at Fearrington Cares as well.
Barbara has a B.A. mathematics and English from the University of Albany and a PhD in psychology. She was a professor in Applied Psychology Department at NYU for 36 years and served as Chair of University Committee on Human Subjects. She was on the board of directors of Harborfields Public Library and of Pederson-Krag Center. She grew up in the suburbs of Buffalo NY and moved to Long Island, NY and then moved to Fearrington in summer of 2008.
Jon has a B.A. (Psychology, The University of Maine) and an M.A. and Ph.D. (Sociology, The University of Connecticut). He retired in 2008 from the University of Pittsburgh/Johnstown as Emeritus Prof. of Sociology and the Acting Vice-President for Academic Affairs. In 2009, he became a Maryland Legacy Leader on Public Policy and worked as a legislative aide in the Maryland General Assembly. In 2010, he relocated to Fearrington Village, and is active in village groups and community activities in and outside of Fearrington.
Carol is a former Chicagoan who graduated from Roosevelt University (geology) and worked for U.S. Gypsum Corporation (Chemicals Division). In 1991 she moved to Durham and was a Duke Garden's board member when the construction of a new visitor's center was undertaken. She moved to Fearrington in 2004 and has been an active member of several Fearrington organizations with service on the FHA, Friends of the Arts and Film Club boards.
Mark has a BSBA and MBA from Bowling Green State University and a Ph.D in Accountancy from the University of Missouri. He is a licensed CPA in Ohio (Inactive) and is a Certified Computing Professional. He retired from Bowling Green State University as the Ernst & Young Professor of Accounting. Mark also worked for Ernst & Young, is a life member of the American Accounting Association and has been a board member and/or treasurer for a number of non-profits organizations. Consulting activities have ranged from the USDA Agricultural Research Service to the local airport in Bowling Green, Ohio. Hobbies include woodworking and flying.
Steve has a B.S. in Health Science, a Masters in Epidemiology and a Doctorate in Public Health. He is a former Department Head and Associate Dean and is Professor Emeritus of Health Sciences. He has served as a consultant to various Federal departments and to the United Nations. He moved to Fearrington Village in 2011 with wife Donna.
Matthew is a graduate of Boston University with degrees in Political Science and Journalism. He had two careers, in survey research, predicting election outcomes and consumer behavior, then as a computer store owner. He grew up in NYC, lived in Boston, Los Angeles, San Francisco, moved from NYC Upper West Side to rural Maine and finally to Fearrington Village in 2009. (Un)official FV photographer.
Cindy has a RN, a B.A. in Anthropology and Health and Human Services and a M.S. in Epidemiology. She was a hospital nurse and did research at 2 Buffalo hospitals. Refugee health care became her primary work. She volunteered and advised refugee resettlement agencies and a Community Health Center in Buffalo, served on refugee related non-profit boards and the Women's Law Center in Buffalo.
Mike and his wife Mary moved from Fairfax, VA to Fearrington in March 2011. A retired Foreign Service Officer, he served at Embassies in Europe, Mexico, and Central America and at the Department of State in Washington. Born in New York, grew up in Atlanta, went to college in Denver, served as a Peace Corps Volunteer in Honduras. did graduate work at the University of Pittsburgh, and received a Master's degree from the George Washington University. In Virginia, Mike was active with his homeowners association for five years (two as President). Until June 2018, he served four and a half years as President of the Camden Park Homeowners Association. He has been a Fearrington Cares volunteer driver for a little over two years.
After studying theater arts and art history at Lake Erie College, Tina spent more than 40 years as an editor and writing coach for investment banks, including Lehman Brothers and JPMorgan. She served on the boards of her residential cooperative in Brooklyn and a dance-related nonprofit, and she was a volunteer at Gay Men's Health Crisis for many years. In 2007, Tina moved to academia, where she was an administrator at Barnard College and later Columbia University. She and her husband moved to Fearrington in December 2015.


text:
Q: mysql query issue more left joins MY mysql query is as below :
SELECT
    `pickupreq`.*,
    `pinP`.`Pincode` as PinP,
    `pinD`.`Pincode` as PinD,
    `tslots`.`StartTime`,
    `tslots`.`EndTime`,
    `usr`.`FirstName`,
    `usr`.`LastName`,
    `staff`.`FirstName` as sFirstName,
    `staff`.`LastName` as sLastName,
    `ord`.`Id` as OrderId,
    `ord`.`NoOfItems`,
    `ord`.`NoOfItemsReadyForDelivery`,
    `ord`.`CurrentStatus`,
    `ord`.`TotalAmount`,
    `ord`.`PickupSignature`
FROM
    (`PickupRequests` as pickupreq)
    LEFT JOIN `Users` as usr ON `usr`.`Id` = `pickupreq`.`UserId`
    LEFT JOIN `Users` as staff ON `staff`.`Id` = `pickupreq`.`AssignedTo`
    LEFT JOIN `TimeSlot` as tslots ON `tslots`.`Id` = `pickupreq`.`TimeSlotId`
    LEFT JOIN `Orders` as ord ON `ord`.`PickupRequestsId` = `pickupreq`.`Id`
    LEFT JOIN `UserAddresses` as addrpick ON `addrpick`.`Id` = `pickupreq`.`PickupAddressId`
    LEFT JOIN `Country` as countryP ON `countryP`.`Id` = `addrpick`.`CountryId`
    LEFT JOIN `State` as stP ON `stP`.`Id` = `addrpick`.`StateId`
    LEFT JOIN `City` as cityP ON `cityP`.`Id` = `addrpick`.`CityId`
    LEFT JOIN `Pincode` as pinP ON `pinP`.`Id` = `addrpick`.`PincodeId`
    LEFT JOIN `UserAddresses` as addrdeli ON `addrdeli`.`Id` = `pickupreq`.`DeliveryAddressId`
    LEFT JOIN `Country` as countryD ON `countryD`.`Id` = `addrdeli`.`CountryId`
    LEFT JOIN `State` as stD ON `stD`.`Id` = `addrdeli`.`StateId`
    LEFT JOIN `City` as cityD ON `cityD`.`Id` = `addrdeli`.`CityId`
    LEFT JOIN `Pincode` as pinD ON `pinD`.`Id` = `addrdeli`.`PincodeId`
WHERE
    `pickupreq`.`PickedUpStatus` = 'Yes'
    AND `pickupreq`.`Status` <> 'CancelRequest'
    AND `ord`.`CurrentStatus` NOT IN ('Completed', 'Delivered')

above table not gets record whos value is NULL and 0 in Orders table's PickupRequestsId.
what should i do to also get NULL and 0 value records from Orders table's PickupRequestsId column

A:      LEFT JOIN `Orders` as ord ON `ord`.`PickupRequestsId` = `pickupreq`.`Id`
+-->
|    LEFT JOIN `UserAddresses` as addrpick ON `addrpick`.`Id` = `pickupreq`.`PickupAddressId`
|    LEFT JOIN `Country` as countryP ON `countryP`.`Id` = `addrpick`.`CountryId`
|    LEFT JOIN `State` as stP ON `stP`.`Id` = `addrpick`.`StateId`
|    LEFT JOIN `City` as cityP ON `cityP`.`Id` = `addrpick`.`CityId`
|    LEFT JOIN `Pincode` as pinP ON `pinP`.`Id` = `addrpick`.`PincodeId`
|    LEFT JOIN `UserAddresses` as addrdeli ON `addrdeli`.`Id` = `pickupreq`.`DeliveryAddressId`
|    LEFT JOIN `Country` as countryD ON `countryD`.`Id` = `addrdeli`.`CountryId`
|    LEFT JOIN `State` as stD ON `stD`.`Id` = `addrdeli`.`StateId`
|    LEFT JOIN `City` as cityD ON `cityD`.`Id` = `addrdeli`.`CityId`
|    LEFT JOIN `Pincode` as pinD ON `pinD`.`Id` = `addrdeli`.`PincodeId`
|   WHERE
|    `pickupreq`.`PickedUpStatus` = 'Yes'
|    AND `pickupreq`.`Status` <> 'CancelRequest'
+--- AND `ord`.`CurrentStatus` NOT IN ('Completed', 'Delivered')


Wherever you live, whatever your age, no matter what your goals are, Frank Zane can help you get in the absolute best shape of your life. Millions of people from all around the world have benefited from the use of Frank's Training Programs, Seminars, Books, Nutritional Supplements, Exercise Equipment, Videos and Audio Tracks, and now, you too can create the incredible physique that you've always wanted.
Frank Zane has won all of bodybuilding's major titles including Mr. Olympia (3 Times), Mr. Universe (3 Times), Mr. World and Mr America. Frank is one of the leading experts on bodybuilding and active aging. He is a world-renowned performance coach and the most highly educated bodybuilding champion. He has been named as one of the "Top 10 Legends of Bodybuilding" and also was awarded "The Best Physique of All Time" by Muscle and Fitness Magazine in April 2015.
Frank is considered by many to be an exemplar of aesthetics and physical proportion in the history of the sport. He has been inducted into both the Bodybuilding Hall of Fame and the Muscle Beach Hall of Fame. No one knows more about bodybuilding and physique development in all of it's aspects other than Frank Zane. Only three people in the history of professional bodybuilding ever defeated Arnold Schwarzenegger. Frank is one of them.
Sign up today to receive occasional health and fitness tips by email from Frank. We promise not to spam you or sell your information.
I consent to having FrankZane.com collect my name and email.
Your speech can become self-fulfilling prophecy. The truth is we shape our lives, invent our future body by our attitude: what we think, say, and do. Everybody knows how difficult it is to build your body. So why put obstacles in your way?
FREE Autographed 1979 Desert Photo with ANY order over $50! While supplies last.


This best describes what I have been doing the past few months, in the clearest of moments, anyway. But the flitter flutter flows in these days, doesn't it? And it is difficult to know what is "randomness" and what is important. And so the concentrating isn't as concentrated, nor the withdrawing as withdrawn, so I have gone on seeking it. And never quite finding it. Nothing astonishingly new, really…these seasons of a woman's life?


Wildfires strike California every year. But they're getting worse, causing deaths and uprooting communities. But who is to blame for these increasingly destructive wildfires?
During a radio interview with Breitbart News, Zinke said that "environmental terrorist groups" are preventing the government from managing forests and are largely responsible for the severity of the fires. But fire scientists and forestry experts have said climate change is the main factor behind the problem.
Zinke said during the interview that an overabundance of fuel load — things such as twigs and leaves that make it possible for fires to burn — make fires more intense.
"There have been a number of instances where environmental groups have submitted petitions to the Bureau of Land Management, halting companies from removing dead and dying timber until the BLM can sort through each petition point," Department of the Interior spokesman Faith C. Vander Voort said in an email. "These actions halt proper forest management and leave the West vulnerable to incredible devastation."
But Monica Turner, an ecologist at the University of Wisconsin at Madison, said this argument doesn't address the bigger problem.
While the devastation has gotten significantly worse, people living in the wildland-urban interface — communities next to natural areas — make the severity of the fires more palpable.
"While these fires are a tragedy, it's also an opportunity to rethink our fire policies on a broader level as well as how and where we build our homes," Yana Valachovic, a forest management expert, told The Post.
Many took issue with Zinke's refusal to acknowledge that climate change is a major factor in the California wildfires.
Research shows that human-caused climate change is a primary factor behind the recent increase in fire severity. A 2016 study published in the Proceedings of the National Academy of Sciences found that the heat and drought brought about by climate change was responsible for doubling the amount of land burned in the western United States between 1984 and 2015.
Environmental groups also took issue with the labeling of "terrorist."
President Trump was was criticized last week for tweeting that "bad environmental laws" magnified the fires.
Trump's claim was quickly debunked by experts on Twitter.
"California's forests are burning because of past severe drought and current extreme temperatures and weather, worsened by human-caused #climatechange, which you think, in your fantasy world, doesn't exist," tweeted Peter Gleick, a scientist and co-founder of the Pacific Institute.


text:
Taiwan vs China in Haiti: Jovenel Moise assassinates the hope of the Haitian people
Catégorie : Economie
Taiwan-China-US in Haiti
The battle of Taiwan and People's Republic of China: Jovenel Moise assassinates the hope of the Haitian people
Article by Tout-Haiti published on September 25, 2017
[Translation by theEzili's Haitian Lawyers Leadership Network and FreeHaiti Movement ]
[Read original in French ]
During his participation in the 72nd Session of the General Assembly of the United Nations, President Jovenel Moise surprised everyone by defending the cause of Taiwan against the future of Haiti. An attitude which very clearly means the rejection of the project of reconstruction of Port-au-Prince by Communist China which should start at the end of this year.
The Haitian President has simply chosen to spit on a gigantic project containing large-scale works such as the construction of a 600 megawatt power plant to elect Port-au-Prince and the whole country, The building of public markets, the construction of several thousand apartments at the bottom of the city, the construction of a railway linking Port-au-Prince and the rest of Haiti, the mobilization of Five Billion Dollars US and 20,000 jobs.
This intervention by President Jovenel Moise follows the media leaks in the middle of September by IDB's resident representative in Haiti, Koldo Echebarria, where he said, without equivocation, that any new commercial loan granted to Haiti by Chinese firms would entail a renegotiation of the agreements between the country and its institutional financial partners. By accepting nonconcessional loans from China, it is clear that the Haitian state is violating its commitments to the international community. After the earthquake of January 12, 2010, Haiti had officially accepted, before the international community, to refuse any loan whose elementary "funds" does not taken include at least 35 % (of IMF funds) into the account. For example, in the case of the expansion of the Toussaint Louverture international airport, by a Chinese firm, Haiti had not respected this situation. Because of this, the works were abandoned in November 2016.
According to our sources, IDB President Luis Alberto Moreno went further in his meeting in New York with President Jovenel Moïse, on the sidelines of his participation in the 72nd General Assembly of the United Nations, ordered the Haitian President to block the reconstruction project in Port-au-Prince, the starting point for the reconstruction of Haiti for a total amount of 30 billion US dollars.
In his speech at the United Nations on 21 September 2017, Jovenel Moses assassinated the hope of the Haitian youth and the Diaspora, but unwittingly opened the way for the real mobilization to enable the Haitian people to appropriate this vast project.
Jovenel Moïse is in line with past leaders who have used diplomatic relations with Taiwan to benefit from the CASH diplomacy set up by Taipei to maintain his friendships without any concern for the development of the country.
To view the video of the reconstruction project of Port-au-Prince click on:https://www.youtube.com/watch?v=1YzUEAFS-B8 [Unofficial English translation, read original French here https://goo.gl/ZVrTJP ]
Source: https://www.facebook.com/groups/ayitijiskobou/permalink/1897569020268213/
LES DERNIERES NOUVELLES
Pétition du HLLN contre les prédateurs sexuels de l'ONU et pour le dédommagement des victimes de la de la Minustha
Des acteurs de la lutte contre l'impunité réunis à Port-au-Prince pour renforcer la mobilisation citoyenne
A cause de la Raison d'état : le Consulat de New York refuse de confirmer si Stanley Lucas continue de recevoir un chèque de l'institution
Tout Haiti plaide pour l'adoption d'une Loi sur le libre accès à l'information en Haïti.
Le CSPJ, couloir préféré des corrompus pour la formation du Conseil Electoral Permanent