text:
Home » EI Presentation
EI Presentation
From http://en.wikipedia.org/wiki/First_cause
Aristotle's theology
"The unmoved movers are, themselves, immaterial substance,"
"This immaterial form of activity must be intellectual in nature and it cannot be contingent upon sensory perception if it is to remain uniform; therefore eternal substance must think only of thinking itself and exist outside the starry sphere, where even the notion of place is undefined for Aristotle."
This is Embedded Intelligence, Aristotle style.
From http://en.wikipedia.org/wiki/Information
"Information is that which informs, i.e. that from which data can be derived. Information is conveyed either as the content of a message or through direct or indirect observation of something. That which is perceived can be construed as a message in its own right, and in that sense, information is always conveyed as the content of a message."
Rob Blair writes:
"Phase 1 "EI": Embedded Information – non-living "bits" of the universe which itself evolved from an energy plasma, to sub atomic particles to elementary matter to stars, planets, etc. Astrophysicists like David Weintraub and theorists like Alan Guth have worked much of this out (see Guth's book: The Inflationary Universe). This leads to Phase 2.
Phase 2 "EI": Embedded Intelligence – living things that by definition evolved an awareness of self over geologic time enough to react in a manner to metabolize and adapt to its surroundings, reproduce, contain an assembly code (DNA, RNA) that is maintained and passed along via reproduction (add additional attributes). Living things have the ability to "learn, understand and deal with new situations" to survive. This leads to Phase 3.
Phase 3 "EI": Embedded Integration – the human species now appears to be entering into a new age where electronic sensing and communication is linking a majority of the population and its environment into a singular-acting "organism" (see July 2014 Scientific American cover article "Living in the connected World: How global sensor networks are extending the human nervous system" and Peter Russell's Global Brain)."
Fred Washburn writes:
"All living things have a built-in embedded intelligent system to survive. Whether it be the amoeba knowing when to divide, the bird how to fly, or humans knowing how to learn and apply what they have learned, all have an embedded intelligence system."
In the book titled The Inner Reaches of Outer Space by Joseph Campbell writes on pages 13 and 14:
"Bioenergies that are the essence of life itself, and which, when unbridled, become terrific, horrifying, and destructive.
The first, most elementary and horrifying of all, is the innocent voraciousness of life which feeds on lives and provides the first interest of the infant feeding on its mother."
"The second primal compulsion, linked almost in identity with the first (as recognized in the Abyssinian Paean), is the sexual, generative urge, which during the years of passage out of infancy comes to knowledge with such urgency that in its seasons it overleaps the claims even of the first."
"A third motivation, which on the world stage of world history has been the unique generator of the action – since the period, at least, of Sargon I of Akkad, in southern Mesopotamia, c. 2300 BC – is the apparently irresistible impulse to plunder. …. an impulse launched from the eyes, not to consume, but to possess."
We humans have developed and evolved our embedded intelligence system to such a degree that we are constantly exploring what we know to be our body, mind, soul, and the world or universe we live in. Now we are beginning to understand what we know about the universe, both sub-atomically and beyond the bounds of this planet, searching for the embedded intelligence of everything.
Sometimes our beliefs are held onto long after we know better, thus disabling or confusing our embedded intelligence. We celebrate and enjoy our beliefs, what we know, and understand providing for application of that which we understand, engineering a better world we live in.
Since we have many definitions of our words or terms we need to define our terms.
One definition of philosophy is "the speculative inquiry in the knowledge of mankind". The early philosophers began to wonder about what was known and unknown. They and all philosophers speculate on the knowledge and understanding of mankind, questioning, and looking for answers to all sort of questions.
Embedded is defined as "that which is placed within".
Intelligence for living things is defined as "the ability to learn, understand, and deal with new situations". For non-living things intelligence is defined as that which provides for self-assembly of atomic structures from energy with available information.
Belief is defined here as "an opinion stronger than an impression and less strong than positive knowledge of the truth or reality of something". Belief precedes knowledge and understanding.
Science is defined as "knowledge as distinguished from ignorance or misunderstanding". Basically, all "sciences" are established to analyze the world in and around us.
Engineering is "the practical application of science, technology, and mathematics", completing STEM. A simpler definition for engineering would be "the practical application of information".
Matter is defined "as the substance of which a physical object is composed".
The body of a living or non-living thing is defined as "the physical whole of an organism".
The mind of a thing is the "intellectual ability" of that thing.
The soul of a thing is "the immaterial essence or animating principle of an individual life".
The word wonder is defined as "a cause of astonishment or surprise". Socrates, the first philosopher, was known to have said "Philosophy begins in wonder."
To be curious is to "have a desire to investigate and learn".
A life form or living organism is defined as "a state of an organism characterized especially by capacity for metabolism, growth, reaction to stimuli, and reproduction". Another way of relating to a living organism is that which has the ability to self-assemble.
Assemble means "to bring together for a particular purpose", in the case of a life form, to live. The self-assembly of our Sun could be considered a huge self-assembly as is the Earth, moon, stars, planets, and other phenomena of the universe.
Evolution means "the process of change especially from a lower to higher state".
Chemistry is "the science that deals with the composition, structure, and properties of substances".
Atoms are "the smallest particle of a chemical element that can exist alone or in combination".
The first matter could have been a hydrogen atom, one electron and one proton decided to hang-out together. The energy that keeps the electron and the proton together is an energy of attraction. Living things have scaled this energy of attraction, philosophically speaking, for not only individual survival but also for survival of the species, reproduction.
Magnetism is a mysterious form of energy and "the science that deals with the phenomena of a material with the ability to attract", as possessed by a magnet.
Gravity is another mysterious form of energy of attraction of the mass of a celestial body, such as Earth, for bodies close to it.
A particle is defined as "a very small bit of matter".
An energy or wave packet is "a small bundle" of energy. All things both living and non-living are forms of energy. Since all living and non-living things are built from chemical elements or matter, we need to recognize that all matter is comprised of atoms.
Notice that all atoms must have had an embedded intelligence for not only self-assembly from energy but also for survival. It is here proposed that "energy decided to matter". Here we use two definitions of matter one the above definition and a second definition, "a subject of interest or concern". Energy decided to both become matter and become a subject of interest and concern, of wonder.
Notice in the "Periodic Table of Elements" that there are 91 naturally occurring elements or atomic structures and man-made atomic structures totaling 118 elements.
Again, philosophically speaking, the energy conversion to and from matter must be occurring everywhere in the universe and beyond, for all time without spatially ending.
Anthropology is "the science of human beings".
Theology is "the study of religions, religious ideas, and religious beliefs".
Mythology is the "study of imaginary or unverifiable person or thing, usually legendary narrative that presents part of the beliefs of a people or explains a practice or natural phenomenon". Mythology pre-dates religions, philosophy, and the sciences of the mysteries of Life.
Reading list:
1) The Seven Habits of Highly Effective People helps one organize one's thinking.
2) The Magic of Conflict suggests that within conflicting ideas, creativity flourishes.
3) The Philosophy Book, Big Ideas Simply Explained is a brief explanation of approximately 100 of the most famous philosophers and philosophies over the last 2500 years.
4) Tao of Physics explains how Eastern mystics arrived at the same conclusions as atomic physicists, the world is made of energy.
5) The Power of Myth explains how myths have been a need of humanity for thousands of years, from the first humans to inhabit Earth.
6) Myths to Live By explains how one can benefit from myths today, the last paragraph of this book is awesome.
7) The Inner Reaches of Outer Space this by Joseph Campbell begins "Reviewing with an unprejudiced eye the religious traditions of mankind, one becomes very soon aware of certain mythic motifs that are common to all, though differently understood and developed in the differing traditions: ideas, for example, of a life beyond death, or of malevolent and protective spirits." This book helps explain how and why humans used myth to find answers to questions unknown, filling the void of mystery with answers.
8) Care of the Soul explains how one can arrive at understanding human behavior through understanding the soul in addition to understanding the mind through psychology.
9) The Soul of Leadership explains how to and how one can benefit from connecting with one's soul.
10) Benjamin Franklin by: Isaacson explains the unique character of a revolutionary nation builder.
11) Steve Jobs by: Isaacson explains the unique character of a soul leader of a technology revolution.
12) Einstein – The Life of a Genius by: Isaacson explains how one person's curiosity, imagination, and follow-through can revolutionize thinking and change the world.
13) Outliers explains how one can get lucky, when preparation meets opportunity.
14) Leaders of the Information Age contains biographical sketches of 250 people who have contributed to the Information Age over a 500 year period, since the printing press.
The Tau of Physics, proposes that all atoms or chemical elements are formed from energy. The deeper atomic physicists drill into atomic structures they find new and interesting energy wave-packets sometimes also referred to as "particles". "The way" or Tau of physics compares the work of atomic physicists to that of Eastern Mystics.
The Tau of Physics seems to infer that somehow atomic structures, with their embedded intelligence, found a way to self-assemble from energy.
The Power of Myth, Myths to Live By, Care of the Soul, and The Soul of Leadership, suggest that it is time we eliminate the confusion of religions, which tend to combine mythology with reality and create and enforce rules to live by. Spiritual energy is component of the individual human and communities of humans. This spiritual energy is a blessing and can be a destructive force when there is conflict of ideas among likeminded communities of people with out-of-control passion to back up their beliefs.
The fascinating biographies of Benjamin Franklin, Steve Jobs, and Albert Einstein were written by Walter Isaacson. Benjamin Franklin, helped synergize the embedded intelligence of a nation, Steve Jobs, led a company that changed our communications system synergizing the embedded intelligence of a world, and Albert Einstein created an interest in energy matters with his theories of relativity and equation, E=MC squared.
The Outliers book explains, due to when and where they are born and the circumstances they are born in creates the opportunity for how The Leaders of the Information Age got lucky, when preparation met opportunity.
Where are we going from the Information Age?
Some noteworthy contributors to our worldwide embedded intelligence are, Google, for making the world or humanity's information searchable, Facebook for socially connecting people, and Twitter for connecting people with simple and convenient digital messages.
About 250 years ago Ben Franklin, the world's leading scientist concerning at that time, lamented that he couldn't think of one thing that electricity was useful for. Now look at all that humanity has created that is powered by electricity to operate, extend, and evolve our embedded intelligence of our wonder-full world.
With your help, are we going to the Age of Understanding?
With the Information Age, empowered by microprocessor embedded intelligence technology, evolving our abilities to access, search, and re-search all kinds of topics, we are on the threshold of the Age of Understanding. Each and every one of us can now pursue knowing any topic and then understand said topic. We have to be ready to learn and understand. When we are ready to learn, no one can stop us now. The barriers of understanding have been lifted in the Age of Understanding, mind, body, soul, and the universe we live in.
-Bill Mensch with David Cramer, Fred Washburn, and Robert Blair


