text:
import numpy as np
import h5py
import matplotlib.pyplot as plt
from testCases_v3 import *
from dnn_utils_v2 import sigmoid, sigmoid_backward, relu, relu_backward

get_ipython().magic('matplotlib inline')
plt.rcParams['figure.figsize'] = (5.0, 4.0) # set default size of plots
plt.rcParams['image.interpolation'] = 'nearest'
plt.rcParams['image.cmap'] = 'gray'

get_ipython().magic('load_ext autoreload')
get_ipython().magic('autoreload 2')

np.random.seed(1)

# ## 2 - Outline of the Assignment
#
# To build your neural network, you will be implementing several "helper functions". These helper functions will be used in the next assignment to build a two-layer neural network and an L-layer neural network. Each small helper function you will implement will have detailed instructions that will walk you through the necessary steps. Here is an outline of this assignment, you will:
#
# - Initialize the parameters for a two-layer network and for an $L$-layer neural network.
# - Implement the forward propagation module (shown in purple in the figure below).
#      - Complete the LINEAR part of a layer's forward propagation step (resulting in $Z^{[l]}$).
#      - We give you the ACTIVATION function (relu/sigmoid).
#      - Combine the previous two steps into a new [LINEAR->ACTIVATION] forward function.
#      - Stack the [LINEAR->RELU] forward function L-1 time (for layers 1 through L-1) and add a [LINEAR->SIGMOID] at the end (for the final layer $L$). This gives you a new L_model_forward function.
# - Compute the loss.
# - Implement the backward propagation module (denoted in red in the figure below).
#     - Complete the LINEAR part of a layer's backward propagation step.
#     - We give you the gradient of the ACTIVATE function (relu_backward/sigmoid_backward)
#     - Combine the previous two steps into a new [LINEAR->ACTIVATION] backward function.
#     - Stack [LINEAR->RELU] backward L-1 times and add [LINEAR->SIGMOID] backward in a new L_model_backward function
# - Finally update the parameters.
#
#
#
 **Figure 1**

#
#
# **Note** that for every forward function, there is a corresponding backward function. That is why at every step of your forward module you will be storing some values in a cache. The cached values are useful for computing gradients. In the backpropagation module you will then use the cache to calculate the gradients. This assignment will show you exactly how to carry out each of these steps.

# ## 3 - Initialization
#
# You will write two helper functions that will initialize the parameters for your model. The first function will be used to initialize parameters for a two layer model. The second one will generalize this initialization process to $L$ layers.
#
# ### 3.1 - 2-layer Neural Network
#
# **Exercise**: Create and initialize the parameters of the 2-layer neural network.
#
# **Instructions**:
# - The model's structure is: *LINEAR -> RELU -> LINEAR -> SIGMOID*.
# - Use random initialization for the weight matrices. Use `np.random.randn(shape)*0.01` with the correct shape.
# - Use zero initialization for the biases. Use `np.zeros(shape)`.

# In[2]:

# GRADED FUNCTION: initialize_parameters

def initialize_parameters(n_x, n_h, n_y):
    """
    Argument:
    n_x -- size of the input layer
    n_h -- size of the hidden layer
    n_y -- size of the output layer

    Returns:
    parameters -- python dictionary containing your parameters:
                    W1 -- weight matrix of shape (n_h, n_x)
                    b1 -- bias vector of shape (n_h, 1)
                    W2 -- weight matrix of shape (n_y, n_h)
                    b2 -- bias vector of shape (n_y, 1)
    """

    np.random.seed(1)

    ### START CODE HERE ### (≈ 4 lines of code)
    W1 = np.random.randn(n_h, n_x) * 0.01
    b1 = np.zeros((n_h, 1))
    W2 = np.random.randn(n_y, n_h) * 0.01
    b2 = np.zeros((n_y, 1))
    ### END CODE HERE ###

    assert(W1.shape == (n_h, n_x))
    assert(b1.shape == (n_h, 1))
    assert(W2.shape == (n_y, n_h))
    assert(b2.shape == (n_y, 1))

    parameters = {"W1": W1,
                  "b1": b1,
                  "W2": W2,
                  "b2": b2}

    return parameters

# In[3]:

parameters = initialize_parameters(3,2,1)
print("W1 = " + str(parameters["W1"]))
print("b1 = " + str(parameters["b1"]))
print("W2 = " + str(parameters["W2"]))
print("b2 = " + str(parameters["b2"]))

# **Expected output**:
#
#

#

#      **W1**
#      [[ 0.01624345 -0.00611756 -0.00528172]
#  [-0.01072969  0.00865408 -0.02301539]]
#

#
#

#      **b1**
#     [[ 0.]
#  [ 0.]]
#

#
#

#     **W2**
#      [[ 0.01744812 -0.00761207]]
#

#
#

#      **b2**
#      [[ 0.]]
#

#
#

# ### 3.2 - L-layer Neural Network
#
# The initialization for a deeper L-layer neural network is more complicated because there are many more weight matrices and bias vectors. When completing the `initialize_parameters_deep`, you should make sure that your dimensions match between each layer. Recall that $n^{[l]}$ is the number of units in layer $l$. Thus for example if the size of our input $X$ is $(12288, 209)$ (with $m=209$ examples) then:
#
#

#
#
#

#
#          **Shape of W**
#          **Shape of b**
#          **Activation**
#          **Shape of Activation**
#

#
#

#          **Layer 1**
#          $(n^{[1]},12288)$
#          $(n^{[1]},1)$
#          $Z^{[1]} = W^{[1]}  X + b^{[1]} $
#
#          $(n^{[1]},209)$
#

#
#

#          **Layer 2**
#          $(n^{[2]}, n^{[1]})$
#          $(n^{[2]},1)$
#         $Z^{[2]} = W^{[2]} A^{[1]} + b^{[2]}$
#          $(n^{[2]}, 209)$
#

#
#

#          $\vdots$
#          $\vdots$
#          $\vdots$
#          $\vdots$
#          $\vdots$
#

#
#

#          **Layer L-1**
#          $(n^{[L-1]}, n^{[L-2]})$
#          $(n^{[L-1]}, 1)$
#         $Z^{[L-1]} =  W^{[L-1]} A^{[L-2]} + b^{[L-1]}$
#          $(n^{[L-1]}, 209)$
#

#
#
#

#          **Layer L**
#          $(n^{[L]}, n^{[L-1]})$
#          $(n^{[L]}, 1)$
#          $Z^{[L]} =  W^{[L]} A^{[L-1]} + b^{[L]}$
#          $(n^{[L]}, 209)$
#

#
#

#
# Remember that when we compute $W X + b$ in python, it carries out broadcasting. For example, if:
#
# $$ W = \begin{bmatrix}
#     j  & k  & l\\
#     m  & n & o \\
#     p  & q & r
# \end{bmatrix}\;\;\; X = \begin{bmatrix}
#     a  & b  & c\\
#     d  & e & f \\
#     g  & h & i
# \end{bmatrix} \;\;\; b =\begin{bmatrix}
#     s  \\
#     t  \\
#     u
# \end{bmatrix}\tag{2}$$
#
# Then $WX + b$ will be:
#
# $$ WX + b = \begin{bmatrix}
#     (ja + kd + lg) + s  & (jb + ke + lh) + s  & (jc + kf + li)+ s\\
#     (ma + nd + og) + t & (mb + ne + oh) + t & (mc + nf + oi) + t\\
#     (pa + qd + rg) + u & (pb + qe + rh) + u & (pc + qf + ri)+ u
# \end{bmatrix}\tag{3}  $$

# **Exercise**: Implement initialization for an L-layer Neural Network.
#
# **Instructions**:
# - The model's structure is *[LINEAR -> RELU] $ \times$ (L-1) -> LINEAR -> SIGMOID*. I.e., it has $L-1$ layers using a ReLU activation function followed by an output layer with a sigmoid activation function.
# - Use random initialization for the weight matrices. Use `np.random.rand(shape) * 0.01`.
# - Use zeros initialization for the biases. Use `np.zeros(shape)`.
# - We will store $n^{[l]}$, the number of units in different layers, in a variable `layer_dims`. For example, the `layer_dims` for the "Planar Data classification model" from last week would have been [2,4,1]: There were two inputs, one hidden layer with 4 hidden units, and an output layer with 1 output unit. Thus means `W1`'s shape was (4,2), `b1` was (4,1), `W2` was (1,4) and `b2` was (1,1). Now you will generalize this to $L$ layers!
# - Here is the implementation for $L=1$ (one layer neural network). It should inspire you to implement the general case (L-layer neural network).
# ```python
#     if L == 1:
#         parameters["W" + str(L)] = np.random.randn(layer_dims[1], layer_dims[0]) * 0.01
#         parameters["b" + str(L)] = np.zeros((layer_dims[1], 1))
# ```

# In[4]:

# GRADED FUNCTION: initialize_parameters_deep

def initialize_parameters_deep(layer_dims):
    """
    Arguments:
    layer_dims -- python array (list) containing the dimensions of each layer in our network

    Returns:
    parameters -- python dictionary containing your parameters "W1", "b1", ..., "WL", "bL":
                    Wl -- weight matrix of shape (layer_dims[l], layer_dims[l-1])
                    bl -- bias vector of shape (layer_dims[l], 1)
    """

    np.random.seed(3)
    parameters = {}
    L = len(layer_dims)            # number of layers in the network

    for l in range(1, L):
        ### START CODE HERE ### (≈ 2 lines of code)
        parameters['W' + str(l)] = np.random.randn(layer_dims[l], layer_dims[l-1]) * 0.01
        parameters['b' + str(l)] = np.zeros((layer_dims[l], 1))
        ### END CODE HERE ###s

        assert(parameters['W' + str(l)].shape == (layer_dims[l], layer_dims[l-1]))
        assert(parameters['b' + str(l)].shape == (layer_dims[l], 1))

    return parameters

# In[5]:

parameters = initialize_parameters_deep([5,4,3])
print("W1 = " + str(parameters["W1"]))
print("b1 = " + str(parameters["b1"]))
print("W2 = " + str(parameters["W2"]))
print("b2 = " + str(parameters["b2"]))

# **Expected output**:
#
#

#

#      **W1**
#     [[ 0.01788628  0.0043651   0.00096497 -0.01863493 -0.00277388]
#  [-0.00354759 -0.00082741 -0.00627001 -0.00043818 -0.00477218]
#  [-0.01313865  0.00884622  0.00881318  0.01709573  0.00050034]
#  [-0.00404677 -0.0054536  -0.01546477  0.00982367 -0.01101068]]
#

#
#

#     **b1**
#     [[ 0.]
#  [ 0.]
#  [ 0.]
#  [ 0.]]
#

#
#

#     **W2**
#     [[-0.01185047 -0.0020565   0.01486148  0.00236716]
#  [-0.01023785 -0.00712993  0.00625245 -0.00160513]
#  [-0.00768836 -0.00230031  0.00745056  0.01976111]]
#

#
#

#     **b2**
#     [[ 0.]
#  [ 0.]
#  [ 0.]]
#

#
#

# ## 4 - Forward propagation module
#
# ### 4.1 - Linear Forward
# Now that you have initialized your parameters, you will do the forward propagation module. You will start by implementing some basic functions that you will use later when implementing the model. You will complete three functions in this order:
#
# - LINEAR
# - LINEAR -> ACTIVATION where ACTIVATION will be either ReLU or Sigmoid.
# - [LINEAR -> RELU] $\times$ (L-1) -> LINEAR -> SIGMOID (whole model)
#
# The linear forward module (vectorized over all the examples) computes the following equations:
#
# $$Z^{[l]} = W^{[l]}A^{[l-1]} +b^{[l]}\tag{4}$$
#
# where $A^{[0]} = X$.
#
# **Exercise**: Build the linear part of forward propagation.
#
# **Reminder**:
# The mathematical representation of this unit is $Z^{[l]} = W^{[l]}A^{[l-1]} +b^{[l]}$. You may also find `np.dot()` useful. If your dimensions don't match, printing `W.shape` may help.

