text:
Q: How to make multiple balls keep spawning with collision code in it I am trying to combine my collision code with falling balls and paddle code, so far I got my collision code working but I have only one ball dropping and when I clear my collision code multiple balls will drop. Any solution on how to combine both to work? What I want to do is that if one of the random falling balls will hit the paddle, the game ends. Here is the code:

 <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8" />
    <title>Gamedev Canvas Workshop</title>
    <style>
     * { padding: 0; margin: 0; }
     canvas { background: #eee; display: block; margin: 0 auto; }
    </style>
    </head>
    <body>

    <canvas id="myCanvas" width="480" height="500"></canvas>

    <script>

    var spawnRate = 100;

    var spawnRateOfDescent = 2;

    var lastSpawn = -10;

    var objects = [];

    var startTime = Date.now();

    function spawnRandomObject() {

    var t;

    if (Math.random() < 0.50) {
        t = "red";
    } else {
        t = "blue";
    }

    var object = {

        type: t,

        x: Math.random() * (canvas.width - 30) + 15,

        y: 0,
        r: 8

    }

    objects.push(object);
    }

    function animate() {

    var time = Date.now();

    if (time > (lastSpawn + spawnRate)) {
        lastSpawn = time;
        spawnRandomObject();
    }

    for (var i = 0; i < objects.length; i++) {
        var object = objects[i];
        object.y += spawnRateOfDescent;
        ctx.beginPath();
        ctx.arc(object.x, object.y, object.r, 0, Math.PI * 2);
        ctx.closePath();
        ctx.fillStyle = object.type;
        ctx.fill();

    //Collision code starts here
    var distX = Math.abs(object.x - paddleX-paddleWidth/2);
    var distY = Math.abs(object.y - paddleY-paddleHeight/2);

 if (distX > (paddleWidth/2 + 8)) { return false; }
 if (distY > (paddleHeight/2 + 8)) { return false; }

 if (distX <= (paddleWidth/2)) { alert("hello"); }
 if (distY <= (paddleHeight/2)) { alert("hello"); }
 //Collsion code ends here
  }

  }

    var canvas = document.getElementById("myCanvas");
    var ctx = canvas.getContext("2d");
    var paddleHeight = 10;
    var paddleWidth = 60;
    var paddleY = 480
    var paddleX = (canvas.width-paddleWidth)/2;
    var rightPressed = false;
    var leftPressed = false;

    document.addEventListener("keydown", keyDownHandler, false);
    document.addEventListener("keyup", keyUpHandler, false);

    function keyDownHandler(e) {
    if(e.keyCode == 39) {
        rightPressed = true;
    }
    else if(e.keyCode == 37) {
        leftPressed = true;
    }
    }
    function keyUpHandler(e) {
    if(e.keyCode == 39) {
        rightPressed = false;
    }
    else if(e.keyCode == 37) {
        leftPressed = false;
    }
    }

    function drawPaddle() {
    ctx.beginPath();
    ctx.rect(paddleX, paddleY, paddleWidth, paddleHeight);
    ctx.fillStyle = "#0095DD";
    ctx.fill();
    ctx.closePath();
    }

    function move(){
    if(rightPressed && paddleX < canvas.width-paddleWidth) {
        paddleX += 3;
    }
    else if(leftPressed && paddleX > 0) {
        paddleX -= 3;
    }
    }

    function draw() {
 ctx.clearRect(0, 0, canvas.width, canvas.height);
    drawPaddle();
 animate();
    move();

    }

    setInterval(draw, 10);

    </script>

    </body>
    </html>

I am new to javascript so if its too complicated, my appologies.( And be careful with unending loop if it hits the ball)

A: Here's how to stop the game if the paddle and a ball are colliding:
Inside animate() do a 3 part collision test ...
Collision test Part 1:
Test if the ball has not yet reached the paddle.
If the ball has not yet reached the paddle, then stop testing for a collision with this ball and process the next ball by continue-ing the loop.
Collision test Part 2:
Test if the ball has already passed below the paddle.
If the ball has already passed below the paddle, then stop testing for a collision with this ball and process the next ball by continue-ing the loop.
Collision test Part 3:
If you reach this point, the ball is vertically colliding with the paddle. Now test if the ball is horizontally colliding with the paddle.
If the ball is not horizontally over the paddle, then stop testing for a collision with this ball and process the next ball by continue-ing the loop.
If the ball is horizontally over the paddle then stop the game loop with clearInterval.
Here is some refactoring of your code:

    var spawnRate = 100;
    var spawnRateOfDescent = 2;
    var lastSpawn = -10;
    var objects = [];
    var startTime = Date.now();

    function spawnRandomObject() {

    var t;

    if (Math.random() < 0.50) {
        t = "red";
    } else {
        t = "blue";
    }

    var object = {
        type: t,
        x: Math.random() * (canvas.width - 30) + 15,
        y: 0,
        r: 8
    }

    objects.push(object);
    }

    function animate() {
        var time = Date.now();
        if (time > (lastSpawn + spawnRate)) {
            lastSpawn = time;
            spawnRandomObject();
        }

        // calculate the bounds of the paddle
        var paddleLeft=paddleX;
        var paddleRight=paddleX+paddleWidth;
        var paddleTop=paddleY;
        var paddleBottom=paddleY+paddleHeight;

        for (var i = 0; i < objects.length; i++) {

            var object = objects[i];
            object.y += spawnRateOfDescent;
            ctx.beginPath();
            ctx.arc(object.x, object.y, object.r, 0, Math.PI * 2);
            ctx.closePath();
            ctx.fillStyle = object.type;
            ctx.fill();

            //Collision code starts here

            // calculate bounds of this ball
            var objectTop=object.y-object.r;
            var objectBottom=object.y+object.r;
            var objectLeft=object.x-object.r;
            var objectRight=object.x+object.r;

            // Collision test: Part 1
            // Has the ball not yet reached the paddle?
            if(objectBottom<paddleY){
                // no collision yet so no collision is happening
                continue;
            }
            // Collision test: Part 2
            // Has the ball already passed below the paddle?
            if(objectTop>paddleBottom){
                // the ball is under the paddle so no collision is happening
                continue;
            }
            // Collision test: Part 3
            // Is the ball now horizontally over the paddle?
            if(objectRight>paddleLeft && objectLeft<paddleRight){
                // ball is colliding with paddle
                // end the game
                clearInterval(theInterval);
                alert('Game Over - ball  has collided with paddle');
            }

            //Collsion code ends here
        }
  }

    var canvas = document.getElementById("myCanvas");
    var ctx = canvas.getContext("2d");
    var paddleHeight = 10;
    var paddleWidth = 60;
    var paddleY = 480
    var paddleX = (canvas.width-paddleWidth)/2;
    var rightPressed = false;
    var leftPressed = false;

    document.addEventListener("keydown", keyDownHandler, false);
    document.addEventListener("keyup", keyUpHandler, false);

    function keyDownHandler(e) {
    if(e.keyCode == 39) {
        rightPressed = true;
    }
    else if(e.keyCode == 37) {
        leftPressed = true;
    }
    }
    function keyUpHandler(e) {
    if(e.keyCode == 39) {
        rightPressed = false;
    }
    else if(e.keyCode == 37) {
        leftPressed = false;
    }
    }

    function drawPaddle() {
    ctx.beginPath();
    ctx.rect(paddleX, paddleY, paddleWidth, paddleHeight);
    ctx.fillStyle = "#0095DD";
    ctx.fill();
    ctx.closePath();
    }

    function move(){
    if(rightPressed && paddleX < canvas.width-paddleWidth) {
        paddleX += 3;
    }
    else if(leftPressed && paddleX > 0) {
        paddleX -= 3;
    }
    }

    function draw() {
        ctx.clearRect(0, 0, canvas.width, canvas.height);
        drawPaddle();
        animate();
        move();
    }

    var theInterval=setInterval(draw, 25);
* { padding: 0; margin: 0; }
canvas { background: #eee; display: block; margin: 0 auto; }
<canvas id="myCanvas" width="480" height="500"></canvas>


Phylostratigraphy is a method used to correlate the evolutionary origin of founder genes (that is, functional founder protein domains) of gene families with particular macroevolutionary transitions. It is based on a model of genome evolution that suggests that the origin of complex phenotypic innovations will be accompanied by the emergence of such founder genes, the descendants of which can still be traced in extant organisms. The origin of multicellularity can be considered to be a macroevolutionary transition, for which new gene functions would have been required. Cancer should be tightly connected to multicellular life since it can be viewed as a malfunction of interaction between cells in a multicellular organism. A phylostratigraphic tracking of the origin of cancer genes should, therefore, also provide insights into the origin of multicellularity.
We find two strong peaks of the emergence of cancer related protein domains, one at the time of the origin of the first cell and the other around the time of the evolution of the multicellular metazoan organisms. These peaks correlate with two major classes of cancer genes, the 'caretakers', which are involved in general functions that support genome stability and the 'gatekeepers', which are involved in cellular signalling and growth processes. Interestingly, this phylogenetic succession mirrors the ontogenetic succession of tumour progression, where mutations in caretakers are thought to precede mutations in gatekeepers.
A link between multicellularity and formation of cancer has often been predicted. However, this has not so far been explicitly tested. Although we find that a significant number of protein domains involved in cancer predate the origin of multicellularity, the second peak of cancer protein domain emergence is, indeed, connected to a phylogenetic level where multicellular animals have emerged. The fact that we can find a strong and consistent signal for this second peak in the phylostratigraphic map implies that a complex multi-level selection process has driven the transition to multicellularity.
Genomic phylostratigraphy is an analysis method based on a model of punctuated evolution of protein families, which assumes that protein families are initiated by founder genes in a scattered manner throughout evolutionary time [1, 2]. Founder genes in this sense are genes that represent evolutionary novelties in protein sequence space [1, 3, 4] - that is, are not simply duplications of existing genes or genes with re-shuffled functional domains. Rather, they represent new functional proteins or protein domains that were previously not present in the genome, at least not in the new functional form. Once such a new functional domain has emerged, it would be expected that it would retain its primary protein sequence to an extent where it would still be traceable by sequence similarity searches .
Major evolutionary innovations are expected to be accompanied and, at least partly, caused by the emergence of founder genes. Indeed, we were, for example, able to track the macroevolutionary origin of the nervous system and the germ layers based on expression data and the phylogenetic classification of Drosophila genes . Evidently, the genetic architecture of any complex phenotype will also include co-opted genes that have arisen before or after the respective phenotypic innovation occurred. However, they are expected to be co-opted at lower rates and different times and, thus, contribute to the phylostratigraphic signal to a lesser extent. This allows the origin of a phenotypic innovation to be discerned on the phylostratigraphic maps  (see Methods for a more detailed description of the procedure).
Multicellularity is a complex phenotype and considered to be one of the major evolutionary transitions . It seems that multicellularity evolved independently dozens of times in different lineages [5, 6], whereby the multicellular lineage leading to animals (metazoa) is thought to have emerged from a unicellular Choanoflagellate-like ancestor .
Cancer is thought to be a probabilistic event determined by a series of mutations occurring in cancer-associated genes and it seems that a few thousand genes could contribute to tumour development [8, 9]. However, mechanistically these genes do not all contribute in the same way to cancer progression. On a broad scale, two major groups were proposed: caretakers and gatekeepers [10, 11]. Mutations in caretakers promote tumour progression in an indirect way by increasing mutation rates and genome instability, which increases the chances that mutations will hit some genes within the gatekeepers. Mutations in gatekeepers promote tumour progression directly by changing cell differentiation, growth and death rates. Gatekeepers can be further classified into oncogenes and tumour suppressor genes. It is often assumed that cancer in animals is a legacy of the evolution of a multicellular life style  but it is fairly unexplored whether tumours could also be found in early branching metazoans [13, 14]. Moreover, a possible direct link between the macroevolutionary origin of multicellularity and cancer is not necessarily predicted, since the genes involved in causing cancer could have emerged independently at any time during evolution.
We have tested here whether the emergence of founder genes related to cancer has a correspondence to the evolutionary origin of multicellularity. We find a surprisingly clear signal of gene emergence that corresponds well with the major classification of cancer genes. This gives both credence to the classification and the notion that cancer is an ancient phenomenon with a direct correspondence to basic cell function and the interaction of cells.
Based on our previously described phylostratigraphic procedure [1, 2], we generated a database of genome sequences divided into 19 phylostrata corresponding to the evolutionary relationships of the major taxa supported by phylogenomic analyses (Figure 1) [15–19]. This was then used to trace the evolutionary origin of cancer genes identified in humans. If the origin of human cancer genes carries a phylostratigraphic signal related to the macroevoutionary origin of cancer, this should be apparent on the phylostratigraphic map as a distinct and significant overrepresentation of such genes in a particular evolutionary period [1, 2].
Phylogeny used in the search for the evolutionary origin of human genes. Taxa represented in the databases with complete genomes or a substantial amount of TRACE and expressed sequence tag data are in bold. Taxa in italics are represented in the databases only with small numbers of highly conserved genes: their exclusion from the analysis does not influence the results. The phylogeny is based on the results of the most recent phylogenomic analyses [15–19].
A substantial number of genes associated with cancer have been reported in public databases and these databases vary in scope, level of curation and inherent biases [20–23]. Still, surprisingly similar phylostratigraphic patterns were obtained for all of them. In order to illustrate this robustness, we show the phylostratigraphic profiles derived from four compilations of cancer associated genes that represent a spectrum of stringency levels for inclusion of genes (Figure 2). The first dataset contains genes found to be mutated in human tumours (Sanger Cosmic) and the second one includes human genes with cancer related annotation in the National Center of Biotechnology Information databases (Entrez section in CancerGenes). The third most inclusive dataset includes the previous two datasets plus genes involved in cancer biochemical pathways and cancer associated biochemical functions (CancerGenes). The fourth one represents an intensively curated dataset that also includes system properties of cancer genes (Network of Cancer Genes).
Statistical analysis of the cancer datasets on the phylostratigraphic map. Phylostratigraphic representation of log-odds statistics of human cancer genes, based on four different compilations (see inset on top right). Arrows designate the strongest significant over-representations. Statistical significance of the deviations were tested by a two-tailed hypergeometric test corrected for multiple comparison by a false discovery rate at 0.05 level (* P < 0.05; ** P < 0.01; *** P < 0.001). Significant over-representations and under-representations are shaded in red and blue, respectively.
The phylostratigraphic profiles of all four are highly congruent and show two strong over-representation peaks - one at the origin of the first cells (phylostratum 1 = ps1) and the other at the origin of the metazoa (ps5). A significant over-representation is also seen at the level of the emergence of eukaryota (ps2) but it is not as strong as that at ps1. No further over-representation occurs after ps5. On the contrary, the origination of founder genes related to cancer is significantly lowered at the emergence of the eumetazoa and bilateria (ps 6 and 7) and at all levels beyond the emergence of vertebrates (ps11 onwards) (Figure 2).
The above result suggests that the two fundamental events for the emergence of cancer-related genes were the origin of the first cell and the origin of the stable form of multicellularity in metazoans. Although multiple transitions to multicellularity may have occurred before the emergence of the metazoa [fungi (ps3) and Chanoflagellata (ps4)], it seems likely that these were independent and reversible events [5–7]. The metazoan form of multicellularity, on the other hand, has apparently been stable throughout evolution and, thus, may have been a key innovation, including many adaptive changes that required the recruitment of new genes [5, 6]. This would explain the strong peak of cancer gene emergence seen at ps5.
An unexpected peak with respect to cancer genes is the one in ps1, the origin of the first cells. Genes that have emerged at this time would not usually be considered to have a role in regulating multicellularity. However, this peak could make sense in the light of the classification of cancer genes into caretakers and gatekeepers [10, 11]. Caretakers could have evolved earlier, since their genome stability functions are of general importance for a cell, probably independent whether or not it is part of a multicellular organism. Gatekeepers, on the other hand, fulfil functions that are related to influencing cooperation among cells (oncogenes) or to prevent the expansion of cheater cells (tumour suppressor genes). One could predict that both of these gatekeeper functions would be necessary for stable multicellularity [24–26] and should, therefore, have predominantly arisen at the time of emergence of metazoa.
In order to test these predictions, we analysed the different categories of cancer genes separately. We find that the origin of gatekeeper functionality does, indeed, correspond to the origin of metazoa (ps5), with no other significant peak (Figure 3). The further subdivision of this class into oncogenes and tumour-suppressor genes confirms this picture (Figure 3). Both display a peak in their emergence only at ps5, in line with the notion that they are both required together. Caretaker functionality, on the other hand, is predominantly associated with the emergence of the first cellular organisms (ps1) with no further significant peak (Figure 3). This suggests that the cellular machinery that secures the stability of the genome in the context of cancer development was, indeed, in place a long time before multicellularity in animals and gatekeeper functionality evolved.
Statistical analysis of caretakers and gatekeepers on the phylostratigraphic map. Phylostratigraphic representation of log-odds statistics of human caretaker and gatekeeper cancer genes following the annotations in Entrez are shown. Arrows designate the strongest significant over-representation. Squares denote the caretaker dataset (green line, N = 224) and circles denote the gatekeeper dataset (red line, N = 900). The gatekeeper dataset is further subdivided into tumour suppressor genes (solid black line, N = 601) and oncogenes (dashed line, N = 380). Statistical significances of the deviations were tested as described in the legend of Figure 2.
The systematic compilation of genes involved in cancer has used very different criteria for inclusion of genes, which are reflected in an almost fivefold difference in gene numbers between the two most extreme sets. In spite of these differences, we note that all currently available systematic lists provide very congruent patterns in the phylostratigraphic analysis. This suggests that there is an underlying robust pattern, both in our analysis, as well as in the compilations. This was also found in other recent studies to uncover common properties of cancer genes [27, 28]. Still, there are several inherent assumptions in the phylostratigraphic approach that require consideration.
One assumption concerns the validity of the phylogeny. For the results we presented here, the early cladogenesis around the Metazoa is particularly critical. In our analysis we took the classical view, where Porifera are a basal metazoan clade, whereas Cnidaria and Bilateria are branching off later. However, some recent studies found a limited support for an alternative hypothesis, namely that Porifera together with Cnidaria are the earliest branching clade, while Bilateria is a sister group to these diploblastic animals [29, 30]. Although general phylogenomic analyses do not support this view [15, 16, 19], we tested also this alternative hypothesis. We find that our phylostratigraphic pattern is not much affected by this different topology: gatekeeper genes are still significantly over-represented at ps5 and not in other phylostrata (data not shown).
Since a comprehensive cancer gene catalogue is currently only available for humans, our phylogeny is necessarily focused towards humans and presented in a way that tries to depict the major transitions from unicellularity to humans. Once similar comprehensive cancer gene datasets become available for other species - for example, a plant species - one would evidently build a different phylogeny to capture the major transitions towards this species. Another constraint is the availability of fully sequenced genomes. As long as a phylostratum is covered by a single genome only, there is always the chance that this particular species has lost a gene, which would otherwise be present in its lineage. The classification of the respective gene would therefore fall into the next phylostratum and it would seem to be younger than it is. In order to tackle this problem, at least partly, we have also included expressed sequence tag (EST) databases of additional species from a given phlyostratum, if genomic coverage was low.
Another major concern is whether the BLASTP analysis does, indeed, capture the most remote homologues. Although we used a rather permissive cut-off, there are more refined iterative programmes, such as PSI-BLAST, which use profile information from aligned sequences to find remote homologues. However, the increased sensitivity results at the same time in a higher false positive rate . However, there is also a conceptual reason why we prefer BLASTP. We have previously argued that novel gene functions should be associated with novel lineage-specific processes and that the proteins involved in them should have gone through a rapid phase of evolutionary optimization, even if they were initially created by a duplication [1, 3]. Algorithms that are designed to detect distant relationship between proteins, like PSI-BLAST, would be the choice if one would be interested in the ancestral gene duplication that preceded the formation of a founder domain. However, we are interested in the event of founder domain formation per se, which we expect to be characterized by a shift in sequence space, where a substantial proportion of amino acid sites has changed. Once a founder domain has emerged through a duplication event and fast divergence  or through de novo formation [32–34] one would expect normal clock-like divergence, with a constraint on the functional domain and this is indeed the evolutionary pattern that is readily detected by BLASTP searches . However, there is also an inherent weakness of our approach. If a novel gene function is created by the recombination of different functional domains, we would place the origin of this gene into the phylostratum where the domains have originated. Thus, these genes would not be correctly placed in the context of the biological process within which they have emerged. However, this effect, as well the genomic under-representation effect discussed above, is not expected to create a particular bias towards certain phylostrata and would thus only contribute noise to the analysis.
A further source of uncertainty is the correct classification of genes into a given process. In our case, we have to expect that there is an overlap within the classification of gatekeepers and caretakers. For example, for one of the best studied cancer genes, p53, it is becoming clear that it has a multitude of functions , which makes a simple classification into one of the above categories difficult. It is to be expected that this will also be the case for other genes, once their full functional spectrum is understood. However, the over-representation analysis at the functional level that we applied here allows multiple annotations for a single gene and, therefore, inherently overcomes this type of problems.
Given that all these factors should blur our analysis, it is even more surprising that we still find significant associations between gene emergence and biological processes, such as evolution of multicellularity. This suggests that there is indeed a strong underlying signal and that the inevitable noise in the analysis does not override it.
From the theoretical point of view, transition to multicellularity represents an increase in hierarchical complexity of an organism, where cells become cooperatively organized in collectives [24–26]. This transition inherently faces cross level conflicts stemming from dependencies between individual cells and collective fitness. At final stages of the transition process, where collectives are fully emerged entities with their own life cycles, single cell and collective fitness are largely decoupled. However, to reach this final stage of transition to multicellularity both cooperation promoting and conflict reducing adaptations are needed [24–26]. In this context, it has been speculated that the emergence of multicellular life should also have brought about genes that control cheater cells . The function of gatekeepers could be directly associated with the control of cheater cells and it is, therefore, of special interest that we can indeed trace the peak of their appearance to the emergence of metazoan life. In fact, although it seems intuitively clear that cancer genes and multicellularity should somehow be connected, this intuition makes no specific prediction at which time point during the evolution of multicellular lineages one would have expected cancer genes to emerge. Our analysis shows that there is indeed only a subset of cancer genes that are directly connected to the emergence of multicellularity. However, the functional categories associated with this subset imply that there must have been a multi-level selection process [24–26] that was active at the basis of the metazoan lineages, involving the evolution of a multitude of new genetic processes and gene functions connected to the interactions between the cells.
It has been noted that there is a developmental timeline of mutations in caretaker and gatekeeper pathways during tumour progression [37–39]. Caretaker mutations tend to precede gatekeeper mutations and may in fact facilitate these, although this notion has also been disputed . In the context of the macroevolutionary origin of these functionalities, an intriguing parallel between this assumed cellular progression and the phylogeny of these processes is apparent (Figure 4), supporting the notion that there is indeed a successive role for these groups of genes in carcinogenesis.
Colinearity between evolutionary age of cancer genes and their role in tumour progression. Parallels between the macroevolutionary origin of the global pathways leading to neoplasia and the developmental timing of mutations in these pathways are shown. The upper part of the figure is adapted from reference .
We have previously performed a similar phylostratigraphic study on the emergence of genes involved in genetic diseases , with the major finding being that they have arisen very early in evolution, with peaks in ps1 and ps 4/5. Almost no new disease associated genes emerged after the evolution of mammals (ps15). This is a similar finding to that reported here, although the overlap between the disease gene list and the cancer gene lists is only 10%-15%. Hence, cancer genes and disease genes constitute different classes of genes but have similar macroevolutionary histories.
It has been proposed that cancer can be seen as an evolutionary and ecological process within an individual  and typical methods of evolutionary analysis have been applied in order to understand its progression [12, 41, 42]. Our analysis provides a link to the evolution of the gene functions that were required to assemble the first metazoan organism and, thus, adds a macroevolutionary perspective for the emergence of evolutionary dynamic processes controlling complex life forms.
Phylostratigraphic analysis is a potentially powerful tool to better understand the genetic basis of evolutionary transitions, although it focuses only on one aspect of novel gene emergence, namely the appearance of founder protein domains. It will further increase its utility when more fully sequenced genomes are available throughout the tree of life. However, the above described pattern for the emergence of founder genes involved in cancer is already now very robust and confirms the ancient origin of gene functions involved in cancer.
Phylostratigraphic analysis was basically done according to the procedures described in our previous studies [1, 2]. In short, the procedure and its theoretical underpinnings are as follows. The procedure is essentially done in two steps. The first step involves the creation of a consensus phylogeny, where each node is represented by one or more fully sequenced genomes (supplemented with EST data, where necessary). The origin of all genes from an extant genome which is the focus of the analysis (in our case humans) are then mapped to a particular node in this phylogeny (called phylostratum), based on BLASTP analysis. This creates a null distribution of founder protein domain emergence. In the second step, one recovers a distribution of genes that are connected to a certain phenotype (in our case cancer) and uses a statistical test to assess for every phylostratum the way in which this distribution deviates from the null distribution.
Although this seems like a straight forward procedure, it requires various considerations and assumptions to be workable, in particular with respect to the question of how to assign the true evolutionary origin of a given gene. In principle, the mapping of genes onto the phylogeny could be performed in different ways depending on which criteria of evolutionary relatedness are used to define homology groups. For example, very distantly related proteins could be assigned to a protein family based on the similarity of their structural properties even if their primary sequences diverged below similarity detection level. On the other side of the spectrum of possibilities would be the quest to identify truly orthologous proteins with matching domain architectures. The criteria for grouping will largely depend on the evolutionary question one is interested in. In the phylostratigraphic approach, where the statistical signature of macroevolutionary adaptations is the focus, we are applying a procedure somewhere in between these extremes. We group proteins according to any detectable homology between sequences - that is, according to the uniqueness of their sequence in the protein sequence space. This threshold is in protein science sometimes called the 'twilight zone'' of sequence similarity [43, 44]. It implies, for example, that for a multi-domain protein its origin is mapped to the age of its oldest domain and we are interested in the emergence of this very first function.
Our focus on such founder protein domains is a central tenet of the model of punctuated evolution of protein families . The underpinning idea of this model is that new genes with completely novel sequences are continuously added in a genome throughout evolutionary time [45, 46]. This could occur due to gene duplication with a subsequent fast divergence of one of the duplicated copies in the context of a new adaptation [3, 4], or even due to the conversion of intergenic sequences into functional ones [32–34]. Once such a new gene with a novel sequence (or domain) is stably incorporated into a functional circuit it is considered to be a founder gene and can eventually contribute to the formation of paralogs or rearrangements with other genes. As a founder acts as a seed for the later proliferation of similar descendant genes, any future protein that contains it, or part of it, belongs to its family. Thus, in the phylostratigraphic approach, we intentionally do not distinguish between orthologs and paralogs, but are specifically interested in the emergence of the founder gene itself, since it is to be expected that its appearance is tightly associated with the appearance of an evolutionary innovation. An additional support for this view comes from the recent work that suggests that there is generally no clear cut between paralogs and orthologs in their divergence patterns and functional change .
In order to be on the more conservative side of the human genome annotation errors, we retrieved from public databases the same compilation of human protein sequences (20,259 unique proteins) that were used in the recent cancer genome sequencing projects . The BLASTP algorithm (0.001 E-value cut-off) was used to compare human proteins against the NCBI NR database (see [1, 2] for the choice of BLASTP and the cut-off value). This database represents the most exhaustive set of known proteins across all organisms and is, therefore, the most suitable for phylostratigraphic analysis. Before the sequence similarity search was done, the NR database was cleaned up with respect to sequences with uncertain taxonomic status (for example, those annotated as 'incerteae sedis', 'environmental samples' or 'unclassified') or where the taxonomy ID is not included in the cellular organisms section of the NCBI taxonomy database. Additionally, we removed from the database sequences of metazoan taxa with currently unreliable phylogenetic position (Mesozoa, Myxozoa, Chaetognatha and Placozoa). After this clean up procedure we filled up the NR database with complete genomes which were absent in the database but were otherwise publically available . The curated NR database finally contained 4,749,457 protein sequences.
In addition, the TBLASTN searches (10-15 E-value cut-off) were done against substantial trace and EST archives of Porifera, Cyclostomata and Chondrichtyes (phylostrata 6 and 11, Figure 1) as complete annotated genomes are still lacking for these internodes. The higher threshold for the trace and EST archives was necessary because of the different data structure.
Using the obtained BLAST output and the MS SQL database management system in a series of queries we mapped human genes according to the evolutionary origin of their founder genes on the currently best supported phylogeny (Figure 1) [15–19]. Taken together, our choice of internodes depended on the availability of complete annotated genomes, reliability of phylogenetic relationships and on the importance of evolutionary transitions.
We retrieved cancer associated genes from several public resources [20–23]. The full list of genes and datasets used in the analysis is listed in Additional File 1: Table S1. We performed a series of overrepresentation analyses for various combinations of these datasets, in a way that the frequency of cancer associated genes in every phylostratum was compared to the frequency of cancer associated genes in the complete genome (expected frequency) [1, 2]. Obtained deviations are shown by calculating log-odds ratios and their significance were tested by two-tailed hypergeometric tests  corrected for multiple comparisons via a false discovery rate at the 0.05 level . The caretaker and gatekeeper classifications were taken from the Entrez section in the CancerGenes database  as this was currently the only large scale annotated dataset that allowed this type of grouping in a straightforward way. Note that the distinction between caretakers and gatekeepers is not definitive; some genes were listed in both of these categories as they act as both caretakers and gatekeepers. However, all of this information is taken into account and does not pose a problem for the statistical treatment in the overrepresentation analysis. For the analysis of caretakers and gatekeepers we used a more stringent subset of Entrez CancerGenes by taking into account only those that have definitive evidence that they are mutated in human tumours (Sanger Cosmic list ). However, similar results are also obtained when the other databases were used (data not shown).
TDL was supported by a Research Fund of Republic of Croatia (Grant 098-0982913-2832 to Ð Ugarkovic), Zaklada Adris, Unity through knowledge Fund (Grant No. 49), as well as a postdoctoral fellowship of the MPG. Computational resources were provided by CSTMB and RBI Zagreb. We thank Robert Bakarić, Vedran Dunjko and Martin Sebastian Šestak for their technical support and John F Baines and Alexander Pozhitkov for their discussion and comments on the manuscript.
TDL initiated the study and carried out all the bioinformatic analysis. DT contributed to the data interpretation and further development of the study. TDL and DT wrote the manuscript.


A couple of weeks ago, our interiors team took a trip to Thread to view their new workroom space located in Holliston, MA. Thread is a full service workroom that specializes in soft home furnishings and window treatments, and we are lucky to have worked with them on a number of projects. Their attention to detail and seamless fabrication skills makes them one of our favorite collaborators when working on an interiors project.
Whether it's decorative pillows, a custom bench cushion, or roman shades, Thread has helped our clients make their spaces flourish and feel polished with these details. We are so excited we got the chance to see what they were getting up to in their new workroom! Scroll down to see a few projects that they have worked on with us.


An Ulster County sheriff took to social media and urged residents to, in light of the San Bernardino attack, legally carry weapons any time they leave their house.
"We must be prepared to act at any given moment," he wrote.
He also suggested that all retired and active duty officers arm themselves when they leave the house.
All licensed handgun owners in Ulster County should carry their pistols.
That's the message Thursday from the Ulster County Sheriff.
Ulster County is located about two hours north of New York City.
Some were quick to point out that such common sense self-defense suggestions would likely make liberal heads explode.
The Sheriff's message, seen below, has been shared over 10,000 times as of this posting.
It's clear that with an administration whose focus is solely on climate change and not terrorists, and with an attack yesterday that was clearly terrorist in nature on our soil, the only people that can help protect Americans are themselves.
As the sheriff explains, only legally armed citizens are going to stop the radical violence in this country.


Maṇimēkhalai enquired in reply to which of her births the question referred, answering the question none the less that in her previous birth she went by the name Lakṣmī and was the wife of a prince called Rāhuḷa.
In the present birth, she was the daughter of Mādhavī, a dancing woman. She was known by the name Maṇimēkhalai, and she was brought to that particular spot of that island by the Goddess Maṇimēkhalā from the pleasure garden just outside of her native city Kāvēripaṭṭiṇam. She concluded by saying that by means of her worship of the 'Buddha-seat' in front of them she had learnt her previous birth.
So saying she wished to know who the other lady was. The lady replied that in the neighbourhood of that island there  was another called Ratnadvīpa.
'There on the high peak of the hill Samantakūṭa there are the footprints of the Buddha. Having offered worship at the footprints I came to this island long ago. Since then I have remained here keeping guard over this "dharma-seat" under the orders of Indra. My name is Tīvatilakai. (Dvīpa Tilakā). People following the Dharma of the Buddha strictly, offering worship to this "Buddha-seat" will gain knowledge of their previous birth, knowing their past as a result of this worship. Such are few in this world. It is only those few who are fit to acquire Dharmapada forsooth.
Since by such a worship you have acquired knowledge of your previous birth, you must be such a great one. In front of this seat there is a little pond full of cool water overgrown with all varieties of water-lily. From that will appear a never-failing "begging-bowl" by name Amuda-Śurabi. (Amta Surabhi).
Hail! holy feet of Him! that destroyed the sorrows of those of the Nāga world.
After a little while Tīvatilakai gave leave to Maṇimēkhalai to return to Puhār with the bowl. Maṇimēkhalai, after a profound obeisance to her and circumambulating the Buddha-seat again, thought of the mantra which gave her the power to fly, and flew through the air.
She returned to Kāvēripaṭṭiṇam and meeting her mother and companion told them of her previous birth to their wonderment; taking them along with her she went to see the holy sage Aṟavaṇa Aḍigaḷ, telling them on the way that the bowl in her hand was the inexhaustible food-supplying one which once belonged to Āputra, and that the only way for them to attain good life on this  earth was by placing themselves under the beneficent guidance of Aṟavaṇa Aḍigaḷ.


text:
"""Tests for apache_beam.runners.interactive.background_caching_job."""
# pytype: skip-file

import unittest
from unittest.mock import patch

import apache_beam as beam
from apache_beam.options.pipeline_options import PipelineOptions
from apache_beam.pipeline import PipelineVisitor
from apache_beam.runners import runner
from apache_beam.runners.interactive import background_caching_job as bcj
from apache_beam.runners.interactive import interactive_beam as ib
from apache_beam.runners.interactive import interactive_environment as ie
from apache_beam.runners.interactive import interactive_runner
from apache_beam.runners.interactive.caching.streaming_cache import StreamingCache
from apache_beam.runners.interactive.testing.mock_ipython import mock_get_ipython
from apache_beam.runners.interactive.testing.test_cache_manager import FileRecordsBuilder
from apache_beam.testing.test_stream import TestStream
from apache_beam.testing.test_stream_service import TestStreamServiceController
from apache_beam.transforms.window import TimestampedValue

_FOO_PUBSUB_SUB = 'projects/test-project/subscriptions/foo'
_BAR_PUBSUB_SUB = 'projects/test-project/subscriptions/bar'
_TEST_CACHE_KEY = 'test'

def _build_a_test_stream_pipeline():
  test_stream = (
      TestStream().advance_watermark_to(0).add_elements([
          TimestampedValue('a', 1)
      ]).advance_processing_time(5).advance_watermark_to_infinity())
  p = beam.Pipeline(runner=interactive_runner.InteractiveRunner())
  events = p | test_stream  # pylint: disable=possibly-unused-variable
  ib.watch(locals())
  return p

def _build_an_empty_stream_pipeline():
  pipeline_options = PipelineOptions(streaming=True)
  p = beam.Pipeline(
      interactive_runner.InteractiveRunner(), options=pipeline_options)
  ib.watch({'pipeline': p})
  return p

def _setup_test_streaming_cache(pipeline):
  cache_manager = StreamingCache(cache_dir=None)
  ie.current_env().set_cache_manager(cache_manager, pipeline)
  builder = FileRecordsBuilder(tag=_TEST_CACHE_KEY)
  (builder
      .advance_watermark(watermark_secs=0)
      .advance_processing_time(5)
      .add_element(element='a', event_time_secs=1)
      .advance_watermark(watermark_secs=100)
      .advance_processing_time(10)) # yapf: disable
  cache_manager.write(builder.build(), _TEST_CACHE_KEY)

@unittest.skipIf(
    not ie.current_env().is_interactive_ready,
    '[interactive] dependency is not installed.')
class BackgroundCachingJobTest(unittest.TestCase):
  def tearDown(self):
    ie.new_env()

  # TODO(BEAM-8335): remove the patches when there are appropriate test sources
  # that meet the boundedness checks.
  @patch(
      'apache_beam.runners.interactive.background_caching_job'
      '.has_source_to_cache',
      lambda x: True)
  # Disable the clean up so that we can keep the test streaming cache.
  @patch(
      'apache_beam.runners.interactive.interactive_environment'
      '.InteractiveEnvironment.cleanup',
      lambda x,
      y: None)
  def test_background_caching_job_starts_when_none_such_job_exists(self):

    # Create a fake PipelineResult and PipelineRunner. This is because we want
    # to test whether the BackgroundCachingJob can be started without having to
    # rely on a real pipeline run.
    class FakePipelineResult(beam.runners.runner.PipelineResult):
      def wait_until_finish(self):
        return

    class FakePipelineRunner(beam.runners.PipelineRunner):
      def run_pipeline(self, pipeline, options):
        return FakePipelineResult(beam.runners.runner.PipelineState.RUNNING)

    p = beam.Pipeline(
        runner=interactive_runner.InteractiveRunner(FakePipelineRunner()),
        options=PipelineOptions(streaming=True))

    # pylint: disable=possibly-unused-variable
    elems = p | 'Read' >> beam.io.ReadFromPubSub(subscription=_FOO_PUBSUB_SUB)

    ib.watch(locals())

    _setup_test_streaming_cache(p)
    p.run()
    self.assertIsNotNone(ie.current_env().get_background_caching_job(p))
    expected_cached_source_signature = bcj.extract_source_to_cache_signature(p)
    # This is to check whether the cached source signature is set correctly
    # when the background caching job is started.
    self.assertEqual(
        expected_cached_source_signature,
        ie.current_env().get_cached_source_signature(p))

  @patch(
      'apache_beam.runners.interactive.background_caching_job'
      '.has_source_to_cache',
      lambda x: False)
  def test_background_caching_job_not_start_for_batch_pipeline(self):
    p = beam.Pipeline()

    # pylint: disable=expression-not-assigned
    p | beam.Create([])
    p.run()
    self.assertIsNone(ie.current_env().get_background_caching_job(p))

  @patch(
      'apache_beam.runners.interactive.background_caching_job'
      '.has_source_to_cache',
      lambda x: True)
  # Disable the clean up so that we can keep the test streaming cache.
  @patch(
      'apache_beam.runners.interactive.interactive_environment'
      '.InteractiveEnvironment.cleanup',
      lambda x,
      y: None)
  def test_background_caching_job_not_start_when_such_job_exists(self):
    p = _build_a_test_stream_pipeline()
    _setup_test_streaming_cache(p)
    a_running_background_caching_job = bcj.BackgroundCachingJob(
        runner.PipelineResult(runner.PipelineState.RUNNING), limiters=[])
    ie.current_env().set_background_caching_job(
        p, a_running_background_caching_job)
    main_job_result = p.run()
    # No background caching job is started so result is still the running one.
    self.assertIs(
        a_running_background_caching_job,
        ie.current_env().get_background_caching_job(p))
    # A new main job is started so result of the main job is set.
    self.assertIs(main_job_result, ie.current_env().pipeline_result(p))

  @patch(
      'apache_beam.runners.interactive.background_caching_job'
      '.has_source_to_cache',
      lambda x: True)
  # Disable the clean up so that we can keep the test streaming cache.
  @patch(
      'apache_beam.runners.interactive.interactive_environment'
      '.InteractiveEnvironment.cleanup',
      lambda x,
      y: None)
  def test_background_caching_job_not_start_when_such_job_is_done(self):
    p = _build_a_test_stream_pipeline()
    _setup_test_streaming_cache(p)
    a_done_background_caching_job = bcj.BackgroundCachingJob(
        runner.PipelineResult(runner.PipelineState.DONE), limiters=[])
    ie.current_env().set_background_caching_job(
        p, a_done_background_caching_job)
    main_job_result = p.run()
    # No background caching job is started so result is still the running one.
    self.assertIs(
        a_done_background_caching_job,
        ie.current_env().get_background_caching_job(p))
    # A new main job is started so result of the main job is set.
    self.assertIs(main_job_result, ie.current_env().pipeline_result(p))

  @patch('IPython.get_ipython', new_callable=mock_get_ipython)
  def test_source_to_cache_changed_when_pipeline_is_first_time_seen(self, cell):
    with cell:  # Cell 1
      pipeline = _build_an_empty_stream_pipeline()

    with cell:  # Cell 2
      read_foo = pipeline | 'Read' >> beam.io.ReadFromPubSub(
          subscription=_FOO_PUBSUB_SUB)
      ib.watch({'read_foo': read_foo})

    self.assertTrue(bcj.is_source_to_cache_changed(pipeline))

  @patch('IPython.get_ipython', new_callable=mock_get_ipython)
  def test_source_to_cache_changed_when_new_source_is_added(self, cell):
    with cell:  # Cell 1
      pipeline = _build_an_empty_stream_pipeline()
      read_foo = pipeline | 'Read' >> beam.io.ReadFromPubSub(
          subscription=_FOO_PUBSUB_SUB)
      ib.watch({'read_foo': read_foo})

    # Sets the signature for current pipeline state.
    ie.current_env().set_cached_source_signature(
        pipeline, bcj.extract_source_to_cache_signature(pipeline))

    self.assertFalse(bcj.is_cache_complete(str(id(pipeline))))

    with cell:  # Cell 2
      read_bar = pipeline | 'Read' >> beam.io.ReadFromPubSub(
          subscription=_BAR_PUBSUB_SUB)
      ib.watch({'read_bar': read_bar})

    self.assertTrue(bcj.is_cache_complete(str(id(pipeline))))
    self.assertTrue(bcj.is_source_to_cache_changed(pipeline))

  @patch('IPython.get_ipython', new_callable=mock_get_ipython)
  def test_source_to_cache_changed_when_source_is_altered(self, cell):
    with cell:  # Cell 1
      pipeline = _build_an_empty_stream_pipeline()
      transform = beam.io.ReadFromPubSub(subscription=_FOO_PUBSUB_SUB)
      read_foo = pipeline | 'Read' >> transform
      ib.watch({'read_foo': read_foo})

    # Sets the signature for current pipeline state.
    ie.current_env().set_cached_source_signature(
        pipeline, bcj.extract_source_to_cache_signature(pipeline))

    with cell:  # Cell 2
      from apache_beam.io.gcp.pubsub import _PubSubSource
      # Alter the transform.
      transform._source = _PubSubSource(subscription=_BAR_PUBSUB_SUB)

    self.assertTrue(bcj.is_source_to_cache_changed(pipeline))

  @patch('IPython.get_ipython', new_callable=mock_get_ipython)
  def test_source_to_cache_not_changed_for_same_source(self, cell):
    with cell:  # Cell 1
      pipeline = _build_an_empty_stream_pipeline()
      transform = beam.io.ReadFromPubSub(subscription=_FOO_PUBSUB_SUB)

    with cell:  # Cell 2
      read_foo_1 = pipeline | 'Read' >> transform
      ib.watch({'read_foo_1': read_foo_1})

    # Sets the signature for current pipeline state.
    ie.current_env().set_cached_source_signature(
        pipeline, bcj.extract_source_to_cache_signature(pipeline))

    with cell:  # Cell 3
      # Apply exactly the same transform and the same instance.
      read_foo_2 = pipeline | 'Read' >> transform
      ib.watch({'read_foo_2': read_foo_2})

    self.assertFalse(bcj.is_source_to_cache_changed(pipeline))

    with cell:  # Cell 4
      # Apply the same transform but represented in a different instance.
      # The signature representing the urn and payload is still the same, so it
      # is not treated as a new unbounded source.
      read_foo_3 = pipeline | 'Read' >> beam.io.ReadFromPubSub(
          subscription=_FOO_PUBSUB_SUB)
      ib.watch({'read_foo_3': read_foo_3})

    self.assertFalse(bcj.is_source_to_cache_changed(pipeline))

  @patch('IPython.get_ipython', new_callable=mock_get_ipython)
  def test_source_to_cache_not_changed_when_source_is_removed(self, cell):
    with cell:  # Cell 1
      pipeline = _build_an_empty_stream_pipeline()
      foo_transform = beam.io.ReadFromPubSub(subscription=_FOO_PUBSUB_SUB)
      bar_transform = beam.io.ReadFromPubSub(subscription=_BAR_PUBSUB_SUB)

    with cell:  # Cell 2
      read_foo = pipeline | 'Read' >> foo_transform
      ib.watch({'read_foo': read_foo})

    signature_with_only_foo = bcj.extract_source_to_cache_signature(pipeline)

    with cell:  # Cell 3
      read_bar = pipeline | 'Read' >> bar_transform
      ib.watch({'read_bar': read_bar})

    self.assertTrue(bcj.is_source_to_cache_changed(pipeline))
    signature_with_foo_bar = ie.current_env().get_cached_source_signature(
        pipeline)
    self.assertNotEqual(signature_with_only_foo, signature_with_foo_bar)

    class BarPruneVisitor(PipelineVisitor):
      def enter_composite_transform(self, transform_node):
        pruned_parts = list(transform_node.parts)
        for part in transform_node.parts:
          if part.transform is bar_transform:
            pruned_parts.remove(part)
        transform_node.parts = tuple(pruned_parts)
        self.visit_transform(transform_node)

      def visit_transform(self, transform_node):
        if transform_node.transform is bar_transform:
          transform_node.parent = None

    v = BarPruneVisitor()
    pipeline.visit(v)

    signature_after_pruning_bar = bcj.extract_source_to_cache_signature(
        pipeline)
    self.assertEqual(signature_with_only_foo, signature_after_pruning_bar)
    self.assertFalse(bcj.is_source_to_cache_changed(pipeline))

  def test_determine_a_test_stream_service_running(self):
    pipeline = _build_an_empty_stream_pipeline()
    test_stream_service = TestStreamServiceController(reader=None)
    test_stream_service.start()
    ie.current_env().set_test_stream_service_controller(
        pipeline, test_stream_service)
    self.assertTrue(bcj.is_a_test_stream_service_running(pipeline))
    # the test_stream_service will be cleaned up on teardown.

  def test_stop_a_running_test_stream_service(self):
    pipeline = _build_an_empty_stream_pipeline()
    test_stream_service = TestStreamServiceController(reader=None)
    test_stream_service.start()
    ie.current_env().set_test_stream_service_controller(
        pipeline, test_stream_service)
    bcj.attempt_to_stop_test_stream_service(pipeline)
    self.assertFalse(bcj.is_a_test_stream_service_running(pipeline))

  @patch(
      'apache_beam.testing.test_stream_service.TestStreamServiceController'
      '.stop')
  def test_noop_when_no_test_stream_service_running(self, _mocked_stop):
    pipeline = _build_an_empty_stream_pipeline()
    self.assertFalse(bcj.is_a_test_stream_service_running(pipeline))
    bcj.attempt_to_stop_test_stream_service(pipeline)
    _mocked_stop.assert_not_called()

if __name__ == '__main__':
  unittest.main()

redpajama_set_name: RedPajamaGithub


This glass set is designed to go with the Cosicube 70 square fire pit. The glass surround will not only add a stylish element to the fire pit but also an added security feature. The glass will protect the flames from the wind as well as prevent children and pets from coming into contact with the fire.
The Cosicube can be viewed here.


text:
Beth Collier
At Home in Nature
There's a trauma in loss of connection to nature, we need to stop saying that it's not for us
by Admin 10th March 2020 18th November 2020
Black dismissiveness of nature isn't just simple dislike, it belies a legacy of trauma and the interference of white supremacy.
A version of this article was first published by Blavity
If you're black and love being in nature, no doubt you've probably had friends roll their eyes at you or ask if you're mad. We're not supposed to like it – apparently.
Black dismissiveness of nature isn't just simple dislike, it belies a legacy of trauma and human interference which has made being in nature feel unsafe and unwelcome.
In both the US and Europe we spend less time in nature than white people.
This means we benefit less from a positive relationship with the natural world and all of its health giving properties (reduces stress, depression, anxiety, rumination, lowers our heart rate and cortisol levels, increases meditative feelings, concentration, elevates our mood and supports our nervous systems; people who live close to green space live longer).
Many of us have been disenfranchised from nature by racism and the legacies of slavery, colonialism and poverty. Within Africa and the diaspora the trauma of interaction with white people and contradictory negative messages about our relationship with nature as either shameful (we're primitive for being close to the natural world), or incompetent (we don't know how to act in nature/we harm nature) has kept us away.
Meanwhile, people of African descent in the diaspora are now more likely to live in urban areas with a lack of access to parks and open spaces and are disproportionately effected by environmental conditions which harm our health (air pollution, toxic water and heat island effect).
There are deep psychological consequences in being disconnected from nature, resulting in trauma from the loss of intimacy. It creates an emotional disconnect to something that we are part of and is a source of support. Attitudes within black communities that nature is pointless or for white people is a form of internalized racism which also serves as a coping mechanism to minimise traumatic experiences which have separated us from a relationship with the natural world. The damage runs so deep that many of us express pride that we hate nature.
It isn't normal to step away from something healthy and that feels good, unless we are given cause to.
There has been a process of disenfranchisement in which white supremacy has instilled feelings of fear and inferiority in being in the natural world. Slavery and colonialism made nature a place of horror, hardship and shame. Segregation and the Klan made travelling through the countryside intimidating. Jim Crow laws enforced black absence from parks and recreational sites. Indigenous Peoples have been displaced to make room for 'pristine' wildlife parks in the US and Africa. In the UK feeling unsafe and unwelcome kept generations of migrants away from the countryside. In Africa there is a visible distinction about who gets to enjoy the wildlife fenced off from poorer black Africans for the enjoyment of richer white people.
The trauma isn't just a historical legacy, dynamics with other humans continue to make being in nature feel unsafe. A black couple recently had a gun pulled on them by a white woman in Starkville Miss. for visiting a campsite beauty spot, in the UK a white scout leader compared a female colleague wearing a nikab to Darth Vader, saying that she would 'frighten children and animals.' I've had a group of white male outdoor leaders openly make racist remarks in front of me, regaling the good old days when you didn't have to be PC and breaking into racist impersonations, whilst I was alone as a black leader with them in the woods. Stark messages about where we're perceived to belong or not belong. The idea of nature as a white bastion persists.
Environmental movements have a long history rooted in eugenics and white supremacy – Sierra Club, National Geographic, World Wildlife Fund and Scouts all had founders and prominent members who were eugenicists or Nazi's whose views about pure, unspoilt landscapes were linked to ideas of racial purity.
Prof. Dorceta Taylor's seminal 2014 report revealed the environmental sector in the US to be a "green insiders club" with a lack of diversity. In the UK a paltry 1.8% of the staff at Natural England responsible for advising the government on nature, are people of colour. The best funded African conservation NGO's are dominated by white people.
Racism can lurk unchallenged within environmental organizations and there is significant pushback to attempts by black leaders to call it out. However there are increasing numbers of black nature groups on both sides of the atlantic, challenging myths about our relationship with nature and critiquing the environmental field's lack of progress in diversifying staff and programmes.
Groups like Outdoor Afro and Greening Youth Foundation in the US and Wild in the City and Sheffield Environmental Movement in the UK are working to address the lower presence of people of colour enjoying nature.
This disconnect has gone on too long, we need to recognise the difference between the sabotage of human interference in our relationship with nature and not actually liking nature. We need to acknowledge the harm done, so we can start to heal and repair the relationship. The enjoyment of nature is our heritage and is there waiting for us to claim it, a step which will bring us renewed strength both as individuals and as communities.
Black Nature Narratives
Covid-19 and the race factor in access to green space
For psychotherapy enquiries:
hello@bethcollier.co.uk
For NAP training enquiries:
hello@naturetherapyschool.com
For consultancy on race & nature and media enquiries:
info@wildinthecity.org.uk
Beth Collier ©2021

redpajama_set_name: RedPajamaCommonCrawl


text:
California State Government June 8, 2010 Election
Governor; Libertarian Party Voter Information
Results as of Jun 29 4:19pm, 100.0% of Precincts Reporting (22894/22894)
Dale F. Ogden 16,749 votes 100.0%
Occupation: Business Consultant/Actuary
Associate Casualty Actuarial Society
Member American Academy of Actuaries
Libertarian Candidate for Insurance Commissioner 1998, 2002, & 2006
Libertarian Candidate for Assembly 2000
Libertarian Candidate for State Senate 2004
Reduce spending by California state government at least to 1998 levels
Reduce state employees' salaries and pensions to private sector levels
Reduce or abolish state income taxes & reduce sales taxes
As the state's chief executive officer, oversees most state departments and agencies and appoints judges.
Proposes new laws and approves or vetoes legislation.
Prepares and submits the annual state budget.
Mobilizes and directs state resources during emergencies.
Nonpartisan Information
Sacramento Bee - includes answers to 6 questions
KGO-TV (San Francisco ABC) - a 5 minute video statement by each candidate
Orange County Register - Select "state", "Governor", and, optionally, a Party. See a profile of each candidate and answers to 3 questions
See the candidates and results from the 11/7/2006, 6/6/2006, 10/7/2003, 11/5/2002, 11/03/1998 elections.


There are a lot of Pt Courses Online in Malta, online and in personal training campuses spread all over Malta. Pt Courses Online is becoming more popular as a lot of people are motivated in trying to get as fit and healthy as they can.
By undertaking a Pt Courses Online, you will be almost guaranteed of a career that is certainly high in satisfaction and financial gains.
There are plenty of Maltese Pt Courses Online offered and the one you have chosen most often will be the Pt Courses Online that has the best reviews and best tutors.
There are many factors to consider before choosing which Pt Courses Online will be perfect for you.
To become a personal trainer, you have to get Pt Courses Online in Malta. This is necessary not only to increase your credibility in the fitness industry but also to assure clients that their safety and health will be in good hands. Certifications for becoming a Maltese personal trainer endorses the capability of the fitness instructor.
Malta Pt Courses Online will provide you of knowledge and skills to become a qualified fitness trainer. These courses can help you be well prepared in working out with clients and making sure that you share the correct health advice to them.
There are lots of Pt Courses Online you could choose to be a fitness instructor, and they differ depending on what their primary focus is on; you could pick from nutrition, anatomy, cardiovascular training, basic aerobics, fitness evaluation and injury prevention.
The sure way for you to attain the proper education and knowledge is to learn with a highly reliable fitness school. A personal training institute that provides the most effective range of a Pt Courses Online accredited all over Europe and the World.
What you are looking for are Maltese Pt Courses Online that will make you the best that you can be in the highly competitive industry of health and fitness.
Finishing the proper fitness education of a Pt Courses Online in Malta gives you your fitness trainer certification that could open a lot of job opportunities. You might be able to work in gyms all over the world, or you can even get a job on a cruise ship.
Live your dream and do something you love, view our personal trainer certs and become a qualified fitness trainer.


text:
Rourea pittieri är en tvåhjärtbladig växtart som beskrevs av Sidney Fay Blake. Rourea pittieri ingår i släktet Rourea och familjen Connaraceae. Inga underarter finns listade i Catalogue of Life.

Källor

Harsyreordningen
pittieri

redpajama_set_name: RedPajamaWikipedia


Mol Cell Biol. 2001 Mar;21(5):1656-61.
3'-phosphodiesterase and 3'-->5' exonuclease activities of yeast Apn2 protein and requirement of these activities for repair of oxidative DNA damage.
Unk I1, Haracska L, Prakash S, Prakash L.
Sealy Center for Molecular Science, University of Texas Medical Branch, Galveston, Texas 77555-1061, USA.
In Saccharomyces cerevisiae, the AP endonucleases encoded by the APN1 and APN2 genes provide alternate pathways for the removal of abasic sites. Oxidative DNA-damaging agents, such as H(2)O(2), produce DNA strand breaks which contain 3'-phosphate or 3'-phosphoglycolate termini. Such 3' termini are inhibitory to synthesis by DNA polymerases. Here, we show that purified yeast Apn2 protein contains 3'-phosphodiesterase and 3'-->5' exonuclease activities, and mutation of the active-site residue Glu59 to Ala in Apn2 inactivates both these activities. Consistent with these biochemical observations, genetic studies indicate the involvement of APN2 in the repair of H(2)O(2)-induced DNA damage in a pathway alternate to APN1, and the Ala59 mutation inactivates this function of Apn2. From these results, we conclude that the ability of Apn2 to remove 3'-end groups from DNA is paramount for the repair of strand breaks arising from the reaction of DNA with reactive oxygen species.
DNA substrates used in this study. See the text for further details. The asterisks indicate the radioactively labeled terminus.
Mol Cell Biol. 2001 Mar;21(5):1656-1661.
Phosphodiesterase activity of the Apn2 protein. (A) GST-Apn2 protein (50 fmol) was incubated with 200 fmol of PG1 substrate, which contains a 5′-labeled 35-nt DNA strand with a 3′-PG terminus. Lane C represents a control DNA substrate which is the same as PG1 except that the 5′-labeled strand has a 3′-OH end instead of PG. Reactions were carried out for 5 min at 30°C, and the reaction products were analyzed on a 7 M urea–12% polyacrylamide gel. (B) PG1 substrate (200 fmol) was incubated with the indicated amount of GST-Apn2. (C) Graphic representation of results in panel B.
Apn2 has a 3′→5′ exonuclease activity. The indicated amounts of GST-Apn2 protein were incubated for 5 min at 30°C with the following substrates: 200 fmol of the S-4 partial DNA duplex containing a 5′-labeled strand with a 3′-recessed terminus (A) and 200 fmol of the S-8 partial DNA duplex containing a 3′-labeled strand with 5′- and 3′-recessed termini (B). The reaction products were analyzed on a 7 M urea–10% polyacrylamide gel (A) and on a 7 M urea–20% polyacrylamide gel (B). DNA bands were visualized by autoradiography. The positions of the uncleaved 29-mer oligonucleotide and the mononucleotide product are shown on the left on Fig. B. The asterisk indicates the radioactively labeled terminus. See the legend to Fig. for C-4, S-8, and other DNA substrates used in this study.
Coelution of 3′→5′ exonuclease activity with the Apn2 protein. Fractions from the Mini-S chromatography step were assayed for exonuclease activity. (Top) Each fraction (1 μl) was separated on an 8% denaturing polyacrylamide gel and stained with Coomassie blue. (Bottom) Fractions were diluted 100-fold and examined for exonuclease activity with the S-4 partial DNA duplex containing a 5′-labeled strand with a 3′-recessed terminus.
Optimal reaction conditions for the exonuclease activity of Apn2 protein. The exonuclease activity of GST-Apn2 was assayed under various conditions, using the S-4 partial DNA duplex substrate. (A) Time dependence; (B) pH dependence (morpholineethanesulfonic acid [MES] was used for pHs 5 and 6, and Tris was used for pHs 6.8, 7.5, 8.0, and 8.8); (C) NaCl concentration dependence; (D) metal ion dependence. The first lane contains reaction mixture without any metal ions in the reaction buffer.
Exonuclease activity of Apn2 protein on different DNA substrates. GST-Apn2 (50 fmol) was incubated with 200 fmol of each of the indicated 5′-labeled DNA substrates for 5 min at 30°C. Lanes − contain a control reaction mixture without any GST-Apn2 protein. Asterisks indicate the radioactively labeled terminus.
The purity and the activity of the Apn2 Ala59 mutant protein. (A) Two micrograms of the wild-type (wt) and the Ala59 mutant (A59) GST-Apn2 proteins was loaded on an 8% denaturing polyacrylamide gel and stained with Coomassie blue. Molecular mass standards with the indicated molecular masses are on the left. (B) The exonuclease activities of the wild-type and mutant GST-Apn2 proteins were compared by using two different DNA substrates. Lanes − contain reaction mixtures without any protein added.
Requirement of 3′-phosphodiesterase activity for the repair of H2O2-induced DNA damage. Cells were grown overnight in yeast extract-peptone-dextrose medium (YPD) or in synthetic complete medium lacking leucine (SC-leu) to ensure retention of plasmid pPM1039 carrying the Apn2 Ala59 mutant allele. Cells were diluted in either YPD or SC-leu and incubated at 30°C until they had reached early to mid-exponential phase (density of 5 × 106 to 1 × 107 per ml), at which time 0.5-ml aliquots were treated with H2O2 at 30°C for 1 h with vigorous shaking. Cell suspensions were diluted 10-fold with cold water, and appropriate dilutions were plated on YPD for viability determinations. Each curve represents the average from three or more experiments. Symbols: ●, wild type; ○, apn1Δ; ▴, apn2Δ; ▵, apn1Δ apn2Δ; ▪, apn1Δ apn2Δ cells carrying the Apn2 Ala59 mutant allele in plasmid pPM1039.


About Freedom Fence Company, Inc.
To provide a service to the public so that they could feel safe and not be harmed in any way.
To put out a fair product for a fair price.
To not retire off of any one job nor lose money on any one job.
To keep the morals, values, and ethics I was raised with and transcend them into the business world.
To provide a place of employment that people could come to work and enjoy it.
Last but not least to always, always keep service as the priority and profit as a secondary motive !!!
Zac Zaccaro, Owner Of Freedom Fence Has Over 24 Years In The Fencing Industry.
By Offering Quality And Service At A Fair Price, Freedom Fence Has Become The Fastest Growing Fence Company In The Northern California Region.
Freedom Fence Is A Member Of The Afa (American Fence Association) Assuring That You Are Dealing With A Fence Company That Is Required To Adhere To The Associations Code Of Ethics.
Freedom Fence Company Is A Member In Good Standing With The Sacramento Better Business Bureau.
Freedom Fence Company Is Licensed, Bonded And Insured For Your Protection.
Freedom Fence Provides An Exclusive Material And Labor Warranty On All Of Its Installed Fence And Specialty Products.
Freedom Fence Professionally Trained Installation Crews Guarantee Your Satisfaction.
Freedom Fence Provides Optimum Quality By Purchasing Only The Finest Materials Available.
Being One Of The Largest Residential Fence Companies Means We Can Buy In Bulk, Direct From The Manufacturer, Insuring More Consistent Quality For Our Customers.
Freedom Fence Offers A Wider Selection Of Options Than Any Other Fence Company To Satisfy Your Individual Needs.
Freedom Fence Is The Only Full Turnkey Operation That Can Handle A Project That Has Several Different Products On The Same Job.
Freedom Fence Offers All Fence Materials For The Customer Who Wishes To Install The Project Themselves.
We Honor Visa, Master Card, And American Express Cards.


text:
(function(){
    'use strict';

    angular
        .module('mdTechtalk')
        .controller('UserController', UserController);

    UserController.$inject = ['AjaxService','Task','$mdDialog','$mdToast'];
    function UserController(AjaxService,Task,$mdDialog,$mdToast){
        var vm        = this;
        vm.tasks      = Task.tasks;
        vm.showTaskForm = showTaskForm;
        vm.deleteTask = deleteTask;

        //////////// Function Declaration /////////////
        function showTaskForm(ev){
            $mdDialog.show({
                controller: AddTaskController,
                controllerAs: 'TaskForm',
                templateUrl: 'AddTask.tmpl.html',
                targetEvent: ev
            });
        }
        function deleteTask(index,id,ev){
            var confirm = $mdDialog.confirm()
                .title('Confirm')
                .content('Are you sure you want to delete this Data?')
                .ok('Yes')
                .cancel('no')
                .targetEvent(ev);
            $mdDialog.show(confirm)
                .then(function(){
                    Task.deleteTask(index,id)
                    .then(function(){
                         $mdToast.show(
                            $mdToast.simple()
                                .content('You delete the data')
                                .position('top right')
                                .hideDelay(3000)
                        );//
                    })
                }, function(){
                    $mdToast.show(
                        $mdToast.simple()
                            .content('You cancel delete the data')
                            .position('top right')
                            .hideDelay(3000)
                    )
                })
        }
        Task.loadTasks();
    }

    angular
        .module('mdTechtalk')
        .controller('AddTaskController',AddTaskController);

    AddTaskController.$inject = ['$mdDialog', 'Task','$mdToast'];
    function AddTaskController($mdDialog,Task,$mdToast){
        var vm        = this;
        vm.newTaskTxt = '';
        vm.createTask = function (){
            console.log('clicked')
            Task.createTask(vm.newTaskTxt)
            .then(function(response){
                $mdDialog.hide('Task deleted');
                $mdToast.show(
                    $mdToast.simple()
                        .content('Task added')
                        .position('top right')
                        .hideDelay(3000)
                )
            }, function(){
                $mdDialog.cancel('Fail to delete Task');
                $mdToast.show(
                    $mdToast.simple()
                        .content('Fail to add Task')
                        .position('top right')
                        .hideDelay(3000)
                )
            });
        }
    }
})();


text:
Mo' Metal, Mo' Problems: Scrap Thefts Ravage Broward
Victoria Bekiempis
| Crime |
Victoria Bekiempis | August 18, 2011 | 3:55pm
A handful of Broward hooligans has shown that some people think metals are a little too precious.
Six storm drains have been stolen from Oakland Park in the last two nights, according to the Broward Sheriff's Office. The upswing in metal thefts -- which includes a "Slinky" AC thief -- has also taken place in Pompano Beach, where five sewer drains have been stolen since May.
The BSO didn't specify whether the robbers cribbed manholes, or just grated storm drains. At this time, investigators aren't sure whether the thefts are the work of one or more crooks, the BSO says.
"Obviously, we are investigating these cases," Kayla Concepcion, BSO spokeswoman, tells New Times. "The theft of metal scraps for sale has been an ongoing issue."
With ACs, copper thieves prey upon houses and commercial buildings in the middle of the night, then pilfer several hundred dollars' worth of copper, the BSO says. Homeowners and businesses, in turn, have to pay thousands to replace costly air-conditioning units.
With storm drains, however, it's unclear whether the bandits work round-the-clock, or only under the cover of night.
At any rate, if you happen to see anything suspicious -- say, a masked individual lugging around an AC compressor or storm drain covers (who is also carrying a burlap bag with a '$' painted on it...think "Hamburglar") -- the BSO asks that you call Crimestoppers at 1-866-493-TIPS.
(That's 1-866-493-8477 if you don't feel like looking at the little letters on your phone's keypad.)


This was the big get at BEA this year. And I didn't get it. Oh well. Looking forward to reading it someday!
Shame you didn't get it at BEA. Truthwitch look amazing and I can't wait for it to come out! I hope you love it when you do get to read it.
Looks awesome- love that cover, and the whole premise too. Looking forward to it.
Yeah I think people almost came to blows about it. It sounds good. Might have to look into it when it comes out.
How dare you not get it! I would so sell my soul for one. I just want it soooooo badly!
I love that cover, I hope you enjoy reading it when you eventually get it!
YES!! This is already on my TBR and I cannot wait to get my hands on it! Happy reading.
I didn't have any interest in the zombie series by the author but this one fits with my reading style much more.


text:
Juan Alfonso de Alburquerque (Lisboa, c. 1304-28 de septiembre de 1354), apodado «el del Ataúd», fue un magnate y político portugués, hijo de Alfonso Sánchez y de Teresa Martínez de Meneses.

Fue valido y alférez mayor del rey Pedro I de Castilla, de quien se sospecha le mandó envenenar, canciller mayor de Castilla, mayordomo mayor de la reina María de Portugal, esposa de Alfonso XI, y ayo y mayordomo mayor de los infantes Fernando y Pedro, hijos del rey Alfonso XI. También fue el VI señor de Alburquerque, de Meneses, Azagala, Medellín, Codosera, Tiedra y Alconchel,

Orígenes familiares y primeros años

Su padre, Alfonso Sánchez, era el primogénito, aunque fuera de matrimonio, del rey Dionisio I de Portugal con Aldonza Rodríguez Talha. Teresa Martínez de Meneses, su madre, era hija de Juan Alfonso Téllez de Meneses, primer conde de Barcelos, y de Teresa Sánchez, hija ilegítima de Sancho IV de Castilla. Teresa sobrevivió a su marido, el conde de Barcelos, casi unos veinte años. Parte del señorío de Alburquerque en el reino de Castilla había pasado a Alfonso Sánchez entre 1304 y 1306 y la otra parte cuando contrajo matrimonio con Teresa Martínez. Juan Alfonso se crio en Lisboa en casa de Juan Simón de Urró (João Simão de Urrô), quien en 1314 le donó bienes en esa ciudad y en Alenquer.

Valido de Pedro I el Cruel
Alrededor de 1330, se encontraba en Castilla donde ejerció el cargo de alférez mayor de su primo Alfonso XI y después como ayo y mayordomo mayor del infante Pedro. También fue canciller de Alfonso XI y durante parte del reinado de Pedro I.  Fue «el hombre clave en la preparación del infante» Pedro, quien contaba con apenas quince años de edad cuando falleció su padre, y se convirtió en el valido del joven rey y uno de los políticos más influyentes del reino.

Convocó las Cortes en el verano de 1351 que fueron el máximo exponente del poder alcanzado por Juan Alfonso de Albuquerque, inspirador de las decisiones que en ellas se tomaron, entre ellas, la redacción del Becerro de las Behetrías de Castilla en 1352, la administración de los consejos, así como otros ordenamientos tales como la relación entre las comunidades cristianas y judías, el ejercicio de la justicia, y el problema de los abusos de los poderosos del reino. Se dictaron medidas para proteger el comercio con Flandes y para organizar la persecución de malhechores y se intentó normalizar la precaria situación económica mediante un control de precios y salarios. Estas medidas se han considerado la obra más sólida del reinado y como el gran éxito personal del valido posibilitando una política de concordia.

Fue uno de los artífices del Tratado de Tarazona con el reino de Aragón por la parte aragonesa junto con Bernardo de Cabrera. También jugó un papel importante en la concertación del matrimonio del rey Pedro con la infanta Blanca, hija de Pedro I, duque de Borbón, para afianzar las relaciones entre ambas coronas. y fue el padrino de la boda que se celebró el 3 de junio de 1353 en la Iglesia de Santa María la Mayor en Valladolid.

Caída en desgracia y muerte

Las relaciones entre el rey y su favorito se fueron deteriorando, debido tanto al apoyo de Alburquerque a la alianza con Francia en un momento en que el rey empezaba a tomar en consideración un acercamiento a Inglaterra, como a su excesivo peso en los asuntos de la corte. Alburquerque se retiró a sus tierras en Extremadura «ante el temor de ser víctima de la ira regia» y después volvió a Portugal. Los hombres próximos a Alburquerque fueron destituidos por el rey Pedro quien colocó en su lugar a parientes de su amante María de Padilla.

En esas fechas, Alburquerque llegó a un acuerdo con el infante Enrique, futuro Enrique II de Castilla, quien con otros nobles formó una coalición contra su medio hermano, el rey Pedro. Pero López de Ayala relata en su Crónica que «se vio con el Conde Don Enrique é con el Maestre Don Fadrique, e se avinieron» y los tres marcharon a Alburquerque. Las huestes de Juan Alfonso de Alburquerque y de los hermanos bastardos, hijos de Alfonso XI, «estragaron toda la tierra de Badajoz» y ocuparon Ciudad Rodrigo.

Pocos días después del éxito logrado por los rebeldes cuando se apoderaron de Medina del Campo, falleció Juan Alfonso de Alburquerque en esa ciudad en 1354, probablemente envenenado por orden del Pedro I, según cuenta el canciller Ayala quien dice que el rey ordenó a su médico «que diera hierbas a don Juan Alfonso (...) e el físico fízolo asídio las hierbas a don Juan Alfonso en un jarope de que morió.»

Sepultura
Después de su muerte, no recibió sepultura de inmediato y los rivales del rey lo «convirtieron en un estandarte de su causa». Su ataúd, de ahí su apodo, acompañó al ejército y no fue enterrado hasta la victoria contra el rey castellano. Finalmente fue depositado en el monasterio de la santa Espina, en Castromonte, provincia de Valladolid, donde también fueron enterrados su esposa y Martín, el hijo de ambos.

Matrimonio y descendencia
Contrajo matrimonio entre 1323 y 1324 con su prima Isabel Téllez de Meneses, X señora de Meneses, hija de Tello Alfonso de Meneses y de María de Portugal, nieta de Alfonso III. Fueron padres de:
 Martín Gil de Alburquerque (1325–1365), también llamado Martín Eanes de Alburquerque, VII señor de Alburquerque y XI señor de Meneses a la muerte de sus padres y adelantado mayor de Murcia. Ejecutado por orden de Pedro I en 1365, fue sepultado junto con sus padres en el Monasterio de la Santa Espina. Con su muerte se extinguió la línea principal del linaje y el rey Pedro I de Castilla incorporó sus bienes a la corona y su madre se convirtió en la heredera universal de sus bienes en Portugal.

Fuera de matrimonio, con María Rodríguez Barba, hija de Rui Martins Barba e de su esposa Iria Martins Alardo tuvo tres hijos:
 Fernando Alfonso de Alburquerque (1327–1387), señor de Vila Nova de Anços y maestre de la Orden de Santiago gracias a la intervención de su parienta la reina Leonor Téllez de Meneses. Tuvo descendencia ilegítima femenina.
 Beatriz Alfonso de Alburquerque, contrajo matrimonio con Juan Alfonso Tello, fallecido en la batalla de Aljubarrota en 1385, VI conde de Barcelos y almirante de Portugal, hijo de Martín Alfonso Téllez de Meneses y de Aldonza Anes de Vasconcelos.
 María Alfonso de Alburquerque, fue legitimada en 1372 ya estando casada con Gonzalo Téllez de Meneses, I conde de Neiva y señor de Faria, hermano del esposo de su hermana Beatriz.

Tuvo dos hijos con María Gil de Zático, de la Torre de Handóm, cerca de Torreperogil, hija de Pedro Gil de Zático, IV señor de Torreperogil, y de su esposa Elvira Alonso, viuda sin descendencia de Rodrigo de Chaves, y hermana de Alfonso Gil de Zático, ballestero mayor de Enrique III de Castilla:
 Diego Alfonso Gil, que fue dado como rehén por su padre junto a su medio hermano Martín Gil de Alburquerque, adelantado mayor de Murcia, a Pedro I de Castilla, soltero y sin descendencia.
 Pedro Gil, casado en Cataluña con María Gil de Jaques, hija de Jaime de Jaques.

Notas

Referencias

Bibliografía

Nobles de España del siglo XIV
Nobles de Portugal del siglo XIV
Políticos de Portugal del siglo XIV
Casa de Borgoña (Portugal)
Cancilleres mayores del rey
Juan Alfonso de Alburquerque
Alféreces del rey
Mayordomos mayores de la reina
Nacidos en Lisboa
Fallecidos en Medina del Campo


Day three of the West Armagh Community Festival and the summer camp continues with its activities.The weather wasn't too favourable but fortunately the days schedule was set indoors. Starting off with an irish lesson delivered through song and game the children have a great time with tutor Michael Hughes who entertained them for the morning session,during which they learned a cuplá focal. Games and songs where the order of the day and it was fortunate that the building was not occupied by any other group at the time because the noise level was noticable increased.
After lunch the ever energetic Joanne Mullan took the kids for another dance and drama session. There was no reluctance on the part of the boys this time, who were worried on Monday that dance and drama meant something 'sissy'. Anything but it and once again the noise levels increased. The only concerns being expressed by our community volunteers who regretted not taking ear plug with them.


The Dark Horse Comics adaptation Polar, starring Mads Mikkelsen, drags as simplistic characters plod through mindless carnage.
Serenity, starring Matthew McConaughey and Anne Hathaway, is an early contender for the worst film of 2019 as director Steven Knight delivers an epic clunker.
Director Joe Cornish follows Attack the Block with his brilliant new take on the Arthurian Legend The Kid Who Would be King.
The Death of Superman concludes with four new heroes vying to be the Man of Steel.
The Horde strikes again, but Mr. Glass and the poncho'd Overseer fall flat in M. Night Shyamalan's sequel to Unbreakable and Split.
Keanu Reeves plays mad scientist in a hilariously weird thriller about cloning dead people in Replicas.
Director Robert Zemeckis and star Steve Carell have managed to make an epic disaster with Welcome to Marwen.
Aquaman stands above nearly every other DC superhero on the big screen in his first solo outing.
While the plot of Mary Poppins Returns doesn't have much appeal, the incredible musical numbers are worth it.
While Mortal Engines is visually gorgeous, the narrative feels inept, poorly written, and overly convenient.
Despite a great build-up, Clint Eastwood's The Mule ends up being quite mediocre.
Aquaman offers zero surprises, but entertains with epic action scenes and Jason Momoa's charisma.
Disney has a new classic with Mary Poppins Returns, which will be just as beloved as the original.
Once Upon a Deadpool finally answers the question of whether the franchise works as a PG-13, and the answer is no.


Darjeeling, the queen of all hill stations, famous for its natural beauty, clean fresh air, year round pleasant weather and above all, the ever smiling and welcoming local people. The 3rd highest pick in the world, mount Kanchenjunga is very close to this lpece and also gives the clearest view. Darjeeling is widely known as visitors paradise because every day it offers something new to everyone, may be the first time visitor and may be the regular one. The morning bell comes to the vewers when the first ray of sun touches the mountain pick. This is tiger hill, a steep ride of five kilometers from Ghoom, is the place where one can witness this heavenly feelings. Here the air is chilly, but unique to get an experience. Here the new day starts with the world famous blend of tea, foggy and smokky weather, Mountain View and smiling face of local Gorkhi people. Darjeeling is also a place to know Tibetan culture, Himalayan Tribal Life, and to see the Tibetian Monasteries, Pine Trees, Tea garden etc very closely.
Climate: Summer--15-23 deg C. Winter--2-10 deg C.
Best time to visit: April to mid June, September to November.
Visitors are advised to carry srain wear in all season and light woolen clothes in summer also.
The people of Darjeeling and near about places like Kalimpong and Mirik are consist of the Gurungs from West Nepal. Other races like Bhutias, Gukhas from east Nepal, Lepchas from Sikkim are also living together. People from plains also came and have settled there as the place is very charming.
The local fare is rice and meat curry and momos, which are, steamed dumplings, and of course, chow, the locally made noodles. This generally accompanied by chhang, a locally brewed wine made from millet or the jaad, which is made from, fermented rice. The Gurkhas are staunch Hindus and celebrate all Hindu festivals with equal dedication. But Dussehra is the most popular Gurkha festival.
Air: The nearest Airport to Darjeeling is Bagdogra. It gives around 100 km journey to Darjeeling.
Rail: Shiliguri is connected to all the major cities of India by train. From Shiliguri and New Jalpaiguri, the Toy Trains are available which gives a memorable journey to Darjeeling.
Road:Shiliguri is also well accessed by road ways and buses , minibuses jeeps run every thirty minutes or so from Siliguri to Darjeeling, Mirik, Gangtok Katmandu and other places.


text:
Aldi denies nappy change after complaints from parents
The range is the biggest selling own brand in the country
Supermarket chain Aldi has issued a statement over its award-winning nappies after complaints from parents.
Mums and dads have said they think the nappy design has been changed - with some saying the brand is no longer as absorbant as it once was.
But the claims of a change for the worse have been denied by the budget chain, reports Mirror Online.
One mum took to social media to report: "I use both 4 and 4+ for my twins but opened a packet of 4+ that I bought last week and they are different from what they normally are.
"The feeling is different (softer), the green is paler and most importantly they are smaller and less absorbent (as I found out this morning as my daughter was wet through and this has never happened) than they usually are.
"There also seems to be less stretch in the fasteners.
How to claim £144 if you've been working from home
Warning over £1,000 fake Asda voucher scam
"You can also see in the second picture that if I match up the line of the green waistband at the back, the waistband is longer but the actual absorbent 'nappy bit' is significantly smaller."
A second mother added: "I've used Aldi nappies on my daughter since birth never had any problem until about 1 month ago she was soaking through."
An Aldi spokesman said: "As the UK's largest own-label nappy brand, our customers buy over a billion award-winning Mamia nappies each year.
"We made some improvements to our nappies last year, including improving absorbency and ensuring a more even distribution of fluid to give a better fit and reduce sagging.
"We're always grateful for customer feedback, which helps with future product development."
Wales breaking news plus traffic, weather and travel updates (Saturday, January 22)
Wales weatherThe news, sport, weather and travel from across the country


Bringing students and teachers to the farm!
Arrange your Farm To School visit today!
We love having students of all ages visit Anjali Farm. It is so important to teach each generation where their food comes from and help them to develop an appreciation for the hard work farmers do on their behalf. We invite regional schools to visit our farm this Season to learn about agriculture and farming. Get out of the classroom, visit us, and get dirty!
Contact Us to make arrangements for your students to visit us on a field trip.