text:
#include "sprite_engine.h"

// engine definitions

// OAM Registers
struct SpriteOAMRegisterMundane {
  bool enable;
  uint8_t palette;
  bool flip_x, flip_y;
  uint16_t x_offset, y_offset;
};

struct SpriteOAMRegisterInstance {
  bool enable;
  uint8_t palette;
  bool flip_x, flip_y;
  uint16_t x_offset, y_offset;
  uint8_t sprite_size;
  uint8_t sprite;
  bool transpose;
};

// VRAM
struct GrandeSprite {
  uint8_t pixels[GRANDE_SIZE * GRANDE_SIZE];
};

struct VrendeSprite {
  uint8_t pixels[VRENDE_SIZE * VRENDE_SIZE];
};

struct VentiSprite {
  uint8_t pixels[VENTI_SIZE * VENTI_SIZE];
};

struct BackgroundSprite {
  uint8_t pixels[BACKGROUND_WIDTH * BACKGROUND_HEIGHT];
};

struct InstanceSpriteBaseChunk {
  uint8_t pixel[INSTANCE_BASE_SIZE * INSTANCE_BASE_SIZE];
};

// CRAM
struct PaletteColor {
  uint8_t red, green, blue;
};

struct ColorPalette {
  struct PaletteColor colors[PALETTE_COLORS];
};

struct SpriteEngineMemory {
  // OAM Registers
  struct SpriteOAMRegisterMundane grande_oam_registers[NUM_GRANDE_SPRITES];
  struct SpriteOAMRegisterMundane vrende_oam_registers[NUM_VRENDE_SPRITES];
  struct SpriteOAMRegisterMundane venti_oam_registers[NUM_VENTI_SPRITES];
  struct SpriteOAMRegisterMundane background_oam_register;
  struct SpriteOAMRegisterInstance instance_oam_registers[NUM_INSTANCE_SPRITES];
  bool iprctl;

  // VRAM
  struct GrandeSprite grande_sprites[NUM_GRANDE_SPRITES];
  struct VrendeSprite vrende_sprites[NUM_VRENDE_SPRITES];
  struct VentiSprite venti_sprites[NUM_VENTI_SPRITES];
  struct BackgroundSprite background_sprite;
  struct InstanceSpriteBaseChunk instance_chunks[NUM_INSTANCE_CHUNKS];

  // CRAM
  struct ColorPalette color_palettes[NUM_PALETTES];
};

struct SpriteEngineMemory memory;
struct SpriteOAMRegisterMundane *oam_registers;

struct SECommandListNode {
  union SECommand command;
  struct SECommandListNode *next_node;
};

struct SECommandListNode *command_read_list, *command_write_list;
pthread_mutex_t command_queue_mutex;

void reset_sprite_engine(void)
{
  // free all the things and reset the registers

  // reset the memory map
  memset(&memory, 0x00, sizeof(struct SpriteEngineMemory));
  oam_registers = memory.grande_oam_registers;

  // test work
  /*oam_registers[0].flip_y = false;
  oam_registers[0].enable = true;
  oam_registers[0].y_offset = 200;
  oam_registers[0].x_offset = 200;
  int i = 0, j = 0;
  for (; i < GRANDE_SIZE; i++) {
    for (j = 0; j < GRANDE_SIZE; j++) {
      memory.grande_sprites[0].pixels[i + j*GRANDE_SIZE] = ((i*2) / GRANDE_SIZE);
    }
  }
  memory.color_palettes[0].colors[1].red = 255;

  memory.vrende_oam_registers[0].enable = true;
  for (; i < VRENDE_SIZE; i++) {
    for (j = 0; j < VRENDE_SIZE; j++) {
      memory.vrende_sprites[0].pixels[i + j*VRENDE_SIZE] = ((i*2) / VRENDE_SIZE) + 1;
    }
  }
  memory.color_palettes[0].colors[2].blue = 255;

  memory.venti_oam_registers[0].enable = true;
  for (i = 0; i < VENTI_SIZE * VENTI_SIZE; i++) {
    memory.venti_sprites[0].pixels[i] = 3;
  }
  memory.color_palettes[0].colors[3].green = 255;

  memory.instance_oam_registers[0].enable = true;
  memory.instance_oam_registers[0].x_offset = 200;
  memory.instance_oam_registers[0].y_offset = 200;
  memory.instance_oam_registers[0].sprite_size = INSTANCE_SIZE_256x128;
  //memory.instance_oam_registers[0].transpose = true;
  memory.instance_oam_registers[0].flip_x = true;
  int chunk = 0;
  for (; chunk < 4; chunk++){
    for (i = 0; i < (INSTANCE_BASE_SIZE * INSTANCE_BASE_SIZE); i++) {
      memory.instance_chunks[chunk].pixel[i] = 5 + (chunk % 2);
    }
  }
  memory.color_palettes[0].colors[5].red = 255;
  memory.color_palettes[0].colors[5].blue = 255;

  memory.color_palettes[0].colors[6].red = 255;
  memory.color_palettes[0].colors[6].green = 255;

  memory.background_oam_register.enable = true;
  for (i = 0; i < BACKGROUND_WIDTH; i++) {
    memory.background_sprite.pixels[i] = 4;
  }
  memory.color_palettes[0].colors[4].green = 255;
  memory.color_palettes[0].colors[4].blue = 255;*/
}

void init_sprite_engine(void)
{
  command_queue_mutex = (pthread_mutex_t) PTHREAD_MUTEX_INITIALIZER;
  command_read_list = NULL;
  command_write_list = NULL;

  reset_sprite_engine();
}

void queue_command(union SECommand *command)
{
  struct SECommandListNode *new_node = malloc(sizeof(struct SECommandListNode));
  memcpy(&(new_node->command), command, sizeof(union SECommand));

  pthread_mutex_lock(&command_queue_mutex);
  new_node->next_node = command_write_list;
  command_write_list = new_node;
  pthread_mutex_unlock(&command_queue_mutex);
}

int update_pixel_mundane(uint x, uint y)
{
  struct PaletteColor p;
  uint i, sprite_x, sprite_y, color_index, palette_index, sprite_size;
  i = 0;
  while (i < (NUM_MUNDANE_SPRITES - NUM_BACKGROUND_SPRITES)) {
    sprite_size = (i < NUM_GRANDE_SPRITES) ? GRANDE_SIZE :
      (i < (NUM_GRANDE_SPRITES + NUM_VRENDE_SPRITES)) ? VRENDE_SIZE : VENTI_SIZE;

    if (oam_registers[i].enable &&
        ((x >= oam_registers[i].x_offset) && (x < (oam_registers[i].x_offset + sprite_size))) &&
        ((y >= oam_registers[i].y_offset) && (y < (oam_registers[i].y_offset + sprite_size)))) {

      sprite_x = oam_registers[i].flip_y ? (sprite_size - (x - oam_registers[i].x_offset))
        : (x - oam_registers[i].x_offset);
      sprite_y = oam_registers[i].flip_x ? (sprite_size - (y - oam_registers[i].y_offset))
        : (y - oam_registers[i].y_offset);
      palette_index = oam_registers[i].palette;

      switch(sprite_size) {
      case(GRANDE_SIZE):
        color_index = memory.grande_sprites[i].pixels[sprite_x + sprite_y * sprite_size];
        if (color_index > 0) {
          p = memory.color_palettes[palette_index].colors[color_index];
          set_pixel(x, y, (Pixel) {p.red, p.green, p.blue});
          return PIXEL_FOUND;
        }
        break;
      case(VRENDE_SIZE):
        color_index = memory.vrende_sprites[(i - NUM_GRANDE_SPRITES)].pixels[sprite_x + sprite_y * sprite_size];
        if (color_index > 0) {
          p = memory.color_palettes[palette_index].colors[color_index];
          set_pixel(x, y, (Pixel) {p.red, p.green, p.blue});
          return PIXEL_FOUND;
        }
        break;
      case(VENTI_SIZE):
        color_index = memory.venti_sprites[(i - (NUM_GRANDE_SPRITES + NUM_VRENDE_SPRITES))].pixels[sprite_x + sprite_y * sprite_size];
        if (color_index > 0) {
          p = memory.color_palettes[palette_index].colors[color_index];
          set_pixel(x, y, (Pixel) {p.red, p.green, p.blue});
          return PIXEL_FOUND;
        }
        break;
      default:
        // do nothing
        break;
      }
    }
    switch(i) {
    case 55:
      i = 112;
      break;
    case 115:
      i = 120;
      break;
    case 120:
      i = 56;
      break;
    case 111:
      i = 116;
      break;
    case 119:
      i = 121;
      break;
    default:
      i++;
      break;
    };
  }

  return NO_PIXEL_FOUND;
}