# In[27]:

# GRADED FUNCTION: linear_forward

def linear_forward(A, W, b):
    """
    Implement the linear part of a layer's forward propagation.

    Arguments:
    A -- activations from previous layer (or input data): (size of previous layer, number of examples)
    W -- weights matrix: numpy array of shape (size of current layer, size of previous layer)
    b -- bias vector, numpy array of shape (size of the current layer, 1)

    Returns:
    Z -- the input of the activation function, also called pre-activation parameter
    cache -- a python dictionary containing "A", "W" and "b" ; stored for computing the backward pass efficiently
    """

    ### START CODE HERE ### (≈ 1 line of code)
    Z = np.dot(W, A) + b
    ### END CODE HERE ###

    assert(Z.shape == (W.shape[0], A.shape[1]))
    cache = (A, W, b)

    return Z, cache

# In[28]:

A, W, b = linear_forward_test_case()

Z, linear_cache = linear_forward(A, W, b)
print("Z = " + str(Z))

# **Expected output**:
#
#

#
#

#      **Z**
#      [[ 3.26295337 -1.23429987]]
#

#
#

# ### 4.2 - Linear-Activation Forward
#
# In this notebook, you will use two activation functions:
#
# - **Sigmoid**: $\sigma(Z) = \sigma(W A + b) = \frac{1}{ 1 + e^{-(W A + b)}}$. We have provided you with the `sigmoid` function. This function returns **two** items: the activation value "`a`" and a "`cache`" that contains "`Z`" (it's what we will feed in to the corresponding backward function). To use it you could just call:
# ``` python
# A, activation_cache = sigmoid(Z)
# ```
#
# - **ReLU**: The mathematical formula for ReLu is $A = RELU(Z) = max(0, Z)$. We have provided you with the `relu` function. This function returns **two** items: the activation value "`A`" and a "`cache`" that contains "`Z`" (it's what we will feed in to the corresponding backward function). To use it you could just call:
# ``` python
# A, activation_cache = relu(Z)
# ```

# For more convenience, you are going to group two functions (Linear and Activation) into one function (LINEAR->ACTIVATION). Hence, you will implement a function that does the LINEAR forward step followed by an ACTIVATION forward step.
#
# **Exercise**: Implement the forward propagation of the *LINEAR->ACTIVATION* layer. Mathematical relation is: $A^{[l]} = g(Z^{[l]}) = g(W^{[l]}A^{[l-1]} +b^{[l]})$ where the activation "g" can be sigmoid() or relu(). Use linear_forward() and the correct activation function.

# In[29]:

# GRADED FUNCTION: linear_activation_forward

def linear_activation_forward(A_prev, W, b, activation):
    """
    Implement the forward propagation for the LINEAR->ACTIVATION layer

    Arguments:
    A_prev -- activations from previous layer (or input data): (size of previous layer, number of examples)
    W -- weights matrix: numpy array of shape (size of current layer, size of previous layer)
    b -- bias vector, numpy array of shape (size of the current layer, 1)
    activation -- the activation to be used in this layer, stored as a text string: "sigmoid" or "relu"

    Returns:
    A -- the output of the activation function, also called the post-activation value
    cache -- a python dictionary containing "linear_cache" and "activation_cache";
             stored for computing the backward pass efficiently
    """

    if activation == "sigmoid":
        # Inputs: "A_prev, W, b". Outputs: "A, activation_cache".
        ### START CODE HERE ### (≈ 2 lines of code)
        Z, linear_cache = linear_forward(A_prev, W, b)
        A, activation_cache = sigmoid(Z)
        ### END CODE HERE ###

    elif activation == "relu":
        # Inputs: "A_prev, W, b". Outputs: "A, activation_cache".
        ### START CODE HERE ### (≈ 2 lines of code)
        Z, linear_cache = linear_forward(A_prev, W, b)
        A, activation_cache = relu(Z)
        ### END CODE HERE ###

    assert (A.shape == (W.shape[0], A_prev.shape[1]))
    cache = (linear_cache, activation_cache)

    return A, cache

# In[30]:

A_prev, W, b = linear_activation_forward_test_case()

A, linear_activation_cache = linear_activation_forward(A_prev, W, b, activation = "sigmoid")
print("With sigmoid: A = " + str(A))

A, linear_activation_cache = linear_activation_forward(A_prev, W, b, activation = "relu")
print("With ReLU: A = " + str(A))

# **Expected output**:
#
#

#

#      **With sigmoid: A **
#      [[ 0.96890023  0.11013289]]
#

#

#      **With ReLU: A **
#      [[ 3.43896131  0.        ]]
#

#

#

# **Note**: In deep learning, the "[LINEAR->ACTIVATION]" computation is counted as a single layer in the neural network, not two layers.

# ### d) L-Layer Model
#
# For even more convenience when implementing the $L$-layer Neural Net, you will need a function that replicates the previous one (`linear_activation_forward` with RELU) $L-1$ times, then follows that with one `linear_activation_forward` with SIGMOID.
#
#
#
 **Figure 2** : *[LINEAR -> RELU] $\times$ (L-1) -> LINEAR -> SIGMOID* model

#
# **Exercise**: Implement the forward propagation of the above model.
#
# **Instruction**: In the code below, the variable `AL` will denote $A^{[L]} = \sigma(Z^{[L]}) = \sigma(W^{[L]} A^{[L-1]} + b^{[L]})$. (This is sometimes also called `Yhat`, i.e., this is $\hat{Y}$.)
#
# **Tips**:
# - Use the functions you had previously written
# - Use a for loop to replicate [LINEAR->RELU] (L-1) times
# - Don't forget to keep track of the caches in the "caches" list. To add a new value `c` to a `list`, you can use `list.append(c)`.

# In[43]:

# GRADED FUNCTION: L_model_forward

def L_model_forward(X, parameters):
    """
    Implement forward propagation for the [LINEAR->RELU]*(L-1)->LINEAR->SIGMOID computation

    Arguments:
    X -- data, numpy array of shape (input size, number of examples)
    parameters -- output of initialize_parameters_deep()

    Returns:
    AL -- last post-activation value
    caches -- list of caches containing:
                every cache of linear_relu_forward() (there are L-1 of them, indexed from 0 to L-2)
                the cache of linear_sigmoid_forward() (there is one, indexed L-1)
    """

    caches = []
    A = X
    L = len(parameters) // 2                  # number of layers in the neural network

    # Implement [LINEAR -> RELU]*(L-1). Add "cache" to the "caches" list.
    for l in range(1, L):
        A_prev = A
        ### START CODE HERE ### (≈ 2 lines of code)
        A, cache = linear_activation_forward(A_prev,
                                             parameters["W" + str(l)],
                                             parameters["b" + str(l)],
                                             activation = "relu")
        caches.append(cache)
        ### END CODE HERE ###

    # Implement LINEAR -> SIGMOID. Add "cache" to the "caches" list.
    ### START CODE HERE ### (≈ 2 lines of code)
    AL, cache = linear_activation_forward(A,
                                          parameters["W" + str(L)],
                                          parameters["b" + str(L)],
                                          activation = "sigmoid")
    caches.append(cache)
    ### END CODE HERE ###

    assert(AL.shape == (1,X.shape[1]))

    return AL, caches

# In[44]:

X, parameters = L_model_forward_test_case_2hidden()
AL, caches = L_model_forward(X, parameters)
print("AL = " + str(AL))
print("Length of caches list = " + str(len(caches)))

#

#

#      **AL**
#      [[ 0.03921668  0.70498921  0.19734387  0.04728177]]
#

#

#      **Length of caches list **
#      3
#

#

# Great! Now you have a full forward propagation that takes the input X and outputs a row vector $A^{[L]}$ containing your predictions. It also records all intermediate values in "caches". Using $A^{[L]}$, you can compute the cost of your predictions.

# ## 5 - Cost function
#
# Now you will implement forward and backward propagation. You need to compute the cost, because you want to check if your model is actually learning.
#
# **Exercise**: Compute the cross-entropy cost $J$, using the following formula: $$-\frac{1}{m} \sum\limits_{i = 1}^{m} (y^{(i)}\log\left(a^{[L] (i)}\right) + (1-y^{(i)})\log\left(1- a^{[L](i)}\right)) \tag{7}$$
#

# In[45]:

# GRADED FUNCTION: compute_cost

def compute_cost(AL, Y):
    """
    Implement the cost function defined by equation (7).

    Arguments:
    AL -- probability vector corresponding to your label predictions, shape (1, number of examples)
    Y -- true "label" vector (for example: containing 0 if non-cat, 1 if cat), shape (1, number of examples)

    Returns:
    cost -- cross-entropy cost
    """

    m = Y.shape[1]

    # Compute loss from aL and y.
    ### START CODE HERE ### (≈ 1 lines of code)
    cost = -1/m *(np.sum(Y * np.log(AL) + (1 - Y) * np.log(1 - AL)))
    ### END CODE HERE ###

    cost = np.squeeze(cost)      # To make sure your cost's shape is what we expect (e.g. this turns [[17]] into 17).
    assert(cost.shape == ())

    return cost

# In[46]:

Y, AL = compute_cost_test_case()

print("cost = " + str(compute_cost(AL, Y)))

# **Expected Output**:
#
#

#
#

#     **cost**
#      0.41493159961539694
#

#

# ## 6 - Backward propagation module
#
# Just like with forward propagation, you will implement helper functions for backpropagation. Remember that back propagation is used to calculate the gradient of the loss function with respect to the parameters.
#
# **Reminder**:
#
#
 **Figure 3** : Forward and Backward propagation for *LINEAR->RELU->LINEAR->SIGMOID*
 *The purple blocks represent the forward propagation, and the red blocks represent the backward propagation.*

#
#
#
# Now, similar to forward propagation, you are going to build the backward propagation in three steps:
# - LINEAR backward
# - LINEAR -> ACTIVATION backward where ACTIVATION computes the derivative of either the ReLU or sigmoid activation
# - [LINEAR -> RELU] $\times$ (L-1) -> LINEAR -> SIGMOID backward (whole model)

# ### 6.1 - Linear backward
#
# For layer $l$, the linear part is: $Z^{[l]} = W^{[l]} A^{[l-1]} + b^{[l]}$ (followed by an activation).
#
# Suppose you have already calculated the derivative $dZ^{[l]} = \frac{\partial \mathcal{L} }{\partial Z^{[l]}}$. You want to get $(dW^{[l]}, db^{[l]} dA^{[l-1]})$.
#
#
#
 **Figure 4**

#
# The three outputs $(dW^{[l]}, db^{[l]}, dA^{[l]})$ are computed using the input $dZ^{[l]}$.Here are the formulas you need:
# $$ dW^{[l]} = \frac{\partial \mathcal{L} }{\partial W^{[l]}} = \frac{1}{m} dZ^{[l]} A^{[l-1] T} \tag{8}$$
# $$ db^{[l]} = \frac{\partial \mathcal{L} }{\partial b^{[l]}} = \frac{1}{m} \sum_{i = 1}^{m} dZ^{[l](i)}\tag{9}$$
# $$ dA^{[l-1]} = \frac{\partial \mathcal{L} }{\partial A^{[l-1]}} = W^{[l] T} dZ^{[l]} \tag{10}$$
#

# **Exercise**: Use the 3 formulas above to implement linear_backward().

# In[195]:

# GRADED FUNCTION: linear_backward