int update_pixel_instanced(uint x, uint y)
{
  struct PaletteColor p;
  bool found = false;
  uint i;
  uint sprite_x, sprite_y;
  uint color_index, palette_index, vram_addr = MAX_VRAM_ADDR, possible_vram_addr, oam_index;
  uint sprite_size_x, sprite_size_y;

  for (i = 0; i < NUM_INSTANCE_SPRITES; i++) {
    if (memory.instance_oam_registers[i].enable == false)
      continue;

    switch(memory.instance_oam_registers[i].sprite_size) {
    case (INSTANCE_SIZE_64x64):
      sprite_size_x = 64;
      sprite_size_y = 64;
      break;
    case (INSTANCE_SIZE_128x64):
      sprite_size_x = 128;
      sprite_size_y = 64;
      break;
    case (INSTANCE_SIZE_128x128):
      sprite_size_x = 128;
      sprite_size_y = 128;
      break;
    case (INSTANCE_SIZE_256x128):
      sprite_size_x = 256;
      sprite_size_y = 128;
      break;
    default:
      sprite_size_x = 0;
      sprite_size_y = 0;
    }

    if (memory.instance_oam_registers[i].transpose) {
      uint temp = sprite_size_x;
      sprite_size_x = sprite_size_y;
      sprite_size_y = temp;
    }

    if ((x < memory.instance_oam_registers[i].x_offset) ||
        (x >= (memory.instance_oam_registers[i].x_offset + sprite_size_x)) ||
        (y < memory.instance_oam_registers[i].y_offset) ||
        (y >= (memory.instance_oam_registers[i].y_offset + sprite_size_y)))
      continue;
    sprite_x = x - memory.instance_oam_registers[i].x_offset;
    sprite_y = y - memory.instance_oam_registers[i].y_offset;
    sprite_x = (memory.instance_oam_registers[i].flip_y) ? (sprite_size_x - sprite_x) : sprite_x;
    sprite_y = (memory.instance_oam_registers[i].flip_x) ? (sprite_size_y - sprite_y) : sprite_y;
    if (memory.instance_oam_registers[i].transpose) {
      uint temp = sprite_x;
      sprite_x = sprite_y;
      sprite_y = temp;
    }

    // calculate possible vram addr
    possible_vram_addr = memory.instance_oam_registers[i].sprite * (INSTANCE_BASE_SIZE * INSTANCE_BASE_SIZE);
    possible_vram_addr += (sprite_x / INSTANCE_BASE_SIZE) * (INSTANCE_BASE_SIZE * INSTANCE_BASE_SIZE);
    possible_vram_addr += (sprite_y / INSTANCE_BASE_SIZE) * 4 * (INSTANCE_BASE_SIZE * INSTANCE_BASE_SIZE);
    possible_vram_addr += ((sprite_x % INSTANCE_BASE_SIZE) + (sprite_y % INSTANCE_BASE_SIZE) * INSTANCE_BASE_SIZE);

    if (possible_vram_addr < vram_addr) {
      vram_addr = possible_vram_addr;
      oam_index = i;
      palette_index = memory.instance_oam_registers[i].palette;
      color_index = *(&(memory.instance_chunks[0].pixel[0]) + possible_vram_addr);
      found = true;
    } else if (possible_vram_addr == vram_addr && i < oam_index) {
      oam_index = i;
      palette_index = memory.instance_oam_registers[i].palette;
      color_index = *(&(memory.instance_chunks[0].pixel[0]) + possible_vram_addr);
      found = true;
    }
  }

  if (found && color_index > 0) {
    p = memory.color_palettes[palette_index].colors[color_index];
    set_pixel(x, y, (Pixel) {p.red, p.green, p.blue});
    return PIXEL_FOUND;
  }

  return NO_PIXEL_FOUND;
}

void update_pixel_background(uint x, uint y)
{
  struct PaletteColor p;
  uint sprite_x, sprite_y, color_index, palette_index;

  if (memory.background_oam_register.enable == false) {
    set_pixel(x, y, (Pixel) {0,0,0});
    return;
  }

  palette_index = memory.background_oam_register.palette;
  sprite_x = memory.background_oam_register.flip_y ? (BACKGROUND_WIDTH - x) : x;
  sprite_x = (sprite_x + (BACKGROUND_WIDTH - memory.background_oam_register.x_offset)) % BACKGROUND_WIDTH;
  sprite_y = memory.background_oam_register.flip_x ? (BACKGROUND_HEIGHT - y) : y;
  sprite_y = (sprite_y + (BACKGROUND_HEIGHT - memory.background_oam_register.y_offset)) % BACKGROUND_HEIGHT;

  color_index = memory.background_sprite.pixels[sprite_x + sprite_y * BACKGROUND_WIDTH];
  p = memory.color_palettes[palette_index].colors[color_index];
  set_pixel(x, y, (Pixel) {p.red, p.green, p.blue});
}

void update_pixel(uint x, uint y)
{
  // determine what pixel should apply
  if (memory.iprctl == false) {
    // check mundane
    if (update_pixel_mundane(x, y) == PIXEL_FOUND)
      return;
    // check instanced
    if (update_pixel_instanced(x, y) == PIXEL_FOUND)
      return;
    // use background
    update_pixel_background(x, y);
  } else {
    if (update_pixel_instanced(x, y) == PIXEL_FOUND)
      return;
    if (update_pixel_mundane(x, y) == PIXEL_FOUND)
      return;
    update_pixel_background(x, y);
  }
}

void generate_frame_buffer(void)
{
  uint x, y;
  for (y = 0; y < SPRITE_ENGINE_HEIGHT; y++) {
    for (x = 0; x < SPRITE_ENGINE_WIDTH; x++) {
      update_pixel(x, y);
    }
  }
}

void process_commands(void)
{
  struct SECommandListNode *temp, *free_node;
  union SECommand *command;

  // swap buffers
  pthread_mutex_lock(&command_queue_mutex);
  temp = command_read_list;
  command_read_list = command_write_list;
  command_write_list = temp;
  pthread_mutex_unlock(&command_queue_mutex);

  while (command_read_list != NULL) {
    command = &(command_read_list->command);
    switch (command->type) {
    case UPDATE_OAM :
      if (command->update_oam.oam_index < NUM_MUNDANE_SPRITES) {
        oam_registers[command->update_oam.oam_index].enable = command->update_oam.enable;
        oam_registers[command->update_oam.oam_index].palette = command->update_oam.palette;
        oam_registers[command->update_oam.oam_index].flip_x = command->update_oam.flip_x;
        oam_registers[command->update_oam.oam_index].flip_y = command->update_oam.flip_y;
        oam_registers[command->update_oam.oam_index].x_offset = command->update_oam.x_offset;
        oam_registers[command->update_oam.oam_index].y_offset = command->update_oam.y_offset;
      } else if (command->update_oam.oam_index >= INSTANCE_INDEX_MIN && command->update_oam.oam_index < INSTANCE_INDEX_MAX) {
        // update instace sprite
        uint oam_index = command->update_oam.oam_index - INSTANCE_INDEX_MIN;
        memory.instance_oam_registers[oam_index].enable = command->update_oam.enable;
        memory.instance_oam_registers[oam_index].palette = command->update_oam.palette;
        memory.instance_oam_registers[oam_index].flip_x = command->update_oam.flip_x;
        memory.instance_oam_registers[oam_index].flip_y = command->update_oam.flip_y;
        memory.instance_oam_registers[oam_index].x_offset = command->update_oam.x_offset;
        memory.instance_oam_registers[oam_index].y_offset = command->update_oam.y_offset;
        memory.instance_oam_registers[oam_index].sprite_size = command->update_oam.sprite_size;
        memory.instance_oam_registers[oam_index].sprite = command->update_oam.sprite;
        memory.instance_oam_registers[oam_index].transpose = command->update_oam.transpose;
      }
      // do nothing otherwise
      break;
    case(SET_PRIORITY_CTRL):
      memory.iprctl = command->set_priority_control.iprctl;
      break;
    case(UPDATE_CRAM):
      memory.color_palettes[command->update_cram.cram_index].colors[command->update_cram.palette_index] =
        (struct PaletteColor) {command->update_cram.red, command->update_cram.green, command->update_cram.blue};
      break;
    case(UPDATE_VRAM):
      {
        uint chunk_index = command->update_vram.chunk;
        uint pixel_x = command->update_vram.pixel_x;
        uint pixel_y = command->update_vram.pixel_y;
        if (command->update_vram.chunk < VRAM_CHUNK_GRANDE_BASE) { // INSTANCE CHUNKS
          memory.instance_chunks[chunk_index].pixel[pixel_x + pixel_y * INSTANCE_BASE_SIZE]
            = command->update_vram.p_data;
        } else if (command->update_vram.chunk < VRAM_CHUNK_VRENDE_BASE) { // GRANDE CHUNKS
          chunk_index -= VRAM_CHUNK_GRANDE_BASE;
          memory.grande_sprites[chunk_index].pixels[pixel_x + pixel_y * GRANDE_SIZE]
            = command->update_vram.p_data;
        } else if (command->update_vram.chunk < VRAM_CHUNK_VENTI_BASE) { // VRENDE CHUNKS
          chunk_index -= VRAM_CHUNK_VRENDE_BASE;
          memory.vrende_sprites[chunk_index / 4]
            .pixels[((chunk_index % 4) / 2) * (2 * GRANDE_SIZE * GRANDE_SIZE)
                    + (chunk_index % 2) * GRANDE_SIZE // align to the 0,0
                    + (pixel_y * 2 * GRANDE_SIZE)
                    + pixel_x] = command->update_vram.p_data;
        } else if (command->update_vram.chunk < VRAM_CHUNK_BACKGROUND_BASE) { // VENTI CHUNKS
          chunk_index -= VRAM_CHUNK_VENTI_BASE;
          memory.vrende_sprites[chunk_index / 16]
            .pixels[((chunk_index % 16) / 4) * (4 * GRANDE_SIZE * GRANDE_SIZE)
                    + (chunk_index % 4) * GRANDE_SIZE
                    + (pixel_y * 4 * GRANDE_SIZE)
                    + pixel_x] = command->update_vram.p_data;
        } else if (command->update_vram.chunk < VRAM_CHUNK_BACKGROUND_MAX) { // BACKGROUND CHUNKS
          chunk_index -= VRAM_CHUNK_BACKGROUND_BASE;
          if (chunk_index < 70) {
            memory.background_sprite.pixels[(chunk_index / 10) * BACKGROUND_WIDTH * GRANDE_SIZE
                                            + (chunk_index % 10) * GRANDE_SIZE
                                            + pixel_y * BACKGROUND_WIDTH
                                            + pixel_x] = command->update_vram.p_data;
          } else {
            uint pixel_index = (chunk_index / 10) * BACKGROUND_WIDTH * GRANDE_SIZE
              + (chunk_index % 5) * 2 * GRANDE_SIZE
              + pixel_y * BACKGROUND_WIDTH
              + pixel_x;
            if (pixel_y >= (GRANDE_SIZE / 2)) {
              pixel_index -= (GRANDE_SIZE / 2) * BACKGROUND_WIDTH;
              pixel_index += GRANDE_SIZE;
            }
            memory.background_sprite.pixels[pixel_index] = command->update_vram.p_data;
          }
        } // else do nothing
        break;
      }
    default:
      // Do nothing
      break;
    }

    free_node = command_read_list;
    command_read_list = command_read_list->next_node;
    free(free_node);
  }

  generate_frame_buffer();
}

redpajama_set_name: RedPajamaGithub


In a close collaboration beginning early this year, MPC teamed up with renowned global conservation organization The Nature Conservancy to help launch its new "This Is Our Future" campaign with a real-time interactive Oculus Rift and Gear VR experience. The art gallery-inspired VR piece debuted October 6th at a Conservancy hosted influencer event in San Francisco. "This Is Our Future" features a series of Kickstarter-like campaigns to make immediate proven impacts on global threats to people and nature, and the tuna fishery in the western and central Pacific marks the first. Ambassadors for the campaign include Matt Idema from Facebook, engineer Tray Chao, Anthony Goldbloom from Kaggle and cultural influencer and artist Yosi Sergant.
The Conservancy and MPC created a VR experience that imparts understanding of the problem and the need for funding tech-enabled monitoring. The experience takes the viewer on a journey through huge scale gallery spaces where they can see the problems facing the fishery via a poetic and emotionally engaging series of sculptures that communicate information through the viewers' actions, a conversational voiceover by Kieran Culkin and directional sound design by Q Department.
The VR experience is a real-time engine-based piece that uses a non-photographic approach, and was built using game design software Unreal Engine. "This is a piece that could not have been created as a pre-rendered video, not only because of the interactivity, but also because the compositions themselves relied on positional tracking," explained Andrew Cohen, MPC's Lead Artist on the VR experience. "We took advantage of Unreal's procedural capabilities—different things will happen for each viewer and each time.
"We decided to embed moments of interactivity such as gaze control which enable the user to look at a certain object and get a reaction. For example, when the viewer looks at the iceberg hulls, they break apart and we can see inside them. The experience gives viewers the opportunity to explore personal trajectories in an abstract, engaging way, while at the same time discovering and learning to give them a sense of empowerment.


text:
Q: How to check if any JavaScript event listeners/handlers attached to an element/document? Tried to search online, but does not look like I can formulate search query properly.
How can I, either with jQuery or just javascript list all the handlers or event listeners that are attached to element(s)/document/window or present in DOM?

A: In jQuery before 1.8, try using $("#element").data("events")
EDIT:
There is also jQuery extension: listHandlers

A: When debugging, if you want to just see if there's an event, I recommend using Visual Event or the Elements" section of Chrome's Developer Tools: select an element and look for "Event Listeners on the bottom right.
In your code, if you are using jQuery before version 1.8, you can use:
$(selector).data("events")

to get the events. As of version 1.8, this is discontinued (see this bug ticket). You can use:
$._data(element, "events")

but this is not recommended since it is an internal jQuery structure, and could change in future releases.
This question has some answers which may be useful, but none of them are particularly elegant in the same way that $(selector).data("events") was.

A: I just discovered visual event 2:
http://www.sprymedia.co.uk/article/Visual+Event+2
go under the "make it go section" and drag the text link to your bookmark toolbar
go to a page that has events and click on the bookmark
tested in FF Mac

A: Without jQuery:
if the listeners were added using elem.addEventListener() method, it is not easy to list these listeners. You can override the EventTarget.addEventListener() method by wrapping it with your own. Then you will have the information, what listeners were registered.
var f = EventTarget.prototype.addEventListener; // store original
EventTarget.prototype.addEventListener = function(type, fn, capture) {
  this.f = f;
  this.f(type, fn, capture); // call original method
  alert('Added Event Listener: on' + type);
}

Working example you can find at http://jsfiddle.net/tomas1000r/RDW7F/

redpajama_set_name: RedPajamaStackExchange


text:
Ed McKeown
Keller Willaims
Email: edmckeown@KW.com
Go to… Go to… Home Featured Listings - Open Houses Search for Homes - Advanced Search - Map Search - Foreclosures - Commercial Search - Stroudsburg Homes - East Stroudsburg Homes - Tannersville Homes - Saylorsburg Homes - Cresco Homes - Homes for Sale in Bartonsville, PA - Homes for Sale in Henryville, PA - Homes for Sale in Country Club Of The Poconos, East Stroudsb - Homes for Sale in Lake Naomi, Pocono Pines, PA - Homes for Sale in Pocono Lake, PA - Homes for Sale in Pocono Summit, PA - Homes for Sale in Buck Hill Falls, PA - Homes for Sale in Skytop, PA - Homes for Sale in Mountainhome, PA - Homes for Sale in Mount Pocono, PA - Homes for Sale in Swiftwater, PA - Homes for Sale in Stroudsburg, PA from $100,000 to $150,000 - Homes for Sale in Stroudsburg, PA from $150,000 to $200,000 - Homes for Sale in Stroudsburg, PA over $300,000 - Homes for Sale in East Stroudsburg, PA from $100,000 to $150 - Homes for Sale in East Stroudsburg, PA from $150,000 to $200 - Homes for Sale in East Stroudsburg, PA over $300,000 - Homes for Sale in Tannersville, PA from $100,000 to $150,000 - Homes for Sale in Tannersville, PA from $150,000 to $200,000 - Homes for Sale in Tannersville, PA over $300,000 - Homes for Sale in Saylorsburg, PA from $100,000 to $150,000 - Homes for Sale in Saylorsburg, PA from $150,000 to $200,000 - Homes for Sale in Saylorsburg, PA over $300,000 - Homes for Sale in Cresco, PA from $100,000 to $150,000 - Homes for Sale in Cresco, PA from $150,000 to $200,000 - Homes for Sale in Cresco, PA over $300,000 - Homes for Sale in Stroudsburg, PA under $100,000 - Homes for Sale in East Stroudsburg, PA under $100,000 - Homes for Sale in Tannersville, PA under $100,000 - Homes for Sale in Saylorsburg, PA under $100,000 - Homes for Sale in Cresco, PA under $100,000 Buyer/Seller Info - Mortgage Rates - Schools - Relocation - Weather My Blog - Testimonials Contact Me - Dream Home Finder - FREE Market Analysis - Real Estate News
Stroudsburg Homes
East Stroudsburg Homes
Tannersville Homes
Saylorsburg Homes
Cresco Homes
Homes for Sale in Bartonsville, PA
Homes for Sale in Henryville, PA
Homes for Sale in Country Club Of The Poconos, East Stroudsb
Homes for Sale in Lake Naomi, Pocono Pines, PA
Homes for Sale in Pocono Lake, PA
Homes for Sale in Pocono Summit, PA
Homes for Sale in Buck Hill Falls, PA
Homes for Sale in Skytop, PA
Homes for Sale in Mountainhome, PA
Homes for Sale in Mount Pocono, PA
Homes for Sale in Swiftwater, PA
Homes for Sale in Stroudsburg, PA from $100,000 to $150,000
Homes for Sale in Stroudsburg, PA over $300,000
Homes for Sale in East Stroudsburg, PA from $100,000 to $150
Homes for Sale in East Stroudsburg, PA over $300,000
Homes for Sale in Tannersville, PA from $100,000 to $150,000
Homes for Sale in Tannersville, PA over $300,000
Homes for Sale in Saylorsburg, PA from $100,000 to $150,000
Homes for Sale in Saylorsburg, PA over $300,000
Homes for Sale in Cresco, PA from $100,000 to $150,000
Homes for Sale in Cresco, PA over $300,000
Homes for Sale in Stroudsburg, PA under $100,000
Homes for Sale in East Stroudsburg, PA under $100,000
Homes for Sale in Tannersville, PA under $100,000
Homes for Sale in Saylorsburg, PA under $100,000
Homes for Sale in Cresco, PA under $100,000
Search By City City Area Zip County Subdivision Address MLS Number
Sold within the last:
Anytime 1 week 1 month 3 months 6 months 1 year 2 years 3 years
End of Row
Approved Lot
Improved Lot
Land w/Buildings
Other-See Remarks
Both Halves
Built as Apartment
Cluster Type
Any Any 3 or more 5 or more 7 or more 10 or more 15 or more
With a Fireplace
Open Houses Scheduled
Converted Barn
French Provencial
Half Double
Mobile Doublewide
edmckeown@KW.com
© 2019 Pocono Mountains Association of REALTORS All rights reserved. Information deemed to be reliable but not guaranteed. The data relating to real estate for sale on this website comes in part from the Broker Reciprocity Program. Real estate listings held by brokerage firms other than Keller Willaims are marked with the BR logo and detailed information about them includes the name of the listing brokers. Listing broker has attempted to offer accurate data, but buyers are advised to confirm all items. Information last updated on 2019-07-19 06:42:15.