def linear_backward(dZ, cache):
    """
    Implement the linear portion of backward propagation for a single layer (layer l)

    Arguments:
    dZ -- Gradient of the cost with respect to the linear output (of current layer l)
    cache -- tuple of values (A_prev, W, b) coming from the forward propagation in the current layer

    Returns:
    dA_prev -- Gradient of the cost with respect to the activation (of the previous layer l-1), same shape as A_prev
    dW -- Gradient of the cost with respect to W (current layer l), same shape as W
    db -- Gradient of the cost with respect to b (current layer l), same shape as b
    """
    A_prev, W, b = cache
    m = A_prev.shape[1]

    ### START CODE HERE ### (≈ 3 lines of code)

    dW = 1/m * (np.dot(dZ, A_prev.T))
    db = 1/m * np.sum(dZ, axis=1, keepdims=True)

    dA_prev = np.dot(W.T, dZ)
    ### END CODE HERE ###

    assert (dA_prev.shape == A_prev.shape)
    assert (dW.shape == W.shape)
    assert (db.shape == b.shape)

    return dA_prev, dW, db

# In[196]:

# Set up some test inputs
dZ, linear_cache = linear_backward_test_case()

dA_prev, dW, db = linear_backward(dZ, linear_cache)
print ("dA_prev = " + str(dA_prev))
print ("dW = " + str(dW))
print ("db = " + str(db))

# **Expected Output**:
#
#

#

#      **dA_prev**
#      [[ 0.51822968 -0.19517421]
#  [-0.40506361  0.15255393]
#  [ 2.37496825 -0.89445391]]
#

#
#

#          **dW**
#          [[-0.10076895  1.40685096  1.64992505]]
#

#
#

#          **db**
#          [[ 0.50629448]]
#

#
#

#
#

# ### 6.2 - Linear-Activation backward
#
# Next, you will create a function that merges the two helper functions: **`linear_backward`** and the backward step for the activation **`linear_activation_backward`**.
#
# To help you implement `linear_activation_backward`, we provided two backward functions:
# - **`sigmoid_backward`**: Implements the backward propagation for SIGMOID unit. You can call it as follows:
#
# ```python
# dZ = sigmoid_backward(dA, activation_cache)
# ```
#
# - **`relu_backward`**: Implements the backward propagation for RELU unit. You can call it as follows:
#
# ```python
# dZ = relu_backward(dA, activation_cache)
# ```
#
# If $g(.)$ is the activation function,
# `sigmoid_backward` and `relu_backward` compute $$dZ^{[l]} = dA^{[l]} * g'(Z^{[l]}) \tag{11}$$.
#
# **Exercise**: Implement the backpropagation for the *LINEAR->ACTIVATION* layer.

# In[197]:

# GRADED FUNCTION: linear_activation_backward

def linear_activation_backward(dA, cache, activation):
    """
    Implement the backward propagation for the LINEAR->ACTIVATION layer.

    Arguments:
    dA -- post-activation gradient for current layer l
    cache -- tuple of values (linear_cache, activation_cache) we store for computing backward propagation efficiently
    activation -- the activation to be used in this layer, stored as a text string: "sigmoid" or "relu"

    Returns:
    dA_prev -- Gradient of the cost with respect to the activation (of the previous layer l-1), same shape as A_prev
    dW -- Gradient of the cost with respect to W (current layer l), same shape as W
    db -- Gradient of the cost with respect to b (current layer l), same shape as b
    """
    linear_cache, activation_cache = cache

    if activation == "relu":
        ### START CODE HERE ### (≈ 2 lines of code)
        dZ = relu_backward(dA, activation_cache)
        dA_prev, dW, db = linear_backward(dZ, linear_cache)
        ### END CODE HERE ###

    elif activation == "sigmoid":
        ### START CODE HERE ### (≈ 2 lines of code)
        dZ = sigmoid_backward(dA, activation_cache)
        dA_prev, dW, db = linear_backward(dZ, linear_cache)
        ### END CODE HERE ###

    return dA_prev, dW, db

# In[198]:

AL, linear_activation_cache = linear_activation_backward_test_case()

dA_prev, dW, db = linear_activation_backward(AL, linear_activation_cache, activation = "sigmoid")
print ("sigmoid:")
print ("dA_prev = "+ str(dA_prev))
print ("dW = " + str(dW))
print ("db = " + str(db) + "\n")

dA_prev, dW, db = linear_activation_backward(AL, linear_activation_cache, activation = "relu")
print ("relu:")
print ("dA_prev = "+ str(dA_prev))
print ("dW = " + str(dW))
print ("db = " + str(db))

# **Expected output with sigmoid:**
#
#

#

#      dA_prev
#            [[ 0.11017994  0.01105339]
#  [ 0.09466817  0.00949723]
#  [-0.05743092 -0.00576154]]
#
#

#
#

#      dW
#             [[ 0.10266786  0.09778551 -0.01968084]]
#

#
#

#      db
#             [[-0.05729622]]
#

#

#
#

# **Expected output with relu:**
#
#

#

#      dA_prev
#             [[ 0.44090989  0.        ]
#  [ 0.37883606  0.        ]
#  [-0.2298228   0.        ]]
#
#

#
#

#      dW
#             [[ 0.44513824  0.37371418 -0.10478989]]
#

#
#

#      db
#             [[-0.20837892]]
#

#

#
#

# ### 6.3 - L-Model Backward
#
# Now you will implement the backward function for the whole network. Recall that when you implemented the `L_model_forward` function, at each iteration, you stored a cache which contains (X,W,b, and z). In the back propagation module, you will use those variables to compute the gradients. Therefore, in the `L_model_backward` function, you will iterate through all the hidden layers backward, starting from layer $L$. On each step, you will use the cached values for layer $l$ to backpropagate through layer $l$. Figure 5 below shows the backward pass.
#
#
#
#
  **Figure 5** : Backward pass

#
# ** Initializing backpropagation**:
# To backpropagate through this network, we know that the output is,
# $A^{[L]} = \sigma(Z^{[L]})$. Your code thus needs to compute `dAL` $= \frac{\partial \mathcal{L}}{\partial A^{[L]}}$.
# To do so, use this formula (derived using calculus which you don't need in-depth knowledge of):
# ```python
# dAL = - (np.divide(Y, AL) - np.divide(1 - Y, 1 - AL)) # derivative of cost with respect to AL
# ```
#
# You can then use this post-activation gradient `dAL` to keep going backward. As seen in Figure 5, you can now feed in `dAL` into the LINEAR->SIGMOID backward function you implemented (which will use the cached values stored by the L_model_forward function). After that, you will have to use a `for` loop to iterate through all the other layers using the LINEAR->RELU backward function. You should store each dA, dW, and db in the grads dictionary. To do so, use this formula :
#
# $$grads["dW" + str(l)] = dW^{[l]}\tag{15} $$
#
# For example, for $l=3$ this would store $dW^{[l]}$ in `grads["dW3"]`.
#
# **Exercise**: Implement backpropagation for the *[LINEAR->RELU] $\times$ (L-1) -> LINEAR -> SIGMOID* model.

# In[193]:

# GRADED FUNCTION: L_model_backward

def L_model_backward(AL, Y, caches):
    """
    Implement the backward propagation for the [LINEAR->RELU] * (L-1) -> LINEAR -> SIGMOID group

    Arguments:
    AL -- probability vector, output of the forward propagation (L_model_forward())
    Y -- true "label" vector (containing 0 if non-cat, 1 if cat)
    caches -- list of caches containing:
                every cache of linear_activation_forward() with "relu" (it's caches[l], for l in range(L-1) i.e l = 0...L-2)
                the cache of linear_activation_forward() with "sigmoid" (it's caches[L-1])

    Returns:
    grads -- A dictionary with the gradients
             grads["dA" + str(l)] = ...
             grads["dW" + str(l)] = ...
             grads["db" + str(l)] = ...
    """
    grads = {}
    L = len(caches) # the number of layers
    m = AL.shape[1]
    Y = Y.reshape(AL.shape) # after this line, Y is the same shape as AL

    # Initializing the backpropagation
    ### START CODE HERE ### (1 line of code)
    dAL = - (np.divide(Y, AL) - np.divide(1 - Y, 1 - AL))
    ### END CODE HERE ###

    # Lth layer (SIGMOID -> LINEAR) gradients. Inputs: "AL, Y, caches". Outputs: "grads["dAL"], grads["dWL"], grads["dbL"]
    ### START CODE HERE ### (approx. 2 lines)
    current_cache = caches[L-1]
    grads["dA" + str(L)], grads["dW" + str(L)], grads["db" + str(L)] = linear_activation_backward(dAL, current_cache, "sigmoid")
    ### END CODE HERE ###

    for l in reversed(range(L-1)):
        # lth layer: (RELU -> LINEAR) gradients.
        # Inputs: "grads["dA" + str(l + 2)], caches". Outputs: "grads["dA" + str(l + 1)] , grads["dW" + str(l + 1)] , grads["db" + str(l + 1)]
        ### START CODE HERE ### (approx. 5 lines)
        current_cache = caches[l]
        dA_prev_temp, dW_temp, db_temp = linear_activation_backward(grads["dA" + str(l+2)], current_cache, "relu")
        grads["dA" + str(l + 1)] = dA_prev_temp
        grads["dW" + str(l + 1)] = dW_temp
        grads["db" + str(l + 1)] = db_temp
        ### END CODE HERE ###

    return grads

# In[194]:

AL, Y_assess, caches = L_model_backward_test_case()
grads = L_model_backward(AL, Y_assess, caches)
print_grads(grads)

# **Expected Output**
#
#

#
#

#      dW1
#             [[ 0.41010002  0.07807203  0.13798444  0.10502167]
#  [ 0.          0.          0.          0.        ]
#  [ 0.05283652  0.01005865  0.01777766  0.0135308 ]]
#

#
#

#      db1
#             [[-0.22007063]
#  [ 0.        ]
#  [-0.02835349]]
#

#
#

#    dA1
#             [[ 0.12913162 -0.44014127]
#  [-0.14175655  0.48317296]
#  [ 0.01663708 -0.05670698]]
#
#

#

#
#

# ### 6.4 - Update Parameters
#
# In this section you will update the parameters of the model, using gradient descent:
#
# $$ W^{[l]} = W^{[l]} - \alpha \text{ } dW^{[l]} \tag{16}$$
# $$ b^{[l]} = b^{[l]} - \alpha \text{ } db^{[l]} \tag{17}$$
#
# where $\alpha$ is the learning rate. After computing the updated parameters, store them in the parameters dictionary.

# **Exercise**: Implement `update_parameters()` to update your parameters using gradient descent.
#
# **Instructions**:
# Update parameters using gradient descent on every $W^{[l]}$ and $b^{[l]}$ for $l = 1, 2, ..., L$.
#

# In[187]:

# GRADED FUNCTION: update_parameters

def update_parameters(parameters, grads, learning_rate):
    """
    Update parameters using gradient descent

    Arguments:
    parameters -- python dictionary containing your parameters
    grads -- python dictionary containing your gradients, output of L_model_backward

    Returns:
    parameters -- python dictionary containing your updated parameters
                  parameters["W" + str(l)] = ...
                  parameters["b" + str(l)] = ...
    """

    L = len(parameters) // 2 # number of layers in the neural network

    # Update rule for each parameter. Use a for loop.
    ### START CODE HERE ### (≈ 3 lines of code)
    for l in range(L):
        parameters["W" + str(l+1)] = parameters["W" + str(l+1)] - learning_rate * grads["dW" + str(l+1)]
        parameters["b" + str(l+1)] = parameters["b" + str(l+1)] - learning_rate * grads["db" + str(l+1)]
    ### END CODE HERE ###
    return parameters

# In[188]:

parameters, grads = update_parameters_test_case()
parameters = update_parameters(parameters, grads, 0.1)