redpajama_set_name: RedPajamaCommonCrawl


It's cold, crisp, and perfect outside. It's not a secret that I love this weather. I find it inspirational and romantic. I see our world slow down, even if only for a moment (despite the insanity of the Christmas rush, that is), and I feel at peace.
It's, without a doubt, WRITING weather!
I like to pretend nine months out of the year that I am NOT a starry-eyed romantic dope. I loathe all things-Valentine's Day, and I generally don't get sappy about love stories. However, there's something about October, November, and December that transforms me into this bizarre mush pot! I'm instantly full of emotions and desires of riding in a horse-drawn carriage in the middle of a soft snowfall.
I like to think that it's the writer in me. I have this craving to create. I find myself wanting to write something profound, but rarely have I been able to have the right outlet (I won't lie, our Christmas card "Yearly Update" letter miiiiight be a tad over the top!). Now that PiBoIdMo is underway, I have found that some of the ideas pouring out of me are coming straight from this one-time-a-year soul I seem to have. And that's exciting!!
So as you snuggle up with a good book, song, recipe, or even the love(s) of your life over these next eight weeks , tap into your creative side. If you're a writer, jot down the feelings you are experiencing that EXACT moment. What single word or sentence describes your surroundings? Piece it together, and you'll have something to treasure! If you're an artist, find inspiration in everything around you! If your a musician, drag out that guitar, and close your eyes. Seriously, your heart was meant to explode with creativity in these months!!
But, if you're someone who really has nothing even resembling a creative bone in your body, just stop. Listen. Breathe. You'll be astonished with what you'll hear or feel.
If you don't believe me, just test my theory. And by all means, share your results.
Shameful Plug... But, PLEASE VOTE FOR ME!


For inquiries, collaborations, or even which biking trail Ethan is currently obsessed with, use the contact form to the right to get in touch!
Are you binging anything on Netflix right now?
Just curious ;) We're always on the lookout for something new to watch!
From a publication, Referral, Google, etc.


text:
Richard Lionel Spittel,  (commonly known as Dr. R. L. Spittel) (9 December 1881 – 3 September 1969) was a Ceylonese physician and author. He was one of the foremost experts on the Vedda community.

Education and career
Richard Lionel Spittel was born in Tangalle on 9 December 1881, the fourth child of Dr Frederick George Spittel (1853–1943) (who later became a District Medical Officer in Ceylon Health Service) and Zilia Eleanor Andree née Jansz (1855–?). Spittel received his education at Royal College, Colombo and the Ceylon Medical College, where he passed LMS in 1905. Thereafter he joined the government medical service and was sent to England in 1906 to complete his higher education. There he finished conjoint diploma in 1908 and took FRCS in 1909.

Returning to Ceylon in 1910, he was appointed the Third Surgeon at the General Hospital Colombo. Going on to be a senior surgeon and a lecturer at the Ceylon Medical College, he retired in 1935, yet worked as a consultant surgeon and was made a Commander of the Order of the British Empire in 1942 and a Companion of the Order of St Michael and St George in 1950 for his services towards medicine and surgery. A lifelong member of the British Medical Association, he was the President of its Ceylon Branch from 1940 to 1946. He served as President of Dutch Burgher Union of Ceylon from 1936 to 1938.

Author
An avid nature-lover, Spittel made many trips to the jungles of Ceylon, gaining much knowledge of the flora and fauna and the aborigines of the island, the Veddas. His studies on the Veddas made him and expert on this little understood people. Based on his ethnographic studies, he authored several books that gained much fame during his lifetime. His works include novels, poetry and academic studies.

Personal
Spittel married a fellow medical student Claribel Frances Van Dort, daughter of one of Ceylon's most distinguished physicians and a member of the Legislative Council of Ceylon, Dr William Gregory van Dort, on 28 December 1911 at St Michael and All Angels' Church, Colombo. They had two daughters, Christine and Yvonne. Spittel died on 3 September 1969, at the age of 87.

Bibliography
Novels
Savage Sanctuary (1941)
Vanished Trails (1950)
Where the White Sambhur Roams (1951)
Wild White Boy (1958)
Brave Island (1966)

Non-fiction
Wild Ceylon (1924)
Far-off Things (1933)

Poetry
Leaves of the Jungle

Medical books
A Basis of Surgical Ward Work (1915)
 A Preliminary Course of Surgery (1918)
Framboesia Tropica (1923)
Essentials of Surgery

External links and References

R. L. Spittel, C.M.G., C.B.E., L.M.S., F.R.C.S., British Medical Journal, 1969
Dr. R. L. Spittel: Surgeon of the wilderness
R. L. Spittle: Master writer of the wilds, by J. A. K. Jayakody

 Continuing the saga of Richard Spittel

1881 births
1969 deaths
20th-century poets
Academic staff of Ceylon Medical College
Alumni of Ceylon Medical College
Alumni of Royal College, Colombo
Burgher academics
Burgher poets
Burgher writers
Ceylonese Commanders of the Order of the British Empire
Ceylonese Companions of the Order of St Michael and St George
People from British Ceylon
Sri Lankan surgeons

redpajama_set_name: RedPajamaWikipedia


text:
Matt Woods, born and raised in Cornwall, moved to London to pursue his passion in music. Having spent his childhood singing in the Truro Cathedral choir, Matt developed a love for vocal harmony that is clear in his music - combining a stunning male falsetto with minimal electronic production.
Following on from his tracks 'In The Dark', which made the BBC Introducing playlist in April 2015, and 'Impression'which reached #5 on Spotify's Global Viral Chart, Matt Woods returns with 'Ain't No Use'.
A real statement of intent for 2016, 'Ain't No Use' hit #2 on the HypeM chart and cements Matt as one to watch this year.
Matias Aguayo	Maverick Sabre


There were 3 posts published on November 28, 2017 (this is page 1 of 1).
As part of that effort, the city adopted the goal of 50 percent "sustainable mode share" by 2020 — half of all trips in the city taken by walking, biking, or transit rather than automobile.Fun fact: The city hit that target in 2015, five years early.
The video above, by Clarence Eckerson Jr. of Streetfilms, tells the story of how it happened. As Brent Toderian, a former Vancouver chief planner (who I interviewed at length in June), explains in the film, the city's success traces all the way back to the 1960s and '70s, when the extraordinarily prescient citizens of Vancouver rejected a plan to build a network of urban freeways through the city.
Undercover videographer and conservative political activist James O'Keefe made a vow on the eve of President Trump's inauguration: "I'm going after the media next," he said. "We have your name. We have your number. We are embedded in your institutions. We are inside the newsrooms, and that is our next target." O'Keefe later claimed he already has "hundred of hours" of media-related video.
One of the things we've been meaning to get done is to move our backyard fence to the outer limits of our property lines. For some reason when the fence was first built, the fence was put 8-20 feet inside of our property, leaving the rest our of property essentially abandoned. Miss Ruth had adopted our property on her side of our fence and we never had the heart to "take it back" while she lived here, so when we got new neighbors it seemed time to make the change.
Only I'd never built a fence before.
Enter YouTube. You can learn anything on YouTube.


Christmas is nearly here and we would like to take this opportunity to thank all of our customers and online followers for your custom and support over the last 12 months. 2013 has been a great year for many UK field sports. Fly fishing catch numbers have been some of the highest we have seen for a number of years over the autumn and although we had the prolonged cold weather at the start of the year, the warm weather that followed did wonders for game stocks. We have exciting times ahead with the launch of our new look website imminent which we think everyone will like and find easy to use. Our Facebook page continues to do really well with many new followers coming on board. So most importantly we hope you all have a Merry Christmas and a truly special New Year! From John and all the staff at John Norris of Penrith.