print ("W1 = "+ str(parameters["W1"]))
print ("b1 = "+ str(parameters["b1"]))
print ("W2 = "+ str(parameters["W2"]))
print ("b2 = "+ str(parameters["b2"]))

# **Expected Output**:
#
#

#

#      W1
#             [[-0.59562069 -0.09991781 -2.14584584  1.82662008]
#  [-1.76569676 -0.80627147  0.51115557 -1.18258802]
#  [-1.0535704  -0.86128581  0.68284052  2.20374577]]
#

#
#

#      b1
#             [[-0.04659241]
#  [-1.28888275]
#  [ 0.53405496]]
#

#

#      W2
#             [[-0.55569196  0.0354055   1.32964895]]
#

#
#

#      b2
#             [[-0.84610769]]
#

#

#

#
# ## 7 - Conclusion
#
# Congrats on implementing all the functions required for building a deep neural network!
#
# We know it was a long assignment but going forward it will only get better. The next part of the assignment is easier.
#
# In the next assignment you will put all these together to build two models:
# - A two-layer neural network
# - An L-layer neural network
#
# You will in fact use these models to classify cat vs non-cat images!

# In[ ]:


BASHandSLASH.com did a great two part cast breaking down what COD:BO might or might not be all about along with a live viewing of the official COD:BO teaser and then they continue the discussion on COD:BO. Treyarch Community Manager Josh Olin (AKA JD_2020) also makes an appearance on the show and shares a few words. A great listen that will build your excitement even more if you are already getting excited about COD:BO!
Props to the B&S team as this is another stellar cast with a great group of guys.


Image Title: Amazing How To Choose And Lay A Stair Runner An Overview Caroline On Design Throughout Carpet Runners For Stairs Attractive. Filename: amazing-how-to-choose-and-lay-a-stair-runner-an-overview-caroline-on-design-throughout-carpet-runners-for-stairs-attractive.jpg. Image Dimension: 795 x 790 pixels. Images Format: jpg/jpeg. Publisher/Author: Colten Rempel. Uploaded Date: Sunday - February 03rd. 2019 02:46:39 AM. Category: Home Design. Image Source: dornob.com.
Tap The Thumbnail Bellow to See Related Gallery of "Amazing How To Choose And Lay A Stair Runner An Overview Caroline On Design Throughout Carpet Runners For Stairs Attractive"


OpenPort has initially focused on solving the logistics issues of emerging markets in Asia – the ultimate proving ground for our technology. The consumer class in emerging markets is growing at an unprecedented pace – the retail markets where we operate are worth over 6 trillion USD, and are projected to grow twice as fast as developed economies over the next 20 years.
Demographic and GDP growth combined with the opening of new sales channels creates logistics challenges, as most basic goods are manufactured and distributed domestically. The capacity of current supply chain infrastructure and supply of transport assets is often exceeded, causing logistics costs to rise faster than new sales, an unsustainable trend.
We estimate the current outsourced spend on trucking in Asia is over 143 billion USD per year, spent in a manual process on transport providers and sub-contracted to asset owners, and reliant on paper-based proof of delivery for both the invoicing and payment between retailers, brand owners (shippers) and transporters.
We believe most deliveries to distributors and retailers in Asia are negatively impacted (delayed, disputed, short paid, or not settled) because of problems related to the paper process. Creating transparent and cost effective supply chains with visibility, tracking and digital records for emerging Asia is one of the greatest challenges in the modern global economy, and we believe the change we drive here will change logistics around the world.


text:
Aleksandr Vladimirovich Khokhlachyov (; born 8 May 1997) is a Russian football player who plays for FC Chayka Peschanokopskoye.

Club career
He made his debut in the Russian Professional Football League for FC Chayka Peschanokopskoye on 28 July 2016 in a game against FC Biolog-Novokubansk. He made his Russian Football National League debut for Chayka on 7 July 2019 in a game against FC Chertanovo Moscow.

References

External links
 Profile by Russian Professional Football League

1997 births
Sportspeople from Rostov-on-Don
Living people
Russian footballers
Association football forwards
Russian First League players
Russian Second League players
FC Chayka Peschanokopskoye players

redpajama_set_name: RedPajamaWikipedia