text:
Q: Does this weird sequence have a limit? Yesterday I was trying to come up with an example of the weirdest sequence I could think of, and I came up with this. I'm not even sure if this could be called a sequence, but here it goes:
We'll define the sequence $a_n$ in the following way. We'll keep a list of previously calculated terms. Whenever we want to know $a_k$ for some $k$, we'll check if $a_k$ is in the list. If it is, we're done: that's its value. If it isn't, we roll a die, assign the number we get to $a_k$, and write that down in the list. This way, we can find out $a_k$ for any $k$ we want. For example, I just calculated some terms of it: $a_1 =1, a_2=4, a_{27}=1, a_{googol} = 5$.
There is an obvious problem with this definition, namely, that the sequence will be different each time someone different calculates it. I think a way to get past this would be to say that there will be a file on the Internet or something that keeps a list of all previously calculated terms of $a_n$. Another way would be, maybe, to talk not about the sequence itself (because it isn't unique, in a way) but of the probability of it having certain properties each time someone different calculates it.
My main question is: does this sequence have a limit? Or, to put it in the second way I just mentioned: what is the probability it will have a limit? What would happen if, instead of rolling a die, we pick a random real number for each term?
I'm sorry if this question doesn't make sense; I know practically nothing about the kind of math that would be needed to answer it. I don't even know how one would approach a problem like this, and I'm not sure this even counts as a sequence. This is something I randomly thought of, and I'm wondering if there is any previous work on problems like this.

A: This is very similar to the definition of a random oracle in cryptography.
In any case, it's pretty obvious that your sequence almost surely (i.e. with probability 1) does not converge.
In particular, since your sequence $(a_k)$ only takes on values from a discrete set, in order to converge it would have to be constant from some point $k_0 \in \mathbb N$ onwards.  But that can only happen if $a_k = a_{k_0}$ for all $k > k_0$, which is the intersection of infinitely many independent events, each occurring with probability less than $1-\epsilon$ for some fixed $\epsilon > 0$, and thus their intersection only occurs with probability 0.

Ps. Essentially the same result holds even if the sequence can take values from an infinite set, such as $\mathbb R$ or any (non-singleton) subset of it.  If the sequence converged to some $x \in \mathbb R$, then for any $\epsilon>0$, there would have to be some $k_0$ such that, for all $k>k_0$, $a_k\in[x-\epsilon,x+\epsilon]$.  As long as we can choose an $\epsilon>0$ such that each $a_k$ has a non-zero probability of not belonging to $[x-\epsilon,x+\epsilon]$ (i.e. as long as the probability distribution is not concentrated at $x$), the conclusion still follows.


Sometimes people ask me for references to other related services such as, caterers, wedding consultants, and florists.
Here are a few links to businesses that I have worked with that might be of help in planning your event. Check back—I will be updating soon!


Organic stoneground yellow corn masa flour, expeller pressed canola oil and/or safflower oil and/or sunflower oil. Gluten free.
White corn, corn oil, water, yellow 5, annatto (color).
Ground corn treated with lime (corn flour, lime, thiamin mononitrate, riboflavin, niacin, reduced iron, folic acid), water, oils (cottonseed and/or corn oil).
Ground corn treated with lime (corn flour, lime, thiamin mononitrate, riboflavin, niacin, reduced iron, folic acid), water, cottonseed and/or corn oil.
Stone ground corn flour, coconut oil, water.
Stone ground corn flour, coconut oil, water and trace of lime.
Stone ground corn flour, coconut oil, water, iron, niacin, thiamine, riboflavin, folic acid, lime.
Stone ground corn flour, coconut oil, water, trace of lime.
Stone ground corn flour, coconut and/or soybean oil, water, iron, niacin, thiamine, riboflavin, folic acid, lime.
White corn, corn oil, water, contains less than 2% of buttermilk, whey, salt, natural flavor (contains milk and soybeans), dried onions, monosodium glutamate, dried garlic, sugar, milkfat, citric acid, spices, yellow 5 lake, yellow 6 lake, disodium guanylate, disodium inosinate, red 40, artificial flavor, turmeric, blue 1, artificial color, yellow 5, annatto (color).
Bleached enriched flour (bleached flour, niacin, reduced iron, thamine mononitrate (vitamin b1), riboflavin (vitamin b2), folic acid, water, vegetable shortening (palm oil with monoglycerides), baking powder (sodium aluminum phosphate, sodium bicarbonate, wheat starch), salt, rice flour, fumaric acid, wheat gluten, calcium and sodium propionate (preservatives), mono- and diglycerides, sugar, cellulose fiber, potassium sorbate (preservative), sodium stearoyl lactylate, locust bean gum, xanthan gum, spice, spice extractives, hydrolyzed soy protein, partially hydrogenated soybean oil, maltodextrin, dehydrated bell peppers, dehydrated onion and garlic, natural and artificial flavor, guar gum, citric acid, corn starch, artificial color (red 40), sodium metabisulfite (dough conditioner).
Enriched flour (bleached wheat flour, niacin, reduced iron, thiamine mononitrate, riboflavin, folic acid), water, masa flour (ground yellow corn, trace of lime), shortening (soybean oil and hydrogenated soybean oil), contains 2% or less of leavening (sodium bicarbonate, sodium aluminum sulfate, sodium aluminum phosphate), salt, dough conditioners (mono- and diglycerides, calcium sulfate, enzymes, l-cysteine monohydrochloride), toasted corn germ, sodium propionate (preservative), fumaric acid, potassium sorbate (preservative), guar gum, cornstarch, soy flour, cellulose gum, microcrystalline cellulose, wheat starch.


While the HIV-1-glycan shield is known to shelter Env from the humoral immune response, its quantitative impact on antibody elicitation has been unclear. Here, we use targeted deglycosylation to measure the impact of the glycan shield on elicitation of antibodies against the CD4 supersite. We engineered diverse Env trimers with select glycans removed proximal to the CD4 supersite, characterized their structures and glycosylation, and immunized guinea pigs and rhesus macaques. Immunizations yielded little neutralization against wild-type viruses but potent CD4-supersite neutralization (titers 1: >1,000,000 against four-glycan-deleted autologous viruses with over 90% breadth against four-glycan-deleted heterologous strains exhibiting tier 2 neutralization character). To a first approximation, the immunogenicity of the glycan-shielded protein surface was negligible, with Env-elicited neutralization (ID50) proportional to the exponential of the protein-surface area accessible to antibody. Based on these high titers and exponential relationship, we propose site-selective deglycosylated trimers as priming immunogens to increase the frequency of site-targeting antibodies.


text:
Link to Ministry of Economic Affairs, Labour and Housing Baden-Wuerttemberg
DE | EN | Simple Language | Sign language
Digital politics
Business 4.0 Initiative
Digital Summit 2020 - Economy 4.0 BW
Digital@BW
Digitalisation bonus plus
Hightech Digital innovation voucher
Publications and studies
Educational offers
Cluster initiatives
Best practice overview
Subsidy Digital hubs
AI made in BW
AI Innovation Park Baden-Württemberg
AI Champions Baden-Württemberg
Crafts industry
Hospitality sector
Commerce and logistics
Culture and creative sector
New legal framework for the economy
Digitization of the economy Baden-Württemberg
Bookmark Print Share Recommend
The dynamic nature of the changes facing the industrial and services sectors in light of growing digitalisation is a challenge for the economy and even more for jurisprudence. Legal issues are increasingly arising in all sectors of industry. This means, for instance, that every company which presents itself on the Internet must know precisely the legal requirements that have to be fulfilled and the risks to which it could be exposed because the Internet is not a legal vacuum. Copyright, brand protection, competition law and data protection are just some of the regulations that need to be observed.
Note: This information is non-binding and does not constitute legal advice in the proper sense. The contents of this offering cannot are not meant to replace case-specific and binding legal advice geared to your specific situation. All the information presented is therefore given without any warranty of its correctness and completeness.
Liability on the Internet
Be it in online commerce, in social networks used for business purposes or when publishing general terms and conditions on a website; failure to observe important legal aspects can mean a risk of fines and actions for injunction.
The list of requirements to be observed by operators of online shops is long in order to ensure legal compliance and avoid warning procedures. One of the most common requirements is for complete contents of the imprint. But care should also be exercised when selecting pictures and product descriptions. If pictures are used without the creator's consent or texts copied from other websites, this can lead not only to warning procedures but also to fines. The German Consumer Protection Law contains many other rules. In order to ensure law-compliant behaviour, online shops must ensure that the version of their general terms and conditions and the revocation terms they use are in conformity with the law. These include, for instance, rules for the payment options offered of which at least one most be available to customers at no cost and also 'usual and reasonable'.
In order to avoid these and other traps, users can avail themselves of standardised templates. If even more comprehensive protection is needed, complete packages (subject to a fee) are also available which provide not only law-compliant templates for general terms and conditions or revocation terms, but also a complete legal opinion regarding legal compliance of the online shop.
Technological innovation and law
Law and technical progress do not proceed parallel, a fact that becomes particularly clear in industry. Automation density increases, processes are interconnected, different data sources are used. Work is performed across company boundaries, and this creates considerable dependencies. Who is liable when a part fails of when a machine makes a mistake?
In this context, data protection and IT security are as relevant as liability questions in accident scenarios or in the case of product defects. Be it in development, production or logistics – entirely new possibilities for production are emerging, but so too are complex legal issues.
The diversity of the legal framework is illustrated, for instance, by the following case. A company has a new production line installed by engineers who are employed by the manufacturer. The line is controlled by software that was programmed by an external service provider. An accident occurs during production – a worker is hit by a machine arm. Claims must be clarified in such a case. Who is responsible for the injury? Who is liable for damage to property, if any? Which law applies? Does labour protection law or criminal law apply?
Imprint | Sitemap | Data protection | Contact | RSS Press | Cookie Policy
_gcl_au Used by Google AdSense to experiment with advertisement efficiency. 3 months HTML Google
AMP_TOKEN Contains a token that can be used to retrieve a Client ID from AMP Client ID service. Other possible values indicate opt-out, request in progress or an error retrieving a Client ID from AMP Client ID service. 1 year HTML Google
_dc_gtm_--property-id-- Used by DoubleClick (Google Tag Manager) to help identify the visitors by either age, gender or interests. 2 years HTML Google
Deny all cookies


text:
Gautam Gambhir fails to fire once again in County cricket
0/0 (0.0)
CRR: NaN
Sports Home Cricket News Gautam Gambhir fails to fire once again in County cricket
Playing for Essex, Gambhir's search for elusive form extended as he struggled for the fourth time. His scores so far are 31, 21, 2 and 0.
Updated: August 29, 2013 01:38 PM IST
Bristol:
India discard Gautam Gambhir's woeful county stint continued after he failed for the fourth time while turning up for Essex, this time in a first-class match against Gloucestershire here today.
Gambhir's sequence of scores in the four matches for Essex (two first-class and two List A) read a horrible 31, 21, 2 and 0. He has not even come close to scoring a 50 for his county side who replaced him in place of Hamish Rutherford.
Gambhir, who is struggling against the seamers was out without scoring after facing eight deliveries as right-arm seamer William Gidman castled him in the fifth over of the day.
The Delhi left-hander's technique against moving deliveries outside the sub-continent has always been under scanner, save a couple of knocks in New Zealand back in 2009.
While he has generally struggled against genuine pace throughout his international career, it is the county seamers who are posing lot of problems for the out-of-favour opener who was played on desperate to score his first runs of the match.
Cricket Danish Kaneria Brendon McCullum James Franklin Bradley Watling Lonwabo Tsotsobe Jeetan Patel Hamish Rutherford Gautam Gambhir England Cricket Team
Watch: "Had Ups And Downs, Didn't Expect..." - Prithvi Shaw Recalls Tough Journey
India vs New Zealand Live Score, 1st T20 Match: Team India Elect To Bowl Against New Zealand In Ranchi
South Africa vs England, 1st ODI Live Score: Rassie Van Der Dussen Hits Fifty, South Africa 4 Down vs England
Shweta Sehrawat Shines As India Beat New Zealand To Reach Women's U19 T20 World Cup Final


Four years ago, Google paid $3.2 billion for Nest, a fancy smart-home thermostat and smoke alarm maker.
Privacy advocates found this a daunting marriage, but Google wound up running the business at arm's length, over in its Alphabet division.
When you work with Nest and use Nest products, that data does not go into the greater Google or any of [its] other business units. We have a certain set of terms and policies and things that are governed. So, just when you say we may be owned by Google, it doesn't mean that the data is open to everyone inside the company or even any other business group – and vice versa. We have to be very clear on that.
Whew! What a relief, eh?
After all, on the one hand, we had Google, with its already vast knowledge of us. On the other hand, there was Nest, maker of Internet of Things (IoT) thermostats that learn, tracking customers' daily usage to automatically set heating and cooling temperatures, and of smoke alarms that communicate via Wi-Fi with the company's other devices or with your smartphone or tablet to send smoke or carbon monoxide alarms.
Put them together, and what do you get? Google's hardware entrance into the IoT. Such a merger could have meant that Big Google Brother would be able to know even more intimate things about us than it already did at the time, such as whether we were home or not. Then, it easily could have connected that information with our mobile phone data to form ever-more-deep portraits of us for ever-more-targeted advertising or other profit-rich ventures.
Well, it turns out that Fadell's "let's be clear on that" promises on data privacy have gotten a bit muddy.
After two years of the thermostat company doing lukewarm on profits, Google trying to sell it in 2016, and Alphabet's reporting "meh!" fourth-quarter earnings earlier this month, Nest and Alphabet last week announced that the Nest and Google Hardware teams would be smushed back together.
By working together, we'll continue to combine hardware, software and services to create a home that's safer, friendlier to the environment, smarter and even helps you save money – built with Google's artificial intelligence and the Assistant at the core.
Yes, Google wants your home to be thoughtful, as in, your home will be thinking about you, and it will have artificial intelligence (AI) to power all that thinky-think data crunching.
Why is that worrisome from a privacy perspective?
Google already harvests an incredible amount of detailed information about millions of internet users around the globe. Now, Google is becoming embedded in the home, through 'smart' soft surveillance products.
Adding data from Nest's home sensors and security cameras will significantly expand Google's monopoly on personal data. Many customers will be justifiably anxious about Google's growing, centralized trove, especially given that its business model relies on data exploitation.
At the time of the acquisition, privacy advocates worried about what would happen to Nest's user data afterwards. Pre-acquisition, it was handled by Amazon Web Services – would Google move the data onto its Compute Engine public cloud to do heaven knows what with?
And since then, Nest has added yet more products, which means the sources for its data have increased. It's moved beyond its initial products – smart thermostats and smoke detectors that use motion detection to know when owners are at home – and added security webcams for inside and outside the home, as well as a camera-equipped doorbell. On top of all that, Nest's app can be set to gather data from other IoT products, including lights, appliances, fitness trackers, cars, and even sensor-equipped beds, to help "save energy, get comfortable and stay safe".
Nest users' data will continue to be used for the limited purposes described in our privacy statement like providing, developing, and improving Nest services and products. As we develop future plans and future product integrations, we will be transparent with users about the benefits of those integrations, any changes to the handling of data, and the choices available to consumers in connection with those changes.
Nest's current privacy statement asserts that it will provide notice of any changes on its website or by contacting customers directly.
On earnings calls, Google lists Nest as one of its few "Other Bets" division: one that generates considerable revenue, alongside healthcare company Verily and internet service Fiber.
But now, it's no longer an "Other Bet." It's just another piece of Google.
Unfortunately, it's a part of Google that has a history of security vulnerability. Last March, security researcher Jason Doyle found a vulnerability in Google's Nest Cam, Dropcam and Dropcam Pro that could be exploited by a burglar within Bluetooth range of your house.
Let's hope that Google's merger with Nest means less security holes in IoT products. Can we get there without customer data privacy being lost?
It would be nice to think so, but c'mon – we're talking about Google, the data gobbler. What do you think will happen?
It would be naive to expect that as Nest is folded into the bigger Google entity, that there aren't efforts to bring its platforms and all of the intelligence together. It will be positioned as enhancing the products, but for some customers that may be something that they feel uncomfortable about.


Our dentists in Tampa offer dental fillings to treat cavities. Dental fillings can also be also used to repair cracked or broken teeth. Ask about tooth-colored fillings that make your mouth look more natural and attractive.
I hate getting my teeth cleaned. Diana, the hygienist, was very sweet and gentle during my cleaning. I recommend her to anyone else out there with a fear of going to the dentist!
She was super nice and friendly ! Yeni treated me so good , deff recommend coming in to see her !!
Prompt friendly skilled professional staff.
I have not been to a dentist in years due to an extreme fear of dentists. Everyone in the office (from check in to check out and everyone in between) made me comfortable and less nervous.


A variety of stunning cake accessory designs that will enable you to send your guests home happy with a lovely piece of wedding cake.
These stunning cupcake sticks are perfect for an afternoon tea or summer celebration. With 20 sticks in each pack they are great for sandwiches or cupcakes to add that special touch.


A downloadable press release, as well as high resolution copies of his book cover and head-shot are available on this page.
May 7, 2018, Tom Glaser talked about happiness on WTIP Radio in Grand Marais, Minn.
In addition to offering an overview of FHL, this Living a Richer Life Radio interview explores how we connect more deeply with others and distinguishing between mindfulness and self-centeredness.
Following this Palm Springs, CA, interview, KMIR-TV host Thalia told me she learned how important deep listening is in cultivating happiness.
What a pleasure to be with Charlotte, NC television station WJZY.
Here I announce a series of free or minimal-cost workshops offered at various Twin Cities senior centers.
Full Heart Living on Detroit's FOX-2 TV. How well do you think the hosts get along?!
Tom on "Lynne with an E" on CTV North Suburban Cable (January 28, 2017).
January 25, 2017, the Oakland Press in Oakland County, Michigan published an article titled: Rochester author shares tips for happiness with a 'Full Heart'.
January 23, 2017, Tom Glaser talked about happiness on WPHM Radio in Port Huron, Mich.
Here's one of my first live TV interviews, on KARE-11 TV in Minneapolis. Thank goodness Pat Evans is so good at his job!
Along with an ensemble of superb actors and technical artists, Tom created a live performance piece based on Full Heart Living. An entertaining, motivating, and informative romp, "Full Heart Living LIVE! The Bootcamp Experience" explored major Full Heart Living themes, including connecting with yourself and others, cultivating mindulness, taking risks, supporting yourself, expressing gratitude, and much more. It premiered at the Minnesota Fringe Festival in August, 2016. Just prior to opening night, "The Buzz" featured a preview on live television.


text:
Scores for Jan 4, 2014
Saints 26
(11-5, 3-5 away)
Eagles 24
(10-6, 4-4 home)
Coverage: NBC
8:10 PM ET, January 4, 2014
Lincoln Financial Field, Philadelphia, PA
1 2 3 4 T
NO 0 6 14 6 26
PHI 0 7 7 10 24
Passing: D. Brees (NO) - 250 YDS, 1 TD, 2 INT
Rushing: M. Ingram II (NO) - 18 CAR, 97 YDS, 1 TD
Receiving: R. Cooper (PHI) - 6 REC, 68 YDS, 1 TD
Saints-Eagles Preview
Recommend0
STATS LLC
Nick Foles grew up idolizing Drew Brees and followed in his footsteps when he played quarterback at Westlake High School in Austin, Texas.
Brees has already won a Super Bowl, but Foles will be playing in his first playoff game Saturday night when his Philadelphia Eagles meet a New Orleans Saints team that will be looking to win on the road in the postseason for the first time in franchise history.
"He's a guy I've watched and learned from," Foles said. "He's done a lot of great things throughout his career, on and off the field, and he's a great role model for fellow players, kids and adults."
Foles, who is 10 years younger than Brees, led the NFC East champion Eagles (10-6) to the playoffs for the first time since the 2010 season. The second-year quarterback went 8-2 as the starter and appeared in 13 games, throwing 27 touchdowns to just two interceptions. His 0.6 interception percentage led the league among quarterbacks who played in more than half of their team's games.
Playing in first-year coach Chip Kelly's up-tempo offense, Foles was terrific down the stretch. He completed 74.5 percent of his passes over the final two weeks of the season and passed for 263 yards and two touchdowns in the finale Sunday night as Philadelphia won 24-22 in Dallas to clinch the division title.
The Eagles are also led by LeSean McCoy, who topped the NFL with 1,607 rushing yards while catching 52 passes for 539 yards for a league-best 2,146 scrimmage yards. DeSean Jackson caught 82 passes for 1,332 yards and nine TDs.
Those threats made Philadelphia's offense difficult for opponents to figure out. The team led the NFC with 247 plays of 10 or more yards.
However, the Eagles will be in for a tough test against a Saints defense that was efficient in limiting big plays, allowing only five touchdowns of 20 or more yards to rank second in the conference.
"They're a talented group," Foles said. "They're going to mix it up with their coverages. They're going to try to put pressure on you at times and they're going to try to get to you.
"I think the key to that is that we have to recognize as a team when they're trying to put pressure on. As the quarterback, I have to recognize which coverage they want to play and what pressure (they're going to bring), and that's what this week of preparation is all about. We're trying to figure out what they're going to do, and I'm sure they'll have new things ready to go for us."
Brees had another terrific season in leading the Saints (11-5) to a wild-card berth, ranking only behind Denver's Peyton Manning with 5,162 yards and 39 touchdowns. His favorite target has been tight end Jimmy Graham, who caught 86 passes for 1,215 yards and an NFL-best 16 touchdowns.
An issue for the team, though, was its troubles away from New Orleans. The Saints went 8-0 while averaging 34.0 points at home compared to 3-5 while scoring 17.8 per game on the road.
The Saints lost their final three road games, getting outscored 78-36, and are 0-5 all-time in playoff contests away from home.
"We're in the postseason. That's all that matters," said outside linebacker Junior Galette, who had 12 sacks. "It gives us a chance to go get a ring, so that's it."
Brees will likely need to carry the load because the Eagles defense is strong against the run. Philadelphia allowed just 3.77 yards per carry, the lowest average among playoff teams.
Not only did New Orleans rank 25th with 92.1 rushing yards per game and 26th with 3.8 per carry, but leading rusher Pierre Thomas (549 yards) has been ruled out with a back injury. The Eagles, though, allowed the most passing yards in the NFL.
"You can't really look at the rankings and think you're going to have your way with them," Saints wide receiver Lance Moore said. "Each game is different. They're playing at home. It'll be tough for us."
Brees is 5-3 in the playoffs with New Orleans, completing 66.2 percent of his passes while throwing 20 touchdowns to only three interceptions. His first postseason victory with the Saints was 27-24 over Philadelphia on Jan. 13, 2007.
In his only game in Philadelphia as a member of the Saints, Brees threw for 311 yards and three touchdowns in a 48-22 win Sept. 20, 2009.
The Eagles won their last four at home this season and are 3-1 in their past four playoff games at Lincoln Financial Field, where temperatures are expected to be in the low 20s.
"We've all played in that kind of weather before, not on a consistent basis, but you just kind of make the preparations," Brees said. "You try to prepare for it as best as you can, but once you're there, it's football. It's about execution."
More from ESPN.com
GM: Eagles expect Hurts to be QB starter in '22
Eagles GM Howie Roseman says the team is approaching the offseason with the mindset that Jalen Hurts will be the team's starting quarterback in 2022.
NFL execs make 10 predictions for 2022: QB trades, coach surprises and more
Will Russell Wilson or Aaron Rodgers leave their teams? Could a big-name coach make a surprising decision? What will the NFC East teams do at QB? Execs help us look to the future.
Could the Cowboys fire Mike McCarthy? Will the Eagles add a QB? Judging wild-card weekend overreactions
Dallas just had a disappointing home playoff loss, while Jalen Hurts struggled for Philadelphia in a first-round rout.
More Eagles Content | More Saints Content
'No-calls' haunt the New Orleans Saints, numbers suggest its worse than one playoff call
NFL exec predictions for 2022: Quarterback shuffling and trades, coach changes, future teams for Aaron Rodgers and Russell Wilson
Los Angeles Rams' Cooper Kupp, Green Bay Packers' Davante Adams among unanimous choices for AP NFL All-Pro Team
Eagles back Jalen Hurts as their 2022 starter, but should we believe them?
GM Howie Roseman expects Jalen Hurts to be Philadelphia Eagles' starting QB in 2022
W-L 1-0 0-1
Avg Points 26.0 24.0
Avg Points Allowed 24.0 26.0
Home Record 0-0 0-1
Road Record 1-0 0-0
Division Record 0-0 0-0
Conference Record 1-0 0-1
Passing Leaders
J. Winston 59.0 1170 14 3
T. Siemian 57.4 1154 11 3
J. Hurts 61.3 3144 16 9
G. Minshew 68.3 439 4 1
Rushing Leaders
A. Kamara 240 898 3.7 4
T. Hill 70 374 5.3 5
J. Hurts 139 784 5.6 10
M. Sanders 137 754 5.5 0
Receiving Leaders
M. Callaway 46 698 15.2 6
D. Harris 36 570 15.8 3
D. Smith 64 916 14.3 5
D. Goedert 56 830 14.8 4
Team Averages & NFL Ranks
TEAM OFFENSE
PER GAME AVERAGE
Total Yards NO
Yards Passing NO
Yards Rushing NO
TEAM DEFENSE
Yards Allowed NO
Pass Yds Allowed NO
Rush Yds Allowed NO
Head to Head Matchups (Since 2001)
New Orleans leads 5-2
Nov 5, 2012 NO 28, PHI 13
Sep 20, 2009 NO 48, @PHI 22
Dec 23, 2007 NO 23, PHI 38
Jan 13, 2007 NO 27, PHI 24
Oct 15, 2006 NO 27, PHI 24
Nov 23, 2003 NO 20, @PHI 33
From Elias: Drew Brees completed a pass to 11 different receivers in Sunday's win over the Buccaneers. According to Elias, that matches the season-high for completions to different receivers in a game. He did it one other time in Week 11 against the 49ers.
Most Completions To Different Receivers - Single Game This Season
Week 17 Drew Brees 11 Buccaneers
Week 11 Drew Brees 11 49ers
Week 13 Alex Smith 11 Broncos
*Source: Elias Sports Bureau
The Saints and Eagles face off in a NFC Wild Card matchup. It will feature starting QBs Drew Brees and Nick Foles. Both Brees and Foles played for and graduated from Westlake High School in Texas. According to Elias, the only previous playoff matchup which featured opposing starting quarterbacks from the same high school took place in 1974 when Terry Bradshaw (Steelers) and Joe Ferguson (Bills) faced off in a 1974 Divisional Playoff. Both went to Woodlawn High School in Shreveport, Louisiana. Bradshaw and the Steelers were victorious. Note - Both Mark Sanchez and Carson Palmer attended Santa Margarita Catholic in California. However, Sanchez transferred to Mission Viejo prior to his junior season. Sanchez (Jets) defeated Palmer (Bengals) in the 2009 AFC Wild Card Playoffs.
Mark Ingram ran for 97 yards Saturday against the Eagles, the second-most in his career (including playoffs). Ingram ran for 73 yards on designed rushes to the right, including his 4-yard touchdown in the third quarter.
Mark Ingram Rushing by Direction, Saturday
Rush 12 6
Yds per rush 6.1 4.0
*Off right guard or right tackle
Drew Brees completed 50% of his passes and threw two interceptions against four or fewer pass rushers in the first half. Brees did not throw an incompletion against standard pressure in the second half. --The Eagles sent a three-man pass rush on 15 of Brees' 33 dropbacks Saturday, the most such dropbacks any quarterback has had in a single game this season. --Brees completed 1-of-4 passes for 11 yards and an interception on play action in the first half. He completed 4-of-5 such passes for 100 yards in the second half, including his 24-yard touchdown pass to Lance Moore.
Drew Brees Passing vs 4 or Fewer Pass Rushers, Saturday
Comp-att 8-16 9-9
Yds per att 4.8 16.1
TD-Int 0-2 1-0
Total QBR 9.6 99.9
Drew Brees: team has last all 3 previous playoff games in which he has thrown an interception
The Saints defense held LeSean McCoy to 2.9 yards per rush between the tackles, his second-lowest average this season and the lowest allowed by the Saints. The Eagles lost all three games this season when McCoy averaged 3.0 yards per rush or fewer between the tackles. --The Eagles ran for 65 yards on 15 rushes when using the zone read (4.3 yards per rush), and were held to 15 yards on seven rushes without it (2.1 yards per rush). During the regular season, the Eagles averaged 5.7 yards per rush when using the zone compared with 4.3 yards per rush when not.
LeSean McCoy Rushing Between the Tackles, This Season
Reg. Season
Rushes PG 14.4 14
Yds per rush 5.4 2.9*
YAC PG 20.6 8
*PHI: 0-3 when McCoy held to 3.0 or fewer
- The Saints held the Eagles to one play of 25 yards or more, tied for the fewest by the Eagles in a game this season. The Eagles led the NFL with 62 such plays during the regular season. - The Saints gained 14 first downs by rushing and 11 by passing Saturday. This was the first time the Saints gained more first downs by rushing than passing since Week 6 of 2010 against the Buccaneers.
The Saints won their first playoff game on the road in franchise history, overcoming cold temperatures behind an improved defense and running. They lost each of their previous 3 road playoff games with Drew Brees despite him averaging over 400 passing yards per game. They allowed over 35 points in each of those losses.
Saints on Road in Playoffs With Drew Brees
1st 3 Games
Brees Pass YPG 406.7 250
Rush YPG 56.7 185
Opp PPG 38.7 24
Drew Brees struggled to get the Saints' offense going in the first half Saturday, compiling a career playoff-low 98 pass yards and throwing two interceptions.
Drew Brees vs Eagles
1st Half 2nd Half
Pass Yds 98* 152
Sacked-Yds 2-1 0-0
Total QBR 12.9 93.5
*Lowest in a first half in playoff career
ESPN Stats & Information
© 2022 ESPN Internet Ventures. Terms of Use, Privacy Policy, Your California Privacy Rights, Children's Online Privacy Policy and Interest-Based Ads are applicable to you. All rights reserved.