text:
New doubts emerge in Grace Tsengs record resume
Pintér László
It looks like the Taiwanese recordseeker did not reach the summit of Kangchenjunga, which she claims to have done in 2021, as the first female climber to do so in the autumn season.
Tseng Ko-Erh, aka Grace Tseng belongs to a new breed of high altitude extreme tourists. They are highly publicized 'climbers' in the media you've never heard of in the climbing community, and then suddenly, out of the blue, they start to shatter mountaineering records without any sort of climbing background or mountaineering knowledge, by simply buying the full assistance package of commercial expedition agencies: guides, supplemental oxygen, fully prepared camps and fixed ropes. They are absolutely dependent on these services, without them they would never be able to summit any 8000er.
Tseng Ko-Erh aka Grace Tseng
New doubts emerge in Grace Tsengs record resume-15
Source: Grace Tseng Facebook
Since appearing on the scene, Ms Tseng has made headlines with different climbing records, which seem to be her main motive to set foot on a mountain. She openly set out to be the youngest to climb all 14 8000ers, for which quest she now has serious competition, with other such 'climbers' entering the race. But she claims to be the first female to summit Kangchenjunga in autumn, the youngest female to summit Annapurna without supplemental oxygen, the first Taiwanese to climb K2, the youngest female to climb K2 without oxygen, the youngest female to climb the five highest mountains on Earth, the list goes on. She claims to have climbed 12 of the 14 8000ers, starting with Manaslu's foresummit in September 2019. Her ridiculously filtered summit photos raised many eyebrows, but together with her summit videos all seem to be legit. For the first blick. But, if you look a little closer, some details catch your attention.
Manaslu Speed Ascent
However, nobody really doubted her achievements outside of Taiwan until she announced something too big. A 13-hour speed record on 8163 meter Manaslu in October 2022, without oxygen, with the same time as the male fastest known time set by the ski mountaineering champion and one of the strongest alpinists of his generation, the Italian Francois Cazzanelli. Nobody in the climbing community believed it. Now it was time to look a little closer.
Along with a few foreign journalists we started a parallel investigation. I have asked her a myriad of questions, first publicly, then privately. I was trying to figure out the conditions of the climb, answers to the contradictions of the circumstances, and most importantly, her athletic capacity. She answered many questions, but avoided giving any specific data on her training or endurance capacity, giving only general answers. She could not even tell her VO2 max – she did not seem to even know what that is. She insisted that her previous four 8000ers in Pakistan (which she claims to have climbed without supplemental oxygen) climbed in July had given her so good acclimatization that it enabled her to climb that fast. But 274 meters/hour climbing rate without oxygen at almost 8000 meters from a non-athlete with no endurance past is an incredible number, especially considering that in the previous hours of her climb the climbing rate already fell way below 200 meters/hour. Many people questioned the originality of her provided evidence, her summit photos and videos, and even her GPS track. Since they were the last team on the mountain, there are no witnesses, except for her three Sherpa guides who were hired and paid by her. They even signed a statement to back up her claim of having climbed without oxygen and in 13 hours from base camp to summit. On her part, she considers the case closed, having provided evidence, and threatens to sue anyone who publicly questions the originality of these proofs and hurt her reputation.
So far my conclusion is, that the provided evidence and answers are not satisfactory to justify her speed record claim, and the provided GPS track shows an oxygen assisted climber's movement (note: she was accompanied by three Sherpas on oxygen).
But that analysis should be the topic of another article.
Kangchenjunga - summit or no summit?
While the investigation about Manaslu is still ongoing to find out how she did it, my attention turned to her previous 8000er claims, and I started with the autumn climb of 8586 meter Kangchenjunga. While recently talking to my good friend Kris Annapurna, who is a great chronicler of alpinism and avid follower of 8000er seasons, we found out that she had been also investigating Kangchenjunga. We have shared our personal observations with each other, and we have reached the same conclusion that we describe below, which confirms the doubts we had about this ascent.
In October 2021 Grace Tseng announced that she and her four Sherpa guides have summited 8586 meter Kangchenjunga, using supplemental oxygen. No female climber has ever scaled the mountain in autumn, and no other person has succeeded in the autumn season for 17 years. That is a bold feat on a very difficult mountain.
However, after many hours of exhaustively analyzing the photos, videos and their climbing timeline, our conclusion was that they did not reach the summit of Kangchenjunga on October 16, 2021. Rather, everything indicates that they were diverted to the left of the route, and stopped on the ridge, way below the main summit.
What caught our attention was that none of their summit photos or videos showed a broad panorama from the summit, even though the weather was excellent. If there is a summit which offers spectacular views, it is Kangchenjunga. From the summit of Kangchenjunga you've got one of the most stunning 360-degree panoramas. If you scroll through other Kangchenjunga summit photos and videos from the past, made in good weather conditions, they all show you breathtaking views. There are even some climbers who write the names of the visible peaks for the audience. How could Ms Tseng miss this opportunity?
I asked her to provide GPS tracks to all her previous 8000er climbs, which she denied, saying it contained her private information, so it wasn't convenient for her to disclose them. So we had to rely on the photo and video material, and their own description in various social media posts.
With their summit photos at an unrecognizable place, and Ms Tseng's later posted summit video not showing the usual Kangchenjunga vistas, we tried to get answers to our suspicion.
Grace Tseng's Kangchenjunga 'summit' photo
Kangchenjunga autumn 2021 expedition timeline
In autumn 2021, a total of two different teams were at Kangchenjunga, both aiming for the normal route (southwest face), but not operating on the mountain at the same time.
On September 8, 2021, a team of 8 climbers, led by the Ecuadorian Esteban "Topo" Mena, arrived at base camp. The party included Carla Perez, client Jan William Werner, and five Sherpas: Dorje Sonam Sherpa, Mingma Tshering Sherpa, Palden Namgye Sherpa, Pasang Sona Sherpa, and Pemba Gelje Sherpa. On this date and until their expedition lasted, this group was alone on the mountain. They did not summit, and the highest point they reached was at 7,430 m (their Camp 4), on September 18, 2021.
According to the Himalayan Database, Topo's group reported that the conditions on the mountain were difficult. It was too warm during the day and even during the night. Avalanche risk was moderate. It snowed a few times, during the time they were there. The snow never consolidated properly as the temperature was too warm. They used supplemental oxygen from 7,000 m to 7,430 m. They fixed ropes all the way from Base Camp (5,200 m) to Camp 4. They left the fixed ropes on the mountain for the Nepali Nima Gyalzen from Dolma Outdoor Expeditions, and Grace Tseng, his client, from Taiwan, who came in after, according to their report. When they cleared Camp 3 after the expedition, there was a big avalanche between Camp 3 and Camp 4. Due to a serious family matter involving Werner, he had to return home immediately, so Topo Mena's group ended the expedition. Mena's group left Base Camp on October 11, 2021.
Tseng and her Sherpas arrive
Under the 'leadership' of Grace Tseng, the group arrived at Kangchenjunga Base Camp on October 8, 2021. Earlier, they summited Dhaulagiri I, with a brief stop in a nearby town, from where they took a helicopter to reach Kangchenjunga Base Camp, when Topo's group was already packing up their base camp to leave the mountain.
Ms Tseng's group consisted of:
Grace Tseng as 'leader', Nima Gyalzen Sherpa and Dakipa Sherpa from Dolma Outdoor Expedition (agency), and two other Sherpas, Gelje Sherpa (who is now a guide in Seven Summit Treks, and was previously guide in Elite Exped), and Pasang Rinzee Sherpa.
According to The Himalayan Database report, on October 15, 2021, Nima Gyalzen and Pasang Rinzee fixed the rope to 8,000 m. Gelje himself published on that day, that he had been fixing rope up to 8,050 m on October 15, near the couloirs. The Sherpas returned to Camp 4 (at 7,500 m) at about 3.30 PM, on October 15, 2021. Then they had a short rest, and at 5.45 pm PM on the same day, October 15, the team, together with Grace Tseng, started their summit push. Nima Gyalzen and Gelje went ahead to fix the route to the 'summit'. They claim to have reached the summit at 1 PM, on October 16, 2021. All team members used supplemental oxygen, according to them, from Camp 4 to summit and back to Camp 4. As Pasang Rinzee recounts on his Instagram, the descent from the (supposed) top took them more than 7 hours to reach Camp 4.
Pasang Rinzee Sherpa subsequently shared several videos on his Instagram, as well as photos of the ascent. According to his account, and as we can also see in the report they sent to The Himalayan Database, their summit push from Camp 4 to the (supposed) summit lasted 19 hours and 15 minutes, which is a lot. Properly, Grace Tseng also shared videos and photos soon after on her social networks, in one of them she commented: "seeking the summit". But had they really found it?
A very long summit push
The average duration of the Kangchenjunga summit push from Camp 4 (depending on terrain and weather) is approximately 10 to 14 hours. This means that 19 hours with three people already possibly exhausted from the previous day (fixers up to 8,050 m) and probably due to insufficient oxygen bottles, could have made it unfeasible to continue progressing towards the summit. When Mingma G and his team were trying to summit Kangchenjunga on a recent expedition, they had to turn around on their first summit push from 8,400 m, because it was too late to continue towards the summit.
Kangchenjunga is a mountain whose final section is extremely exhausting. Several climbers have already told it during the climbing history of this mountain, that the higher you climb, the more difficult it is, and the last section of rock climbing is more demanding, where the ropes often break.
Difficult route finding
As their videos posted on social media, the team apparently deviated to the left of the normal route above camp 4, and they were climbing towards a huge, diamond-shaped boulder, a clearly visible feature even from afar, on the left side of the couloir. This area is called the Pinnacles. By now they already came off of the normal route. In a video posted by Pasang Rinzee you can see a very slow moving Tseng who needs help to advance, and looks visibly very tired.
Click on the picture to go to Pasang Rinzee's video
Source: Pasang Rinzee Instagram
To reach the summit from here would have taken hours. They would have needed to get down to the saddle before the summit then join the normal route and the long traverse to go around the summit pyramid. Being on the summit push for 19 hours, with oxygen running out, having missed the route, and also late in the day, with a difficult descent ahead, this would have been way too risky.
The summit portraits and the video of the quartet standing on a snow ridge, presumably purposely filmed from a below angle, are useless to prove they were on the summit.
Gelje Sherpa's Kangchenjunga 'summit' photo
Source: Gelje Sherpa Instagram
Grace Tseng and Dolma group Kangchenjunga 'summit' photo
However, there is one video and one photo that helps to orientate the group's position. The summit video of Ms Tseng, which contains a selfie, then shows a very narrow angled panorama gives us the necessary hint, with recognizable features and mountains in the background. In this video she takes out the Taiwanese flag, behind her is one of the Sherpas walking up to a higher point, supposedly their summit, but it is not the summit of Kangchenjunga.
Screenshot from Grace Tseng's summit selfie video. Click on the picture to see the full video!
While the selfie mode always shows the reversed angle (like a mirror), we need to horizontally reverse the photo to get the original view and direction. This is the reversed angle with the real view, with Yalung Kang in the background. Sherpa walking up to a place that is not the summit:
Grace Tseng's Summit Selfie Video Screenshot Reversed Angle
If you look carefully, in the reflection of her sunglasses, you can see a snow bump that looks very much like the one they are standing in front of on their solo summit portraits:
Is that the 'summit' snowbump in her sunglasses?
This is what she saw from the place where her summit video was recorded. From the main summit, a larger part of the ridge between Jannu and Yalung Kang should be visible:
Grace Tseng's summit video view looking west to Jannu and Yalung Kang
Her panorama photo looking south that she posted on Facebook clearly shows a view that is not possible to see from the summit. That lower part of the South Ridge (centre of picture) is not visible from the summit:
Summit panorama, showing parts of the south ridge that is not visible from the summit
This is what you should see looking south if you stand on the summit of Kangchenjunga (Screenshots from Giripremi's Youtube video):
Kangchenjunga Summit View South
Looking downwards from just below the summit, the view is like this (Screenshot from this video)
Looking downwards in a southerly direction from just below the summit of Kangchenjunga
I tried to get a confirmation from Ms Tseng whether her photos and videos were all made at the same place, just looking in different directions, but she did not answer. Afterwards I was blocked from her public Facebook page.
Comparing the provided photo and video evidence with other climbers' summit photos and videos, Grace Tseng and her team did not reach the main summit of Kangchenjunga on October 16 2021. They took their summit photos and videos west from the summit, above the Pinnacles area, at an approximate height of 8480 meters. In perfect weather conditions it is unimaginable that they would not have shot a panorama that shows the northern and eastern view from the mountain. This is what they would see from the summit to the North and East:
Looking northwest from the summit of Kangchenjunga
Looking northeast from the summit of Kangchenjunga
Where were they then?
Short answer: Somewhere there, see yellow dot (screenshot from this video):
Kangchenjunga summit with the Pinnacles
That huge, diamond-shaped boulder is visible in their videos. Rodolphe Popier, analyst for 8000ers.com, made these graphics, to better understand the position of the Pinnacles area, and its distance from the summit. Take the diamond-shaped boulder (Nr. 9) for reference:
Climbing up to the Pinnacles
Source: 8000ers.com Rodolphe Popier
Kangchenjunga Pinnacles area on aerial shot
Kangchenjunga Pinnacles area on satellite shot
Normal route with red dots, GT showing Tseng's route through the Pinnacles
After many hours that we have dedicated to this study, both me, and Kris Annapurna on her part, in a long conversation we realized that we had the same observations. Before publishing our conclusion, I shared our doubts with my good friend, the renowned chronist Eberhard Jurgalski from 8000ers.com who informed us that they had already been working parallel on the Kangchenjunga case, even for a longer period than us.
They confirmed our findings. A few days later they completed their detailed research report, which has already been shared with The Himalayan Database to revoke the Kangchenjunga summit claim of Grace Tseng and the four Sherpas. The report will be published on 8000ers.com soon, and we will update this article with a link to it as soon as it comes out. Ms Tseng's other 8000er claims will also be investigated.
Since the accompanying Sherpas also reached records with their Kangchenjunga claim, those will also be revised.
The involvement of the expedition agency cannot be overlooked, which makes the whole situation even more delicate, and raises the question: how common is this phenomenon?
Who we are and why we do this
Mozgásvilág is Hungary's premier online outdoor magazine. Our primary aim is to inspire people through great stories. However, all of those great stories must be true. We cannot keep our eyes closed when we clearly see which means mountaineering records are re-written with. We don't intend to harm anybody's reputation but are keen to speak out for fairness and climbing's integrity.
Once reserved to the very top of elite mountaineers, high altitude climbing has become a playground of almost anybody with an above-average fitness level, using the commercial expeditions' full service package. Exactly because of this available commercial expedition assistance, today's 8000ers summits are way overrated. Yet these guided 'climbers' compete for the same accolades, they get on the same lists as real mountaineers. A real mountaineer doesn't need a guide.
Being a non-regulated sport, high altitude climbing is a goldmine for fame- and record seekers who simply exploit the sport to sell paid-for achievements to the general public who cannot differentiate. 'Record' and 'first' are the most important words to get sponsors. Although there are no rules, there are ethics within the climbing community. Being honest has always been the paramount rule, but of course it has happened many times in the past that claims turned out to be false.
There are several great climbers who have achieved many great feats in the world of 8000ers, sometimes paying with their own life for their visionary dreams. Those climbers deserve to be challenged by real mountaineers and honest achievements.
In today's social media machinery it is ever harder to judge the credibility of these types of claims. It is our responsibility whether we want to keep these ethics. The work of institutions like 8000ers.com and The Himalayan Database have never been so important than now. The bad news is that besides Ms Tseng's false Kangchenjunga summit claim there are several other suspicious climbers' announcements. This case is only the tip of the iceberg.
Ms Tseng is already preparing for a speed record on Everest next spring.
Hereby I would like to thank Kris Annapurna for the great cooperation. Without her contribution this article could not have been written. I am also grateful for the friendship of Eberhard Jurgalski and his painstaking efforts to keep climbing records' integrity.
You can comment on this article here.
Mi az a dinamikus árképzés?
Magyar sípálya fejlesztések 2023-ban
A kerékpáros vándor, akit sem a COVID, sem a börtön nem állíthatta meg útjai során
Automata raktárral és kerékgyártó gépekkel bővül a Neuzer Kerékpár Kft.
Síelés és wellness - kettő az egyben!
Chamonix sípályák
Porhó sorsolás
Csillagos égbolt Semmeringen
Öt szlovén síközpont közös síbérlettel rukkolt elő!
Nassfeld, Karintia legnagyobb és legnaposabb síterepe

redpajama_set_name: RedPajamaCommonCrawl


text:
Check it out, Colonial Report from the Dominion of Canada
Have Yourself a Merry Black Christmas
Black Christmas
Greg Klymkiw's Colonial Report (on cinema) from the Dominion of Canada
Bob Clark, an American director who wisely moved to Canada and became a landed immigrant during the tax shelter period of the 70s and 80s, made some of the most successful and groundbreaking Canadian films. In addition to the Oscar-nominated Tribute and the acclaimed Holmes (Christopher Plummer) and Watson (James Mason) vs. Jack the Ripper thriller Murder by Decree, Clark's two other Canadian films are notable for kickstarting the teen sex comedy genre (Porky's) and the modern slasher film (Black Christmas).
Black Christmas (1974) was not only a huge hit at the box-office, but has become renowned for its alternately creepy and jolting scares, its originality in terms of both direction and writing, and the piquant black humour which drives the movie into territory well beyond strict genre parameters. Plus, there's a perversely indigenous Canadian quality to it which places it in a realm that yields a movie that's just enough off the beaten track to make it feel wholly prototypical to the genre, but also marks it as a very special example of Canada's genuinely important place in the creation of contemporary genre cinema.
Black Christmas Season's Grievings Edition
Blu-ray + DVD (A/1)
Anchor Bay Entertainment Canada
To celebrate its 40th anniversary, Anchor Bay Entertainment Canada has recently honoured Black Christmas with an exclusive, all-new, fully restored Blu-ray and DVD 'Season's Grievings' edition that offers a gorgeous transfer and a Criterion Collection-worthy set of fascinating, amusing and informative added value features which feel very much like an 'Everything You always Wanted to Know about Black Christmas* (*But Were Afraid to Ask)' compendium in the spirit of the famed Dr. R. Reuben tome of fleshly love.
I recently had the opportunity to meet with three legendary Canadian cast members together in an Anchor Bay Canada boardroom in the St. Lawrence Market area of downtown Toronto. All three represent Canadian thespian gymnastics at their loftiest, but also had important roles in nailing the utter originality of the movie. Lynne Griffin, a renowned stage actress, kids TV personality and veteran of Canadian cinema was the iconic image of sheer terror on all ads, posters and home video packaging of the picture thanks to her extremely unique role in Black Christmas.
Nick Mancuso, the veteran film and television actor, who first burst onto the scene with his astonishing performance as the victim of a dangerous religious cult in Ticket to Heaven provided the sickening, horrifying and definitely iconic voice of Billy, the foul Yuletide serial killer of Black Christmas who is only heard during his numerous obscene phone calls.
The Holy Spirit of this thespian trinity is none other than Doug McGrath, one of Canada's most beloved actors, first the star of iconic Canuck classics like Goin' Down the Road, Wedding in White and The Hard Part Begins, then for many years one of Clint Eastwood's favourite character actors in such great pictures as Pale Rider and Bronco Billy. In Black Christmas, he is the comic relief (along with Margot Kidder and Marian Waldman). Resembling a cross between Buster Keaton and Don Knotts' 'Barney Fife' in The Andy Griffith Show, McGrath plays John Saxon's thick-headedly inept desk sergeant, ill equipped to handle the wave of murders, assaults and disappearances plaguing the town in Black Christmas.
Here then is our lovely chat, which, frankly, could have lasted the whole afternoon, but sadly did not.
Greg Klymkiw: So Lynne, I'm sure this must be one of the more ubiquitous queries you get as an actress, but when your character, the sweet virginal sorority sister Clare Harrison in Black Christmas is forcibly enveloped in a plastic see-through cold-storage bag and suffocated to death by the psychopath Billy, it's not only a jaw-dropping horror set piece, but one of the most terrifying moments in screen history. I can't help but think how utterly horrifying it was to perform, even with all of the requisite safety measures in place. That surely couldn't have been the safest stunt to perform.
Lynne Griffin: Well, we didn't really have any safety measures, but god bless them, it was a risk worth taking for all the reasons you cited, but I was always front and centre in the posters, ads and every DVD cover.
Nothing more fetching than a sexy young lady with her mouth agape, enshrouded in plastic with a look of sheer terror etched into her face by rigour mortis.
Thank you for that lovely compliment [laughs]. And yes, as ubiquitous as I became on all the advertising material, so too are the discussions I've had about that scene. If that becomes my legacy, I'm delighted. Even when I go to horror conventions, I make sure to bring plastic bags with me for photo-ops.
Damn, I wish I'd brought one with me today.
The thought had occurred to me to bring one also. I'm still quite able to demonstrate my prowess under plastic.
I imagine the actual suffocation, with all the movement involved might have been somewhat simpler and safer to garner the required effect, but for the rest of the film, we keep visiting your lifeless body sitting rigidly in that creepy rocking chair in the attic. I suspect those shots must have been a killer, so to speak, to maintain the death grimace.
Even when we were shooting, it helped matters that I was an excellent swimmer and able to hold my breath for long periods of time. However, even if they poked air holes in the plastic to allow for subtle breath intake, there'd still be movement and, worst of all, the condensation would spoil the effectiveness of the shots, so to avoid this, it became a huge challenge. We finally agreed that I'd keep my eyes open and hold my breath completely. As a swimmer, I could hold my breath for the entire length of the pool.
Yeah, so you're not sucking plastic down your throat.
Doug McGrath: That'd be a sure sign your corpse is trying to breathe.
[Mega-laughs all round. McGrath proves that even without cameras rolling he's a master of the straight face and deadpan delivery.]
Lynne Griffin: There's that one take in particular where I'm sitting there lifelessly for what seems like an eternity and when I looked at the new Anchor Bay Canada 'Season's Grievings' edition, it sadly occurred to me that for all these years I neglected to include 'playing dead' as a skill on my resume.
[More laughs all round. 'Special Skills' – even playing dead – can be the lifeblood (as it were) of any working actor's resume.]
With Black Christmas, Bob Clark really created a horror film which had a huge impact upon North American genre cinema. Clearly influenced by the Italian gialli – even one of your co-stars John Saxon had appeared in Mario Bava's The Girl Who Knew Too Much – his was the first picture on colonial soil to present the killer's POV, and it was such a huge hit that it was the film which inspired the entire slasher genre. One of the biggest differences, though, is that all the American films which followed Black Christmas utilised the creepy, twisted, moralistic story element wherein the ultimate heroine and survivor of the homicidal machinations of the slasher was always the virgin.
Not in Black Christmas.
My own virginal exposure to Black Christmas first-run was in a real movie theatre at a time when Canadian films actually played in movie theatres and sitting there, even at that age, I felt like I was seeing something different. The horror and suspense builds, but with a nice blend of genuine characters and a delightful sense of black humour, so that when your character is dispatched, it was, even then, utterly shocking to have such a nice person be so horribly decimated – and even more jaw-dropping, that Clare is the first person to die. Not to take away from any of the lovely surprises in Mr. Hitchcock's Psycho, but I suspect the shock of Marion Crane dying so early in the film was slightly, moralistically tempered by those scenes of Janet Leigh lollygagging about in her bra with the shirtless John Gavin and then embezzling all that money. But here, we have this sweet, virginal thing adorned in her modest sweater, her chaste relationship with the nice, young hockey player and her excitement over spending Christmas vacation with her mom and dad and yet, she's the first kill and one of the most shocking and brutal killings in screen history.
[Sounding like the character of Clare here:] It's unusual, isn't it?
What were your thoughts when you first read the screenplay?
I was working steadily at Stratford at the time and the idea of doing a horror film seemed like a nice breath of fresh air. Of course, Bob Clark was wonderful. He was so charming and delightful, he could easily sell you swamp land. He'd also assembled an amazing cast and I loved the idea of working with all of them – especially Olivia Hussey, because I really wanted to pick her brain about working with Franco Zefferelli in Romeo and Juliet.
Well, and I'm sure there might have been some burning queries about Leonard Whiting's pert, shapely bum?
There is that, I suppose.
And of course, when I first saw the ads with you wrapped in plastic, I have to admit, I initially thought it was Olivia Hussey under that huge Glad baggie.
That was a very common experience. Even now, I'll see one of those 'Where are they now?' write-ups for Olivia and they're actually talking about me. It's interesting that when I made many thrillers after Black Christmas, I was often cast as a victim. In [Charles Jarrot's] The Amateur [with Christopher Plummer and John Savage], I was one of the hostages and the first to be shot in the head.
[Laughs] Lucky me, allright. There are, however, many films where I lived to the last reel.
So, here you are, doing some of the greatest theatre in the world at Stratford, then as a nice change of pace, you're acting in one of the most notorious horror films of its day and subsequently all time, you're playing a virgin, you get knocked off horrifically and yet, one of my strongest memories of you as an actress is when you hosted this innocent CBC-TV after-school daily programme which was a kind of pre-teen Romper Room.
[Laughs] Yes, it was called Drop-in and I did it for five years and we did it live-to-air. So, at 4.30pm every afternoon we did this magazine-style show with comedy sketches and interviews.
Okay, so I'm not going crazy.
Not at all, that was me.
Nick Mancuso: And what healthy young lad at the time, didn't have a crush on you?
Tell me about it.
Lynne Griffin: Well, and this virginal quality Bob looked for in Black Christmas makes so much sense. To host those shows, you needed this sense of innocence, but it was also one which all the young fellas lusted after.
The Hayley Mills effect.
Oh, of course. Even now, when I still do the horror conventions, some forty years after, even these men, young and old, come up and they are, dare I say it, lust-filled and talk to me like I'm still this young, hot chick, and it's so flattering. But there is a lot to be said for this virginal quality. I played the virginal young thing so often, even though, I wasn't. Well, I was, of course, innocent.
I can accept that. [Then to Nick Mancuso] You've made so many great pictures, Nick, and that's ultimately a legacy worth accepting, but the fact remains that, as a young man, you attached yourself to the off-camera role of Billy who I think is still one of the – no, the creepiest slasher serial killers in the horror genre.
Nick Mancuso: You know, I've acted in over 250 films and TV series, three of my pictures are with the National Board of Review in Washington, and the role I'm best remembered for is the voice of Billy in Black Christmas.
[laughs] I don't know, Nick, Ticket to Heaven is the first major feature film to focus on the evils of religious cults and you're damn brilliant as the young guy who's sucked into the miasma of exploitation and then fucking de-programmed. It's harrowing, memorable and probably going to be your most enduring legacy.
Well thank you. You have to realise that when I did Black Christmas, I was nineteen-years-old when Bob Clark auditioned me and had me improvise a bunch of grotesque sounds for the obscene telephone calls. He hired me instantly and…
Gee whiz, tantalising Bob Clark so zealously in an audition to play a sicko is no slouch. Really, bud. In fact, that's no mean feat.
I knew I had to create this strange voice, so I stood on my head to compress my thorax. And you know, I wasn't the only voice in the mix; Bob Clark contributed growls and gurgles, plus on one occasion, an actress who was not credited, a stage actress whose name has I've forgotten, did some of the higher-pitched screams.
There are a number of sources which state that you appeared on camera as Billy.
No. Never. There is, however, one curious factotum. The producers couldn't afford to bring Keir Dullea back to Canada to do a few lines of ADR [Additional Dialogue Recording], so during the climactic scenes when Keir goes into the basement to find Olivia, I did his voice.
It's great that Bob Clark never felt the need to resurrect Billy, as so many of the American slasher films to follow did, and to keep the killer's identity ambiguous.
It's an original film on so many levels, but as you touched on earlier, the killer's POV was already a staple of European thrillers like Michael Powell's Peeping Tom from Britain – and, of course, everyone was in on it; the French, the Germans and especially the Italians.
Yes, Argento and Bava in particular.
For sure. The Italian influence on Black Christmas and horror films to follow was immense. Bob was a huge cinephile and Argento and all those other guys would have added to Bob's bag of tricks.
Though it's safe to say that Bob popularised and made the killer POV all his own in North American cinema.
I can't take that away from him, but [with tongue in cheek] once again, the Italians are the instigating factor in higher culture.
[Laughing] Well, you're certainly proof positive of that. In fact, speaking of Italians, your surname is identical to that of the legendary Frank Mancuso, CEO of Paramount and MGM, but weirdly I've seen you mixed up on less reliable online sources as Frank and vice-versa.
There's lots of strange stuff like that, especially after I'd wrapped on the Stingray series, I was hired to star as Rudy Giuliani in a series focusing on his pre-Mayoral days as New York's crime-busting D.A. and was paid a ridiculous amount of money for a show that eventually didn't even go to pilot. While waiting for that to not happen, Mancuso F.B.I went into production with Robert Loggia as 'Nick Mancuso'. I called Loggia up and he said in his trademark gravelly voice, 'Yeah, hey kid, I know. I love the name and thought it might do you some good.' I'm like, 'Yeah, right asshole!' Then the producer of the series said he'd go through all the scripts and change the name from Nick to Nico. I said, 'That is my name!' [Nick's full name is Nicodemo Antonio Massimo Mancuso – hence 'Nico', hence 'Nick'.] The asshole then told me to get a good lawyer. Ah man, the weird things that happened because of my name. There was a spa in L.A. I occasionally went to and I was very good friends with Frank Mancuso who went there also, but years later, I got a call from the spa wanting to confirm my booking for thirty people! And not just a mere booking. They wanted to confirm that I'd paid for thirty people in full. Thirty people! It turned out to be from Frank's son, Frank Mancuso Jr. This Mancuso link is so weird. There's apparently a new show with a detective called Nick Mancuso. So let them, I say. And screw them!
Here you are though, an actor known primarily as the voice of a foul-mouthed serial killer, when you have indeed been in a whole whack of films, and some of them like Ticket to Heaven and Maria Chapdelaine are not just classics of Canadian cinema, but great pictures – period!
None of them made money! Black Christmas DID and DOES, to this day, make money. Of course, we get nothing in residuals for it. [Lynne Griffin and Doug McGrath chime in with full concurrence.] But you know, Black Christmas is one of those films that lives well beyond that sort of thing and is indeed a very special picture for all of us. Aside from Bob Clark's masterful direction, a terrific cast, a well structured story and screenplay [written by Canadian A. Roy Moore], it's a film that really deals with the deep unconscious, aloneness, sexual lust and isolation experienced by so many young people. To this day, it's still that way. There's also the clear linkage between sex and violence. [In stuffy Brit sotto voce] Not to get too philosophical about it, dear boy, but as Aristotle said, the function and purpose of drama is catharsis… [and back to normal Mancuso timbre] Purgation! And of what? Pity, or compassion and terror. Terror is the frozen fear that lives in the deep unconscious of the community and the young characters in Black Christmas get to purge it on the screen. Of course, as one gets older, the linkage between fear and sex, or rather the fear of sex is abated by the sure-fire cure of marriage.
[Huge laughs all round.]
Well you know, Doug, it's very cool to speak with you about your participation in Black Christmas, which occurred several years after the first time – as a kid – that I encountered you on screen in Don Shebib's Goin' Down the Road. You know, when most Canadian movies actually played in real movie theatres.
Doug McGrath: At one time. A long time ago.
And you know, I pulled the movie pages from the newspaper archives from my hometown – Winnipeg! The ads were huge and the movie actually played for four weeks in one of the biggest movie theatres in my sleepy old prairie winter city. So here I am, ten or eleven-years-old, and I saw Shebib's picture on the opening weekend. In fact, I didn't even initially connect the dots that I was about to see a Canadian movie. I just went to see as many movies as I could. But as the picture unspooled, I became completely enraptured in the fact that something seemed so familiar in ways I'd never experienced at the movies before. It was Canadian and not only did I love the movie, but the feeling of experiencing something so Canadian. This was something I don't think I'll ever forget and it instilled in me, even back then, the importance of seeing movies that were Canadian. Of course, as a kid, I saw you in Wedding in White and The Hard Part Begins and a few years later, still a kid, I saw Black Christmas first-run. Of course, I noticed your name in the credits, along with a bunch of other Canadians and I was plenty excited. I loved movies, especially horror movies, and here I was about to see a Canadian horror movie. You, however, totally blew me away in that – at the time and even now – because amidst the carnage and chaos you're standing there like some bizarre cross between Buster Keaton and Barney Fife from The Andy Griffith Show, and I pretty much peed myself laughing. I think what's so great about your performance is your utterly straight face as this complete incompetent cop.
Yeah, I kind of fell into that performance because the writing is so strong.
How the hell did you keep a straight face when Margot Kidder gives you her telephone number with the new phone exchange 'Fellatio' and then having John Saxon and the other cop cracking up when they discover that you've been had?
[Chuckles] You know, that's maybe a kind of good question. I was feeling a kind of frustration.
You? Or the cop's frustration?
Well, both I think, and as I felt that double-edge frustration, I responded to the character as written and said to myself, 'Okay, let's go with this.' And in a strange way, the character was sort of close to myself, so I also chose to play it like myself. It's funny, I wasn't prepared for it and yet, the writing is so good I realised, once on the set with Margot and John Saxon, that I needed to go with the frustration. Sergeant Nash really wants to be a good cop, but he keeps having stuff thrown at him that he's not equipped to handle. And it's so funny that [the arc of] the character builds to that point when he's on the phone with John Saxon who tells him 'not to fuck things up' and maybe, for the first time, he realises he truly has. Yes, he is the comedy relief, but when I discovered that, I also knew that playing it straight was the right thing to do. It helped that Bob seldom said anything. He obviously was getting what he wanted and that's a great feeling for an actor. And then there's Margot Kidder, someone I had the deepest respect for. She's spelling out the word 'Fellatio' and part of me is reacting to Margot doing that and another part of me is reacting to it like I would react and, of course, as the Sergeant – as written – would react.
Nick Mancuso: Bob was always such a generous director. He'd always give you the space you needed to nail it just perfectly.
Doug McGrath: He was so great. Keep in mind, I'd just come off doing one heavy realistic film after another like Goin' Down the Road and The Hard Part Begins…
And lest we forget, the unrelentingly real and almost unbearably depressing Wedding in White where Carol Kane is forced into a shotgun marriage to an old man by her father Donald Pleasance after she's been raped and impregnated by your character.
Oh gosh, yes. So here I am in ultra-realistic mode and I'm playing a role that's supposed to be the comic relief in a scary horror film. I was so grateful to Bob that he let me find the realistic side to the bumbling desk sergeant. Actually, I worked with him soon after Black Christmas on Porky's. That's where Bob continued to use his faith in both, the shot and the actors within it, and also how he instinctively would just hold the shot. He'd hold and hold and never break up the natural rhythm of the scene.
[If you've seen Porky's, you'll know exactly the points in the film where McGrath has you rolling in the aisles – especially during some very long shots. If you haven't seen it, just do so. McGrath delivers one of the great comedy performances from the latter chunk of the last century, as does his Canadian co-star Kim Cattrall.]
And in Black Christmas there's the scene where you're trying to explain the Fellatio telephone exchange to John Saxon, this incredibly stalwart figure who, as part of his character, is supposed to be holding back his laughter and trying to keep a straight face while a cop in the background is howling with laughter as the scene plays out. And witnessing your character's utter straight-faced incredulity that there's something wrong with a phone exchange called 'Fellatio', I can't help thinking how hard it must have been for Saxon to stay in character and not cough up huge guffaws.
[With an ever-so slight touch of puckishness] Well, that may be so. Believe me, I kept my eyes on John for the whole scene.
Black Christmas is available in the all-new 'Season's Grievings' Blu-ray/DVD from Anchor Bay Entertainment Canada Ltd. If you're in the Dominion of Canada, it's available everywhere. If you're a foreigner, you'll need to order it as an import from Amazon. It's well worth it.
If you live in Toronto, you're going to be blessed with a screening of an archival 35mm print at the TIFF (Toronto International Film Festival) Bell Lightbox with a live appearance from Keir Dullea, and then again at The Royal Theatre in Toronto's Little Italy featuring live appearances by Lynne Griffin and Nick Mancuso. At this latter screening, packaging artist Ghoulish Gary Pullin will be unleashing his 'Season's Grievings' variant edition of the poster art. This gorgeous silk-screened poster, featuring metallic links, is limited to only 80 copies.
You can read Greg Klymkiw's review of Black Christmas on his website The Film Corner.
Do what all stalwart Canucks in the colonies do – celebrate the birth of Baby Jesus with Black Christmas.
From the Dominion of Canada,
I bid you a hearty,
Bon Cinema!
Bob ClarkCanadian cinemaChristmas horror
Previous PostThe Forbidden Room: Interview with Guy Maddin and Evan JohnsonNext PostRequiescant: Music for a Massacre


Description: Open sat-sun 12-2 fine family home in a prestine condition on a quiet street.Newer kitchen flooring.Hardwwod flooring. Large sundeck, west facing for the summer barbeque gatherings. Picture window and marble/brick fireplace adorn the spaceous, but cozy livingrom. Seperate, formal dining.Lovely wood floors under well cared for carpeted area.Full basement, family room, bedroom, 1. Pce bath. Garage plus 26x 28 dettached work shop for your hobby needs. Fanced back yard.
Additional Features and Amenities Other: App: F/S/W/D, Biz Type: Automotive, Biz Type: Retail, Bsmt: Finished - Partially, Cons: Frame Wood 2x6, Cool: Air Exchanger, Cool: H/Vac, Din-Lev2: 12x8, Ext Fin: Stucco, Ext: Balcony/Deck, Ext: Guest Accommodations, Ext: Workshop, Found: Concrete Poured, Fp: Living Rm, Front: 50, Fuel: Electric, Fuel: Oil, Heat: Baseboard, Heat: Forced Air, High School: 61 Spectrum Comm., Int: Blinds, Int: Dining Area, Int: Eating Space, Int: Flrs/Lino, Int: Flrs/Tile, Int: Flrs/Wood, Int: Laundry Area, Kitch: 1, Kitch-Lev2: 12x10, Liv-Lev2: 18x12, Lot Desc: Cleared, Middle School: 61 Colquitz, Mstr-Lev2: 11x10, Roof: Asphalt Shingle, Waste: Sewer, Water: City/Munic.


text:
Volunteer Profile: Ken Archibald
Author: Heather McPherson Last Updated 1/17/2018
Share Post on
by Caden Crowston, Willamette University Intern
Volunteers are an integral part of the Food Share, each of them donating time and services that help to alleviate hunger in our community. Ken Archibald is one of those volunteers. Ken, a retired Civil Engineer, remains active in his community by volunteering at the Food Share warehouse and delivering meals for Meals on Wheels.
Ken has been volunteering once a month at the Food Share since 2007 as a member of the Galley Clipper group, a group of about 17 volunteers from the Westminster Presbyterian Church with the belief that "No one in our community should be hungry." Nine years of volunteer commitment is not an easy thing to do! Ken says that joining the Galley Clipper group and volunteering with friends has allowed him to stay consistent with his volunteering. "It's almost like a habit now" he says with a chuckle, "It's something that you put on your calendar and look forward to."
In addition to doing good for the community, Ken also describes his volunteer work
as a good time. "It can be hard work, but it's a lot of fun" he says. "We challenge ourselves to finish as fast as we can, it almost becomes a game." One of Ken's favorite things about volunteering at the Food Share is being able to work with the other volunteers and staff.
Although Ken enjoys himself while volunteering, he also recognizes the importance of his work. He enjoys the good feeling that he gets from knowing that his work will directly impact his community. "It's rare when you volunteer that the things you do are going to be used right away." he says. "I like knowing that what I package at the Food Share is going out to people in the community."
Ken's consistent involvement with the Food Share and in his community makes real change. "The commitment and dedication that Ken and the Westminster Church group has shown to the Food Share allows us to do the work that needs to be done to feed our community" says Allen Pfeiffer, the Volunteer Coordinator at the Food Share.
Last year, Food Share volunteers as a whole, contributed enough hours to equal an additional 30 full time staff members. Ken is just one example of why volunteers play such a big role in building and improving our community by feeding families in need of nutritious food.
Community Food Projects
Hunger Story


Friday, August 17…The last day in Karatu before flying back to JFK.
I awoke earlier than normal mainly due to nerves. After a quick breakfast, Mama Warra walked me to the orphanage one last time. We met about five of the older children, my English pupils, on the road. As we neared them, I felt my eyes well up and a knot in my stomach, knowing this would be the last time I'd see them before I left later that afternoon. I waved and said good bye I headed over to Shalom and affixed all of the photos of staff and children on the Welcome poster. Mama Warra came in and helped me write the names of some of the children, as I had mixed up two or three. It was in this moment that I counted 53 children, not 52 as I had thought previously!
I had brought an I ❤ NY shirt for Mama Warra in red and was wearing a matching one in blue. Upon presenting it to her, she immediately changed into it and looked just fabulous! Josephat was more than ecstatic to take the photo of the two of us.
Our first stop was the market with beans and rice. The market is quite a place to see as there are identical shops with seemingly identical produce, tomatoes, onions, carrots, bananas, rice, beans etc. Clearly only an expert would know how to navigate such a place! Once at the stand, we swatted the flies and stepped to the side for passing customers as we searched for Shalom's account in the record book. Finally found under "Yatima" meaning "orphans" I was astonished to see that the debt at this market had been accumulating since January! So too was I deeply in awe of the shop owner, for he clearly cared for the orphans, having given Shalom the food on credit. As Yusuf did the talking both to the shop owner and to myself, we were able to pay over the months old debt AND purchase two months worth of food for the children.
Our next stop was a local store where we purchased laundry detergent, sugar, tea, salt and other daily necessities. I purchased some school books while there, astounded at the low cost. After piling the items into the car, we were off to the maize market to pay off another debt and purchase two more months of food. The final stop was a little market where we paid off the last of the debt. Words cannot express how honored I was to be a part of these moments. Thank you all for your donations, both in finances and in prayer.
By the time we finished paying off all the debt and had the back seats of the safari vehicle filled with school books and everyday necessities, we headed back to Shalom. After presenting everything to Mama Warra and Mama Ndogo, who both couldn't help but thank us, I rushed to put away the notebooks and hung up the Shalom poster with Mama's help. We had lunch down at the volunteer house for the last time. Waiting for us was a delish meal with plenty of the "chips" (french fries) that we had come to adore. Mama Warra, Yusef and Godfrey shared the last meal with us. Once over, our last hour flew by as we said good bye to the children and staff. We managed a photo with most of the little ones who were at Shalom that afternoon. Since the older ones were all at school, only about half are photographed with the finished roof.
As we all stood with beaming smiles, I couldn't help being utterly thankful and nearly speechless as I mulled over memories of the past two weeks. We saw quite a transformation, not only through the walls, floor, steps and ceiling of the veranda but so too within each of ourselves.
The veranda was quite the monochromatic masterpiece!
Thank you donors for your generosity!
This entry was posted on 25/08/2009 by adventuresofadelicateflower. It was filed under 2009 Adventures .


text:
layout: page
title: gt-Guatemala
---
{% include postbycat key="gt" %}

redpajama_set_name: RedPajamaGithub


This presentation explores the benefits of having a content delivery solution and looks at two sides of the implementation process – what content publishers need and what end users expect from a system. Real-world examples are used to provide a checklist of requirements that can help companies decide what's initially important and how the system might evolve over time.
In this presentation the audience will learn what features are important when implementing a content delivery solution, the evolutionary approaches taken by some companies, and what end users expect.
Mark has worked with many customers implementing DITA-based content delivery solutions, and leading the technical requirements of Congiliy's DITAweb solution. As well as DITAweb, Mark has also led the development of IdXML, a plugin for publishing DITA into Adobe InDesign. His experience and knowledge of DITA, and involvement in DITAweb since its inception has led to him becoming the CTO of Mekon's Congility division.


text:
(do grego antigo ψευδώνυμος, composto de ψευδο- "pseudo-" e ὄνομα "nome", ou seja, "nome falso"), é um nome fictício usado por um indivíduo como alternativa ao seu nome real.

Normalmente é um nome inventado por um escritor, um poeta ou um jornalista que não queira ou não possa assinar suas próprias obras. Sob o aspecto jurídico, o pseudônimo é tutelado pela lei quando tenha adquirido a mesma importância no nome oficial, nas mesmas modalidades que defendem o direito ao nome.

Exemplos de personalidades conhecidas por seus pseudônimos

 Allan Kardec (Hippolyte Léon Denizard Rivail)
 Adamo Angel (Walcyr Carrasco)
 Lemony Snicket (Daniel Handler)
 Finn Mertens (Carlos Eduardo Alves Ferreira)
 Anatole France (Jacques Anatole François Thibault)
 Tristão de Ataíde (Alceu Amoroso Lima)
 Eugénio de Andrade (José Fontinhas)
 George Eliot (Mary Ann Evans)
 Susana Vieira (Sônia Maria Vieira Gonçalves)
 George Orwell (Eric Arthur Blair)
 Gil do Vigor (Gilberto Nogueira)
 Josef Stalin (Ióssif Vissariónovitch Djugashvili)
 Lenin (Vladimir Ilich Ulyanov)
 Lewis Carroll (Charles Lutwidge Dodgson)
 J. K. Rowling / Robert Galbraith (Joanne Rowling)
 Bob Dylan (Robert Allen Zimmerman)
 Johannes Clímacus / Johannes de Silentio / Victor Eremita (Søren Kierkegaard)
 Mark Twain (Samuel Langhorne Clemens)
 Miguel Torga (Adolfo Correia da Rocha)
 Pablo Neruda (Ricardo Eliécer Neftalí Reyes Basoalto)
 Paracelso (Philippus Aureolus Theophrastus Bombastus von Hohenheim)
Silvio Santos (Senor Abravanel)
 Tennessee Williams (Thomas Lanier Williams III)
 Woody Allen (Allan Stewart Königsberg)
 Marina and the Diamonds (Marina Lambrini Diamandis)
 Lady Gaga (Stefani Joanne Angelina Germanotta)
 Lana Del Rey (Elizabeth Woolridge Grant)
 Freddie Mercury (Farrokh Bulsara)
 Eminem (Marshall Bruce Mathers III)
 Ayu (Ayumi Hamasaki)
 Garrincha (Manoel Francisco dos Santos)
 Pelé (Edson Arantes do Nascimento)
 Zico (Arthur Antunes Coimbra)
 Greta Garbo (Greta Lovisa Gustafsson)
 Hilda de Toledano (Maria Pia de Saxe-Coburgo e Bragança)
 Bonnie Tyler (Gaynor Hopkins)
 Nils Sjöberg (Taylor Swift)

Ver também

 Alcunha
 Alter ego
 Nome artístico
 Codinome
 Prenome
 Nome do meio
 Sobrenome
 Nome social
 Hipocorístico
 Heterônimo


Copy of With a Steve Reich and my ensemble in Tokyo for performances of Clapping Music, Mallet Quartet, Quartet (Japanese Premiere) and Tehillim. A great trip!!
Copy of With Andrew Norman in Carnegie Hall for the NY Premiere of 'Switch' for solo percussion and orchestra.
Copy of With Sir Harrison Birtwistle and Gillian Moore at the Southbank Centre following a performance of 'The Axe Manual' at my percussion festival Metal Wood Skin.
Copy of With James Macmillan in Utrecht following the Premiere of his 'Percussion Concerto No.2' with the Netherlands Radio Philharmonic Orchestra.
Copy of With Louis Andriessen at the first rehearsal for his wonderful and melancholy 'Tapdance' for Solo Percussion and Large Ensemble.
Copy of With Toshio Hosokawa at London's Wigmore Hall following my solo recital debut there.
Copy of With Rolf Wallin discussing his new suite of marimba pieces inspired by Gabriel Garcia Marquez short stories.
Copy of With Julia Wolfe in Tribeca, NYC in April 2013.
Copy of WIth Steve Reich in Tokyo, December 2012.
Copy of With Kalevi Aho in Gothenberg for the Swedish Premiere of 'Sieidi' in November 2012.
Copy of With Nico Muhly and Joey Roukens in Rotterdam, November 2012.
Copy of With Elliott Carter and Eric Huebner at the World Premiere of 'Two Controversies and a Conversation' in New York City in June 2012.
Copy of With Joe Pereira and Jeff Milarsky at the premiere of Joe's concerto in Los Angeles, May 2012.
Copy of With Mr and Mrs HK Gruber in Estonia in October 2011. Wonderrrrrrful!
Copy of 10 Premieres and counting - with Dave Maric in Ghent in September 2011.
Copy of With Michael Torke at the premiere of 'Mojave' in The Netherlands in November 2010.
Copy of With Steve Reich at London's South Bank Centre in February 2010, on the first occasion we were to meet.
Copy of With Simon Holt following the sensational premiere in Birmingham of 'a table of noises'.
Copy of With Steve Mackey in Carnegie Hall, at the US Premiere of 'Time Release', March 2008.
Copy of With Steve Mackay and Andre de Ridder in Glasgow in autumn 2005.
Copy of With Bright Sheng in Amsterdam, performing his marimba concerto with the Concertgebouw Orkest in 2005.


text:
'use strict';

Object.defineProperty(exports, "__esModule", {
    value: true
});
/**
 *
 * Close the given application.
 *
 * <example>
    :closeApp.js
    browser.closeApp()
 * </example>
 *
 * @see  https://github.com/appium/appium/blob/master/docs/en/writing-running-appium/appium-bindings.md#close-app
 * @type mobile
 * @for ios
 *
 */

var closeApp = function closeApp() {
    return this.requestHandler.create({
        path: '/session/:sessionId/appium/app/close',
        method: 'POST'
    });
};

exports.default = closeApp;
module.exports = exports['default'];


text:
Paddy Power Betfair break ranks
Paddy Power Betfair joins the UK Government's call
Until now, most UK bookmakers have been opposed to the UK Government's plan to crack down on fixed odds betting terminals. One major UK bookie has decided to break ranks with the rest, and side with the government, though: Paddy Power Betfair!
The UK Government's plans
The UK Government has long held plans to radically alter the fixed odds betting terminal industry in the UK. Anti-gamblers have referred to fixed odds betting terminals as the "crack cocaine of gambling". The machines currently allow players to place maximum bets of £100 a pop, and the government wants to adjust that to £20 a game. Even then, most bookies have decided that £20 is too little to be worthwhile for them, and have estimated that as many as 9,000 bookies could be other leading UK bookies.
Paddy Power Betfair betrays the pack
Just because Paddy Power Betfair has decided to join the UK Government on the stance doesn't make them betrayers of the pack. However, Paddy Power Betfair have urged the government to go further, and cap the maximum stake at £10 per game. Whilst it certainly makes Paddy Power Betfair sound noble, there is something players should know about their move.
Underneath it all, Paddy Power Betfair do not run any high-street bookies in the UK. The same cannot be said of Ladbrokes, Gala Coral and William Hill. By siding with the government, Paddy Power Betfair have nothing to lose, and would in fact gain from the other high street bookies have outlets closed. Suddenly Paddy Power Betfair's motives seem far more selfish.
Play with Paddy Power Betfair
Of course, this despicable action is likely to infuriate players over at Ladbrokes and William Hill, but it may win over some fans who wish to see stricter regulations in the casino world. If you fancy joining the tearaway bookies, Paddy Power is offering all newbies the chance to claim a free £10 bet when they sign up at their domain, whilst Betfair is offering up to £100 for all newbies to come and join their sportsbook this autumn.
New Customers Only. 18+. T&Cs Apply


Delightful Losing A Friend Quotes Pictures – From the thousands of pictures online regarding losing a friend quotes, we choices the top choices with ideal quality simply for you all, and now this pictures is usually considered one of graphics collections inside our finest images gallery regarding Delightful Losing A Friend Quotes Pictures. Lets hope you will think it's great.
put up simply by kerbcraft on 2018-09-13 05:50:55. To view many graphics within Delightful Losing A Friend Quotes Pictures photos gallery make sure you comply with that hyperlink.
Losing A Friend Quotes Fine Thimbles Bobbins Paper And Ink Faithful Friends Leave Pawprints Uploaded by kerbcraft on Thursday, September 13th, 2018 in category Inspirational Quotes.
See also Losing A Friend Quotes Lovely Pin By Khalil Mechergui On K Khalil from Inspirational Quotes Topic.
Here we have another image Losing A Friend Quotes Good Broken Friendships Quotes Design featured under Losing A Friend Quotes Fine Thimbles Bobbins Paper And Ink Faithful Friends Leave Pawprints. We hope you enjoyed it and if you want to download the pictures in high quality, simply right click the image and choose "Save As". Thanks for reading Losing A Friend Quotes Fine Thimbles Bobbins Paper And Ink Faithful Friends Leave Pawprints.


Business Coaching To Book You Solid!
How it Works: It's Small Business Coaching in the Form of a systematic approach, with each step building off the one before.
Week by week I will teach you essential marketing techniques and time-tested strategies and will help you create relentless demand for the services and products you offer. I will use work sheets, samples and other supporting materials to help you incorporate what you're learning into a smarter marketing plan.
While we are working out the nitty gritty details above, we will also be focusing simultaneously on your mindset.
The ABT (Asset Based Thinking) principle is: when you change the way you see yourself, you can change ANYTHING.
Small shifts in thinking lead to big rewards. By transforming the way you see your own influence and thoughts, you can improve your leadership and your performance exponentially. I will show you how incorporating ABT into EVERYTHING you do with your business will help you move farther and faster to your goals.
These small business coaching lessons will equip you to double your client list and your revenue, and you'll love every minute of it. In just a short time, you'll find your business functions as you'd envisioned. Contact me to get started on your future today!