Chapter 3 Random Walks
3.1 What are stochastic processes?
A stochastic process is a sequence - finite or infinite - of random variables. We usually write \(\{X_n\}_{n\in{\mathbb{N}}_0}\) or \(\{X_n\}_{0\leq n \leq T}\), depending on whether we are talking about an infinite or a finite sequence. The number \(T\in {\mathbb{N}}_0\) is called the time horizon, and we sometimes set \(T=+\infty\) when the sequence is infinite. The index \(n\) is often interpreted as time, so that a stochastic process can be thought of as a model of a random process evolving in time. The initial value of the index \(n\) is often normalized to \(0\), even though other values may be used. This it usually very clear from the context.
It is important that all the random variables \(X_0, X_1,\dots\) “live” on the same sample space \(\Omega\). This way, we can talk about the notion of a trajectory or a sample path of a stochastic process: it is, simply, the sequence of numbers \[X_0(\omega), X_1(\omega), \dots\] but with \(\omega\in \Omega\) considered “fixed”. In other words, we can think of a stochastic process as a random variable whose value is not a number, but sequence of numbers. This will become much clearer once we introduce enough examples.
3.2 The Simple Symmetric Random Walk
A stochastic process \(\{X\}_{n\in{\mathbb{N}}_0}\) is said to be a simple symmetric random walk (SSRW) if
\(X_0=0\),
the random variables \(\delta_1 = X_1-X_0\), \(\delta_2 = X_2 - X_1\), …, called the steps of the random walk, are independent
each \(\delta_n\) has a coin-toss distribution, i.e., its distribution is given by \[{\mathbb{P}}[ \delta_n = 1] = {\mathbb{P}}[ \delta_n=-1] = \tfrac{1}{2} \text{ for each } n.\]
Some comments:
This definition captures the main features of an idealized notion of a particle that gets shoved, randomly, in one of two possible directions, over and over. In other words, these “shoves” force the particle to take a step, and steps are modeled by the random variables variables \(\delta_1,\delta_2, \dots\). The position of the particle after \(n\) steps is \(X_n\); indeed, \[X_n = \delta_1 + \delta_2 + \dots + \delta_n \text{ for }n\in {\mathbb{N}}.\] It is important to assume that any two steps are independent of each other - the most important properties of random walks depend on this in a critical way.
Sometimes, we only need a finite number of steps of a random walk, so we only care about the random variables \(X_0, X_1,\dots, X_T\). This stochastic process (now with a finite time horizon \(T\)) will also be called a random walk. If we want to stress that the horizon is not infinite, we sometimes call it the finite-horizon random walk. Whether \(T\) is finite or infinite is usually clear from the context.
The starting point \(X_0=0\) is just a normalization. Sometimes we need more flexibility and allow our process to start at \(X_0=x\) for some \(x\in {\mathbb{N}}\). To stress that fact, we talk about the random walk starting at \(x\). If no starting point is mentioned, you should assume \(X_0=0\).
We will talk about biased (or asymmetric) random walks a bit later. The only difference will be that the probabilities of each \(\delta_n\) taking values \(1\) or \(-1\) will be \(p\in (0,1)\) and \(1-p\), and not necessarily \(\tfrac{1}{2}\), The probability \(p\) cannot change from step to step and the steps \(\delta_1, \delta_2, \dots\) will continue to be independent from each other.
The word simple in its name refers to the fact that distribution of every step is a coin toss. You can easily imagine a more complicated mechanism that would govern each step. For example, not only the direction, but also the size of the step could be random. In fact, any distribution you can think of can be used as a step distribution of a random walk. Unfortunately, we will have very little to say about such, general, random walks in these notes.
3.3 How to simulate random walks
In addition to being quite simple conceptually, random walks are also easy to simulate. The fact that the steps \(\delta_n = X_n - X_{n-1}\) are independent coin tosses immediately suggests a feasible strategy: simulate \(T\) independent coin tosses first, and then define each \(X_n\) as the sum of the first \(n\) tosses.
Before we implement this idea in R, let us agree on a few conventions which we will use whenever we simulate a stochastic process:
- the result of each simulation is a
data.frame
object - its columns will be the random variables \(X_0\), \(X_1\), It is a good
idea to name your columns
X0
,X1
,X2
, etc. - each row will represent one “draw”˜ ˜µ This is best achieved by the following two-stage approach in R:
write a function which will simulate a single trajectory of your process, If your process comes with parameters, it is a good idea to include them as arguments to this function.
use the function
replicate
to stack together many such simulations and convert the result to adata.frame
. Don’t forget to transpose first (use the functiont
) becausereplicate
works column by column, and not row by row.
Let’s implement this in the case of a simple random walk. Of course, it is
impossible to simulate a random walk on an infinite horizon (\(T=\infty\))
so we must restrict to finite-horizon random walks6. The function cumsum
which
produces partial sums of its input comes in very handy.
function(T, p = 0.5) {
single_trajectory = sample(c(-1, 1), size = T, replace = TRUE, prob = c(1 - p, p))
delta = cumsum(delta)
x =return(x)
}
Next, we run the same function nsim
times and record the results. It is a
lucky break that the default names given to columns are X1
, X2
, … so we
don’t have to rename them. We do have to add the zero-th column \(X_0=0\) because,
formally speaking, the “random variable” \(X_0=0\) is a part of the stochastic
process. This needs to be done before other columns are added to maintain the
proper order of columns, which is important when you want to plot trajectories.
function(nsim, T, p = 0.5) {
simulate_walk =return(
data.frame(
X0 = 0,
t(replicate(nsim, single_trajectory(T, p)))
))
} simulate_walk(nsim = 10000, T = 500) walk =
3.4 Two ways of looking at a stochastic proceses
Now that we have the data frame walk
, we can explore in at least two qualitatively different ways:
3.4.1 Column-wise (distributionally)
Here we focus on individual random variables (column) or pairs, triplets, etc. of random variables and study their (joint) distributions. For example, we can plot histograms of the random variables \(X_5, X_8, X_{30}\) or \(X_{500}\):
We can also use various (graphical or not) devices to understand joint distributions of pairs of random variables:
3.4.2 Row-wise (trajectorially or path-wise)
If we focus on what is going on in a given row of walk
, we are going to see
a different cross-section of our stochastic process. This way we are fixing the
state of the world \(\omega\) (represented by a row of walk
), i.e., the particular
realization of our process, but
varying the time parameter. A typical picture associated to a trajectory
of a random walk is the following
You can try to combine the two approaches (if you must) and plot several trajectories on the same plot. While this produces pretty pictures (and has one or two genuine applications), it usually leads to a sensory overload. Note that the trajectories below are jittered a bit. That means that the positions of the points are randomly shifted by a small amount. This allows us to see features of the plot that would otherwise be hidden because of the overlap.
3.5 The path space
The row-wise (or path-wise or trajectory-wise) view of the random walk described above illustrates a very important point: the random walk (and random processes in general) can be seen as random “variable” whose values are not merely numbers; they are sequences of numbers (trajectories). In other words, a random process is simply a “random trajectory”. We can simulate this random trajectory as we did above, but simulating the steps and adding them up, but we could also take a different approach. We could build the set of all possible trajectories, and then pick a random trajectory out of it.
For a random walk on a finite horizon \(T\), a trajectory is simply a sequence of natural numbers starting from \(0\). Different realizations of the coin-tosses \(\delta_n\) will lead to different trajectories, but not every sequence of natural numbers corresponds to a trajectory. For example \((0,3,4,5)\) is not possible because the increments of the random walk can only take values \(1\) or \(-1\). In fact, a finite sequence \((x_0, x_1, \dots, x_T)\) is a (possible) sample path of a random walk if and only if \(x_0=0\) and \(x_{k}-x_{k-1} \in \{-1,1\}\) for each \(k\). For example, when \(T=3\), there are \(8\) possible trajectories: \[ \begin{align} \Omega = \{ &(0,1,2,3), (0,1,2,1),(0,1,0,2), (0,1,0,-1), \\ & (0,-1,-2,-3), (0,-1,-2,-1), (0,-1,0,-2), (0,-1,0,1)\} \end{align}\] When you (mentally) picture them, think of their graphs:
Each trajectory corresponds to a particular combinations of the values of the
increments \((\delta_1,\dots, \delta_T)\), each such combination happens with probability \(2^{-T}\).
This means that any two trajectories are equally likely. That is convenient, because
this puts uniform probability on the collection of trajectories. We are now ready to
implement our simulation procedure in R; let us write the function single_trajectory
using this
approach and use it to simulate a few trajectories. We assume that a function all_paths(T)
which returns
a list of all possible paths with horizon \(T\) has already been implemented (more info about a possible
implementation in R is given in a problem below):
5
T= all_paths(T)
Omega = function() {
single_trajectory =return(unlist(sample(size=1,Omega)))
}
function(nsim, p=0.5) {
simulate_walk =return(data.frame(
X0=0,
t(replicate(nsim, single_trajectory()))
)) }
3.6 The distribution of \(X_n\)
Building a path space is not simply an exercise in abstraction. Here is how we can use is to understand the distribution of the position of the random walk:
Let \(X\) be a simple symmetric random walk with time horizon \(T=5\). What is the probability that \(X_{5}=1\)?
Let \(\Omega\) be the path space, i.e., the set of all possible trajectories of length \(5\) - there are \(2^{5}=32\) of them. The probability that \(X_{5}=1\) is the probability that a randomly picked path from \(\Omega\) will take the value \(1\) at \(n=5\). Since all paths are equally likely, we need to count the number of paths with value \(1\) at \(n=5\) and then divide by the total number of paths, i.e., \(32\).
So, how many paths are there that take value \(1\) at \(n=5\)? Each path is built out of steps of absolute value \(1\). Some of them go up (call them up-steps) and some of them go down (down-steps). A moment’s though reveals that the only way to reach \(1\) in \(5\) steps is if you have exactly \(3\) up-steps and \(2\) down-steps. Conversely, any path that has \(3\) up-steps and \(2\) down-steps ends at \(1\).
This realization transforms the problem into the following: how many paths are there with exactly \(3\) up-steps (note that we don’t have to specify that there are \(2\) down-steps - it will happen automatically). The only difference between different paths with exactly \(3\) up-steps is the position of these up-steps. In some of them the up-steps happen right at the start, in some at the very end, and in some they are scattered around. Each path with \(3\) up-steps is uniquely determined by the list of positions of those up-steps, i.e., with a size-\(3\) subset of \(\{1,2,3,4,5\}\). This is not a surprise at all, since each path is build out of increments, and positions of positive increments clearly determine values of all increments.
The problem has now become purely mathematical: how many size-\(3\) subsets of \(\{1,2,3,4,5\}\) are there? The answer comes in the form of a binomial coefficient \(\binom{5}{3}\) whose value is \(10\) - there are exactly ten ways to pick three positions out of five. Therefore, \[ {\mathbb{P}}[ X_{5} = 1] = 10 \times 2^{-5} = \frac{5}{16}.\]
Can we do this in general?
Let \(X\) be a simple symmetric random walk with time horizon \(T\). What is the probability that \(X_{n}=k\)?
The reasoning from the last example still applies. A trajectory with \(u\) up-steps and \(d\) down-steps will end at \(u-d\), so we must have \(u-d=k\). On the other hand \(u+d=n\) since all steps that are not up-steps are necessarily down-steps. This gives as a simple linear system with two equations and two unknowns which solves to \(u = (n+k)/2\), \(d=(n-k)/2\). Note the \(n\) and \(k\) must have the same parity for this solution to be meaningful. Also, \(k\) must be between \(-n\) and \(n\).
Having figured out how many up-steps is necessary to reach \(k\), all we need to do is count the number of trajectories with that many up-steps. Like before, we can do that by counting the number of ways we can choose their position among \(n\) steps, and, like before, the answer is the binomial coefficient \(\binom{n}{u}\) where \(u=(n+k)/2\). Dividing by the total number of trajectories gives us the final answer: \[ {\mathbb{P}}[ X_n = k ] = \binom{n}{ (n+k)/2} 2^{-n},\] for all \(k\) between \(-n\) and \(n\) with same parity as \(n\). For all other \(k\), the probability is \(0\).
The binomial coefficient and the \(n\)-th power suggest that the distribution of \(X_n\) might have something to do with the binomial distribution. It is clearly not the binomial, since it can take negative values, but it is related. To figure out what is going on, let us first remember what the binomial distribution is all about. Formally, it is a discrete distribution with two parameters \(n\in{\mathbb{N}}\) and \(p\in (0,1)\). Its support is \(\{0,1,2,\dots, n\}\) and the distribution is given by the following table, where \(q=1-p\)
| 0 | 1 | 2 | … | k | … | n |
|---|---|---|---|---|---|---|
| \(\binom{n}{0} q^n\) | \(\binom{n}{1} p q^{n-1}\) | \(\binom{n}{2} p^2 q^{n-2}\) | … | \(\binom{n}{k} p^k q^{n-k}\) | … | \(\binom{n}{n} p^n\) |
The binomial distribution is best understood, however, when it is expressed as a “number of successes”. More precisely,
If \(B_1,B_2,\dots, B_n\) are \(n\) independent Bernoulli random variables with the same parameter \(p\), then their sum \(B_1+\dots+B_n\) has a binomial distribution with parameters \(n\) and \(p\).
We think of \(B_1, \dots, B_n\) as indicator random variables of “successes” in \(n\) independent “experiments” each of which “succeeds” with probability \(p\). A canonical example is tossing a biased coin \(n\) times and counting the number of “heads”.
We know that the position \(X_n\) at time \(n\) of the random walk admits the representation \[ X_n = \delta_1+\delta_2+\dots+\delta_n,\] just like the binomial random variable. The distribution of \(\delta_k\) is not Bernoulli, though, since it takes the values \(-1\) and \(1\), and not \(0,1\). This is easily fixed by applying the linear transformation \(x\mapsto \frac{1}{2}(x+1)\); indeed \(( -1 +1)/2 = 0\) and \(( 1 + 1) / 2 =1\), and, so, \[ \frac{1}{2}(\delta_k+1)\text{ is a Bernoulli random variable with parameter } p=\frac{1}{2}.\] Consequently, if we add all \(B_k = \tfrac{1}{2}(1+\delta_k)\) and remember our discussion from above we get the following statement
In a simple symmetric random walk the random variable \(\frac{1}{2} (n + X_n)\) has the binomial distribution with parameters \(n\) and \(p=1/2\), for each \(n\).
Can you use that fact to rederive the distribution of \(X_n\)?
3.7 Biased random walks
If the steps of the random walk preferred one direction to the other, the definition would need to be tweaked a little bit and the word “symmetric” in the name gets replaced by “biased” (or “asymmetric”):
A stochastic process \(\{X\}_{n\in{\mathbb{N}}_0}\) is said to be a **simple biased random walk with parameter \(p\in (0,1)\) if
\(X_0=0\),
the random variables \(\delta_1 = X_1-X_0\), \(\delta_2 = X_2 - X_1\), …, called the steps of the random walk, are independent and
each \(\delta_n\) has a biased coin-toss distribution, i.e., its distribution is given by \[{\mathbb{P}}[ \delta_n = 1] = p \text{ and } {\mathbb{P}}[ \delta_n=-1] = 1-p \text{ for each } n.\]
As far as the distribution of \(X_n\) is concerned, we don’t expect it to be the same as in the symmetric case. After all, the biased random walk (think \(p=0.999\)) will prefer one direction over the other. Our trick with writing \(\frac{1}{2}(n+X_n)\) as a sum of Bernoulli random variables still works. We just have to remember that \(p\) is not \(\frac{1}{2}\) anymore to conclude that \(\tfrac{1}{2}(X_n + n)\) has the binomial distribution with parameters \(n\) and \(p\); if we put \(u = (n+k)/2\) we get \[\begin{align} {\mathbb{P}}[ X_n = k] &= {\mathbb{P}}[ \tfrac{1}{2}(X_n+n) = u] = \binom{n}{u} p^u q^{n-u}\\ & = \binom{n}{\frac{1}{2}(n+k)} p^{\frac{1}{2}(n+k)} q^{\frac{1}{2}(n-k)}. \end{align}\] Note that be binomial coefficient stays the same as in the symmetric case, but the factor \(2^{-n} = (1/2)^{\frac{1}{2}(n+k)} (1/2)^{\frac{1}{2}(n-k)}\) becomes \(p^{\frac{1}{2}(n+k)} q^{\frac{1}{2}(n-k)}\).
Can we reuse the sample space \(\Omega\) to build a biased random walk? Yes, we can, but we need to assign possibly different probabilities to individuals. Indeed, if \(p=0.99\), the probability that all the increments \(\delta\) of a \(10\)-step random walk take the value \(+1\) is \((0.99)^{10} \approx 0.90\). This is much larger than the probability that all steps take the value \(-1\), which is \((0.01)^{10}= 10^{-20}\).
In general, the probability that a particular path is picked out of \(\Omega\) will depend on the number of up-steps and down-steps; more precisely it equals \(p^u q^{n-u}\) where \(u\) is the number of up-steps. The interesting thing is that the number of up-steps \(u\) depends only on the final position \(x_n\) of the path; indeed \(u = \frac{1}{2}(n+x_n)\). This way, all paths of length \(T=5\) that end up at \(1\) get the same probability of being chosen, namely \(p^3 q^2\). Let us use the awful seizure-inducing graph with multiple paths for good, and adjust the each path according to its probability; some jitter has been added to deal with overlap. The lighter-colored paths are less likely to happen then the darker-colored paths.
3.8 Additional problems for Chapter 3
Let \(\{X_n\}_{n\in {\mathbb{N}}_0}\) be a simple symmetric random walk. Which of the following processes are simple random walks?
\(\{2 X_n\}_{n\in {\mathbb{N}}_0}\) ?
\(\{X^2_n\}_{n\in {\mathbb{N}}_0}\) ?
\(\{-X_n\}_{n\in {\mathbb{N}}_0}\) ?
\(\{ Y_n\}_{n\in {\mathbb{N}}_0}\), where \(Y_n = X_{5+n}-X_5\) ?
How about the case \(p\ne \tfrac{1}{2}\)?
No - the support of the distribution of \(X_1\) is \(\{-2,2\}\) and not \(\{-1,1\}\).
No - \(X_1^2=1\), and not \(\pm 1\) with equal probabilities.
Yes - all parts of the definition check out.
Yes - all parts of the definition check out.
The answers are the same if \(p\ne \tfrac{1}{2}\), but, in 3., \(-X_n\) comes with probability \(1-p\) of an up-step, and not \(p\).
Let \(\{X_n\}_{n\in {\mathbb{N}}_0}\) be a simple random walk.
Find the distribution of the product \(X_1 X_2\)
Compute \({\mathbb{P}}[ |X_1 X_2 X_3|]=2\)
Find the probability that \(X\) will hit neither the level \(2\) nor the level \(-2\) until (and including) time \(T=3\)
Find the independent pairs of random variables among the following choices:
- \(X_1\) and \(X_2\)
- \(X_4 - X_2\) and \(X_3\)
- \(X_4 - X_2\) and \(X_6 - X_5\)
- \(X_1+X_3\) and \(X_2+X_4\).
The possible paths when the time horizon is \(T=2\) are \[(0,1,2), (0,1,0), (0,-1,-2) \text{ and } (0,-1,0)\] The values of the product \(X_1 X_2\) on those paths are \(2, 0, 2\), and \(0\), respectively. Each happens with probability \(0.25\). Therefore \({\mathbb{P}}[ X_1 X_2 = 0] = {\mathbb{P}}[ X_1 X_2 = 2] = \tfrac{1}{2}\), i.e., its distribution is given by
| 0 | 2 |
|---|---|
| 0.5 | 0.5 |
\(|X_1 X_2 X_3|=2\) only in the following two cases \[ X_1=1, X_2=2, X_3=1 \text{ or } X_1=-1, X_2=-2, X_3=-1.\] Each of those paths has probability \(1/8\) of happening, so \({\mathbb{P}}[ |X_1 X_2 X_3| = 2] = 1/4\).
The only chance for \(X\) to hit \(2\) or \(−2\) before or at T = 3 is at time \(n = 2\). Since \(X_2 \in \{ -2, 0, 2\}\), this happens with probability \({\mathbb{P}}[ X_2 \in \{-2,2\}] = 1 - {\mathbb{P}}[X_2 = 0] = 0.5\).
The only independent pair is \(X_4 - X_2\) and \(X_6 - X_5\) because the two random variables are build out of completely different increments: \(X_4 - X_2 = \delta_3+\delta_4\) while \(X_6-X_5 = \delta_6\).
The others are not independent. For example, if we are told that \(X_1+X_3 = 4\), it necessarily follows that \(\delta_1= \delta_2=\delta_3=1\). Hence, \(X_2+X_4 = 2\delta_1+2\delta_2+\delta_3+\delta_4 = 5+\delta_4\) which cannot be less than \(4\). On the other hand, without any information, \(X_2+X_4\) can easily be negative.
Let \(\{X_n\}_{n\in {\mathbb{N}}_0}\) be a simple random walk.
Compute \({\mathbb{P}}[ X_{32} = 4| X_8 = 6]\).
Compute \({\mathbb{P}}[ X_9 = 3 \text{ and } X_{15}=5 ]\)
(extra credit) Compute \({\mathbb{P}}[ X_7 + X_{12} = X_1 + X_{16}]\)
This is the same as \({\mathbb{P}}[ X_{32}- X_8 = -2 | X_8=6]\). The random variables \(X_8\) and \(X_{32}-X_8\) are independent (as they are built out of different \(\delta\)s), so we can remove the conditioning.
It remains to compute \({\mathbb{P}}[X_{32} - X_8 = -2]\). For that, we note that \(X_{32} - X_8\) is a sum of \(24\) independent coin tosses, so its distribution is the same as that of \(X_{24}\). Therefore, by our formula for the distribution of \(X_n\), we have
\[ {\mathbb{P}}[X_{32}= 4 | X_8 = 6] = {\mathbb{P}}[X_{24} = -2] = \binom{24}{11} 2^{-24}.\]
We have \[\begin{align} {\mathbb{P}}[ X_9 = 3 \text{ and } X_{15}=5 ] & = {\mathbb{P}}[ X_{15} = 5 | X_9 = 3] \times {\mathbb{P}}[ X_9=3] \\ & = {\mathbb{P}}[ X_6 = 2] \times {\mathbb{P}}[X_9=3] = \binom{6}{4} 2^{-6} \binom{9}{6} 2^{-9}, \end{align}\] where we used the same ideas as in 1. above
We rewrite everything using \(\delta\)s: \[\begin{align} X_7+X_{12} = X_1+X_{16} &\Leftrightarrow X_7-X_1 = X_{16}-X_{12} \Leftrightarrow \delta_2+\dots+\delta_7 = \delta_{13} + \dots+\delta_{16}\\ & \Leftrightarrow (-\delta_2) + \dots + (-\delta_7) + \delta_{13}+ \dots + \delta_{16} = 0. \end{align}\]
Since \(-\delta_k\) has the same distribution as \(\delta_k\) (both are coin tosses) and remains independent of all other \(\delta_i\), the left-hand side of the last expression in the chain of equivalences above is a sum of \(10\) indepenedent coin tosses. Therefore, the probability that it equals \(0\) is the same as \({\mathbb{P}}[X_{10}=0] = \binom{10}{5} 2^{-10}\).
Let \(\{X_n\}_{n\in {\mathbb{N}}_0}\) be a simple random walk. For \(n\in{\mathbb{N}}\) compute the probability that \(X_{2n}\), \(X_{4n}\) and \(X_{6n}\) take the same value.
Increments \(X_{4n}-X_{2n}\) and \(X_{6n} - X_{4n}\) are independent, and each is a sum of \(2n\) independent coin tosses (therefore has the same distribution as \(X_{2n}\)). Hence, \[\begin{aligned} {\mathbb{P}}[ X_{2n} = X_{4n} \text{ and }X_{4n} = X_{6n} ] &= {\mathbb{P}}[ X_{4n} - X_{2n} = 0 \text{ and }X_{6n} - X_{4n} = 0 ]\\ &= {\mathbb{P}}[ X_{4n} - X_{2n} = 0] \times {\mathbb{P}}[ X_{6n} - X_{4n}=0]\\ &={\mathbb{P}}[ X_{2n}=0] \times {\mathbb{P}}[ X_{2n} =0 ]\\ & = \binom{2n}{n} 2^{-2n} \binom{2n}{n} 2^{-2n} = \binom{2n}{n}^2 2^{-4n}. \end{aligned}\]
Write an R function (call it all_paths
) which takes an integer argument T
and returns a list of all possible paths of a random walk with time horizon \(T\).
(Note: Since vectors cannot have other vectors as elements, you will need to use a data structure called list
for this. It behaves very much like a vector, so it should not be a problem.)
The implementation below uses the function combn
which returns the list of all
subsets of a certain size of a certain vector. Since each path is determined by
the positions of its up-steps, we need to loop through all numbers \(i\) from \(0\)
to \(T\) and then list all subsets of the size \(i\). The next step is to turn a set
of positions to a path of a random walk. This can be done in many ways; one is
implemented implemented in choice_to_path
using vector indexing.
function(comb, T) {
choice_to_path = rep(-1, T)
increments = 1
increments[comb] = cumsum(increments)
path =return(path)
}
function(T) {
all_paths = list(2^T)
Omega = 1
index =for (i in 0:T) {
combn(T, i, simplify = FALSE)
choices =for (choice in choices) {
choice_to_path(choice, T)
Omega[[index]] = index + 1
index =
}
}return(Omega)
}
Let \(\{X_n\}_{n\in {\mathbb{N}}_0}\) be a simple symmetric random walk. Given \(n\in{\mathbb{N}}_0\) and \(k\in{\mathbb{N}}\), compute \(\operatorname{Var}[X_n]\), \(\operatorname{Cov}[X_n, X_{n+k}]\) and \(\operatorname{corr}[X_n, X_{n+k}]\), where \(\operatorname{Cov}\) stands for the covariance and \(\operatorname{corr}\) for the correlation. (Note: look up \(\operatorname{Cov}\) and \(\operatorname{corr}\) if you forgot what they are).
Compute \(\lim_{n\to\infty} \operatorname{corr}[X_n, X_{n+k}]\). How would you interpret the result you obtained?
We have \(\operatorname{Var}[\delta_i] = 1\) for each \(i\in{\mathbb{N}}\), so \[\operatorname{Var}[X_n] = \sum_{i=1}^n \operatorname{Var}[\delta_i] = n.\] Since \({\mathbb{E}}[X_n] = {\mathbb{E}}[X_{n+k}]=0\) and \(X_{n+k} - X_n\) is independent of \(X_n\), we have \[\begin{aligned} \operatorname{Cov}[X_n,X_{n+k}] &= {\mathbb{E}}[ X_n X_{n+k}] = {\mathbb{E}}[ X_n (X_{n+k} - X_n)] + {\mathbb{E}}[X_n^2] = {\mathbb{E}}[X_n] {\mathbb{E}}[X_{n+k} - X_n] + {\mathbb{E}}[X_n^2]\\ &= {\mathbb{E}}[X_n^2] = n. \end{aligned}\] Finally, \[\begin{aligned} \operatorname{corr}[X_n, X_{n+k}] = \frac{\operatorname{Cov}[X_n, X_{n+k}]}{\sqrt{\operatorname{Var}[X_n]} \sqrt{\operatorname{Var}[X_{n+k}]}} = \frac{n}{\sqrt{n(n+k)}} = \sqrt{\frac{n}{n+k}}. \end{aligned}\] When we let \(n\to\infty\), we get \(1\). This means that the positions of the random walk, \(k\) steps apart, get closer and close to perfect correlation as \(n\to\infty\). If you know \(X_n\) and \(n\) is large, you almost know \(X_{n+k}\), at least at the typical scale of \(X_n\).
Let \(\{X_n\}_{n\in {\mathbb{N}}_0}\) be a simple random walk with \({\mathbb{P}}[X_1=1]=p\in (0,1)\), and let \(A_n\) be the (signed) area under its graph (in the picture below, \(A_n\) is the area of the blue part minus the area of the orange part).
Find a formula for \(A_n\) in terms of \(X_1,\dots, X_n\).
Compute \({\mathbb{E}}[A_n]\) and \(\operatorname{Var}[A_n]\), for \(n\in{\mathbb{N}}\). (You will find the following formulas helpful \(\sum_{j=1}^n j = \frac{n(n+1)}{2}\) and \(\sum_{j=1}^n j^2=\frac{n(n+1)(2n+1)}{6}\).)
The dashed lines divide the area “under” the graph in separate trapezoids, so \(A_n\) is the sum of their areas. The trapezoid between \(X_{k-1}\) and \(X_{k}\) has area \(1 \times (X_{k-1}+X_{k})/2\), so \[ A_n = \sum_{k=1}^n \tfrac{1}{2} (X_{k-1}+X_k) = X_1+X_2+\dots+X_{n-1} + \tfrac{1}{2}X_n.\]
Let us first represent \(A_n\) in terms of the sequence \(\{\delta_n\}_{n\in{\mathbb{N}}_0}\) \[\begin{align} A_n &= (\delta_1) + (\delta_1+\delta_2) + \dots + (\delta_1+\dots + \delta_{n-1}) + \tfrac{1}{2}(\delta_1+ \dots + \delta_n)\\ &= (n-\tfrac{1}{2}) \delta_1 + (n-1-\tfrac{1}{2}) \delta_2 + \dots + \tfrac{1}{2}\delta_n. \end{align}\]
We compute \({\mathbb{E}}[\delta_k]=p-q\) so that, by the formulas from the problem, \[\begin{align} {\mathbb{E}}[A_n]&= \sum_{j=1}^n (j-\tfrac{1}{2}) {\mathbb{E}}[\delta_{n-j}] = (p-q) \Big( \tfrac{1}{2}n(n+1) - \tfrac{1}{2}n\Big)\\ & = \frac{p-q}{2} n^2 \end{align}\]
Just like above, but relying on the independence of \(\{\delta_n\}\) and the fact that \(\operatorname{Var}[\delta_k]=1-(2p-1)^2=4pq\), we have \[\begin{align} \operatorname{Var}[A_n] &= \sum_{j=1}^n \operatorname{Var}[(j - \tfrac{1}{2}) \delta_{n-j}] = \sum_{j=1}^n (j-\tfrac{1}{2})^2 \operatorname{Var}[\delta_k] \\& = 4pq \sum_{j=1}^n (j-\tfrac{1}{2})^2 = 4pq \Big( \sum_{j=1}^n j^2 - \sum_{j=1}^n j + \frac{1}{4} n \Big)\\ & = 4pq \Big( \frac{n}{n+1}{(2n+1)}{6} - \frac{n (n+1)}{2} + \frac{n}{4}) = \frac{pq}{3} ( 4 n^3 - n) \end{align}\]
⬇ In case you were wondering, the text below belongs to footnotes from somewhere high above.⬇
It is somewhat unfortunate that the standard notation for the time horizon, namely \(T\), coincides with a shortcut
T
forTRUE
in R. Our example still works fine because this shortcut is used only if there is no variable namedT
.↩


Location of wheel: ?
Customization settings. See wiki for more in-depth descriptions
| Graphics & Sound | |
|---|---|
| Enable to revert to basic spinning animation | |
| Background color of wheel when running | |
| Text & border color of wheel when running | |
| Images on both sides of wheel when spinning | |
| Play sound effect on spin | |
| Volume of spin sound, (quiet 0-100 loud) |
| Adverts | |
|---|---|
| Enable function to alert (advertise) the price of spinning the wheel from within the program |
|
| Text that will display as price. ex) 50 bits, $1 tip | |
| Time, in minutes, it should wait before showing alert again | |
| Time, in seconds, that the alert should stay on screen |
| Core | ||
|---|---|---|
| Enable function to prevent repeats. Requires at least 2 items on the wheel |


Email
Here
CALL ME!
Number
Here
FIND ME!
Address
Here


from pony.orm import db_session, make_proxy
from pony.orm.core import EntityMeta
from components.Entities import *
from pantra.ctx import *
db: str = 'db'
name: str = ''
entity: EntityMeta
def add_object(node):
render_catalog_form(session, ctx, entity)
def open_object(value):
with db_session:
ent = make_proxy(entity[value])
render_catalog_form(session, ctx, ent)


Classroom Roster
Upload a CSV HERE
| ID | Name | Role | Last Activity | ||
|---|---|---|---|---|---|
| 1 | Jeff Winger | Student | April 14th at 8:30am |<EMAIL_ADDRESS>| |
| 2 | Britta Perry | Student | April 14th at 8:31am |<EMAIL_ADDRESS>| |
| 3 | Annie Edison | Student | April 16th at 10:21pm |<EMAIL_ADDRESS>| |
| 4 | Shirley Bennett | Student | April 16th at 5:08pm |<EMAIL_ADDRESS>| |
| 5 | Troy Barnes | Student | April 10th at 8:30am |<EMAIL_ADDRESS>| |
| 6 | Abed Nadir | Student | April 18th at 8:30am |<EMAIL_ADDRESS>| |
| 7 | Pierce Hawthorne | Student | April 18th at 8:30am |<EMAIL_ADDRESS>| |
| 8 | Ben Chang | Student | April 17th at 8:30am |<EMAIL_ADDRESS>| |
| 9 | Dean Pelton | Teaching Assistant | April 18th at 8:31am |<EMAIL_ADDRESS>| |
| 10 | Ian Duncan | Teaching Assistant | April 19th at 9:12am |<EMAIL_ADDRESS>| |
| 11 | Garrett Lambert | Student | April 18th at 8:29am |<EMAIL_ADDRESS>| |
| 12 | Magnitude Youngblood | Student | April 18th at 8:30am |<EMAIL_ADDRESS>| |
| 13 | Alex Starburns | Student | April 1st at 9:41pm |<EMAIL_ADDRESS>| |
| 14 | Vicky Lambert | Student | April 12th at 2:46pm |<EMAIL_ADDRESS>| |
| 15 | Fat Neil | Student | April 10th at 1:52pm |<EMAIL_ADDRESS>|
Add a student


Appliances Online Black Friday Deals Announced
by Jan ArrezaFor those interested in some great deals and discounts across a wide range of appliances, Appliances Online has announced details of its annual Black Friday deals.
The deals will commence November 29 and will extend through to Cyber Monday on December 2, 2019, so mark your calendars now and don’t miss out on some huge savings for Christmas.
Top deals include:
- 46% off Bosch AT24261AU 8kg Front Load Washing Machine ($818)
- 45% off Esatto ETL95.1 9.5kg Top Load Washing Machine ($455)
- 46% off Bosch WVG28420AU 8kg/4.5kg washer/dryer combo ($1,086)
- 38% off Bosch SMS50E32AU Freestanding Dishwasher ($865)
- 29% off Lemair 268L Top Mount Fridge ($446)
- 40% off Samsung QA55Q75RAWXXY 55” Smart QLED TV ($2,023)
- 43% off Samsung UA75RU7100WXXY 75” Smart LED TV ($1,968)
Appliances Online is renowned for award-winning service, the largest range of appliances online, 24/7 Australian customer service, as well as free, next-day delivery.
For more information on Appliance Online’s Black Friday deals, please click here.


The sky is never the limit, but it sure is a great place to be! Welcome to Sora.
Sora is a Showdown league server you can challenge, join, or just hang around on.
Visit the server now!
Starting a challenge is quick and easy! Just follow the rules and instructions, and we'll have you registered for one in no time.
Challenger Rules
Do you think you have what it takes to be a Soran league member? Joining is simple and painless... Well, for the most part, anyways!
Member Rules


Spring A short spring is expected in some parts of the state, especially in the northern parts North Bengal. That is the time when Holi takes place. Summer The summer season extends from first week of March to June . While the summer in the delta region is noted for excessive humidity, the western highlands experience a dry summer like northern India, with the highest day temperature ranging from 38 °C (100 °F) to 45 °C (113 °F).[1] The average temperature is 30 degrees Celsius.


Before Change
logging.debug(err_msg, exc_info=True)
sys.exit(err_msg)
version = stdout.strip()
if version != EXPECTED_VERSION:
logging.warning("The version of the Azure CLI (%s) does not match the "
"expected version (%s). This may result in "
"incompatibilities which will cause commands to fail. "
"Please install the reccomended version to ensure "
"compatibility.", version, EXPECTED_VERSION)
def _HandleProviderImported(sender):
assert sender == providers.AZURE, sender
_CheckAzureVersion()
After Change
sys.exit(retcode)
version = stdout.strip()
if version != azure.EXPECTED_CLI_VERSION:
err_msg = (
"The version of the installed Azure CLI ({installed}) does not match "
"the expected version ({expected}). This may result in "
"incompatibilities that can cause commands to fail. To ensure "
"compatibility, install the recommended version of the CLI by "
"executing the following command:{sep}{install_cmd}".format(
expected=azure.EXPECTED_CLI_VERSION, install_cmd=_CLI_INSTALL_CMD,
installed=version, sep=os.linesep))
if FLAGS.azure_ignore_cli_version:
logging.warning(err_msg)
else:
logging.error(
"%s%sTo bypass this CLI version check, run PerfKit Benchmarker with "
"the --azure_ignore_cli_version flag.", err_msg, os.linesep)
sys.exit(1)
def _HandleProviderImported(sender):
assert sender == providers.AZURE, sender
_CheckAzureVersion()


---
layout: post
title: Pushing Custom Vagrant Boxes to Vagrant Cloud
class: 'post'
logo: 'assets/images/utilities/home_icon.png'
current: about
cover: 'assets/images/utilities/IMG_75751.JPG'
date: 2020-07-08 19:25:00
tags: about
subclass: 'post tag-tutorials'
categories: 'about'
navigation: True
---
I use Vagrant very heavily in my daya to day work. That means I have to create and destroy virtual machines at a very past rate.
I decided to create a base image with all basic tools I use and publish it to Vagrant Cloud and use it in my subsequent VM's. So if this fits your use case too, follow along....
--authorization-mode=RBAC
cd ~
mkdir centos7
Use the below configuration to prepare your base image
Testing


netty in action 读书笔记
■ Threading model overview
■ Event loop concept and implementation
■ Task scheduling
■ Implementation details
we must always guard against the possible side effects of concurrent execution, it’s important to understand the implications of the model being applied (there are single-thread models as well). Ignoring these matters and merely hoping for the best is tantamount to gambling—with the odds definitely against you.
忽视这些事情，仅仅是希望得到最好的，就等于赌博，而你的胜算是绝对的。
Java 5 then introduced the Executor API, whose thread pools greatly improved performance through Thread caching and reuse.
java5才开始的Thread的缓存和重新利用的线程池应用。
Netty’s EventLoop is part of a collaborative design that employs two fundamental APIs: concurrency and networking. First, the package io.netty.util.concurrent builds on the JDK package java.util.concurrent to provide thread executors. Second, the classes in the package io.netty.channel extend these in order to interface with Channel events.
EventLoop的设计的基础：并发性和网络性。
event-handling logic must be generic and flexible enough to handle all possible use cases. Therefore, in Netty 4 all I/O operations and events are handled by the Thread that has been assigned to the EventLoop.
事件处理逻辑需要足够的灵活能够处理所有的事件。
The ScheduledExecutorService implementation has limitations, such as the fact that extra threads are created as part of pool management. This can become a bottleneck if many tasks are aggressively scheduled.
netty的定时任务：
ScheduledFuture<?> future = ch.eventLoop().scheduleAtFixedRate(...);
future.cancel(mayInterruptIfRunning)
Netty’s EventLoop extends ScheduledExecutorService, so it provides all of the methods available with the JDK implementation, including schedule() and scheduleAtFixedRate(), used in the preceding examples. The complete list of all the operations can be found in the Javadocs for Scheduled- ExecutorService.3
EventLoop扩展了ScheduledExecutorService接口，这个是比较的精彩的一个实现。所以EventLoop能够响应ScheduledExecutorService的所有的方法。
The superior performance of Netty’s threading model hinges on determining the identity of the currently executing Thread; that is, whether or not it is the one assigned to the current Channel and its EventLoop. (Recall that the EventLoop is responsible for handling all events for a Channel during its lifetime.)
当前执行的线程，当前的Channel，EventLoop 这三者是什么的关系？？
ScheduledFuture<?> futrueres = ctx.channel().eventLoop().scheduleAtFixedRate(thread, 1, 1, TimeUnit.SECONDS);
<V> ScheduledFuture<V> schedule(final ScheduledFutureTask<V> task) {
if (inEventLoop()) {
scheduledTaskQueue().add(task);
} else {
execute(new Runnable() {
@Override
public void run() {
scheduledTaskQueue().add(task);
}
});
}
return task;
}
@Override
public boolean inEventLoop(Thread thread) {
return thread == this.thread;
}


Make a file to encode
Start Recording
Stop Recording
play
Encode File
encode
play encoded file
To record a second time click here to refresh


#include "_inc_head.html"/>
| |
Dear ${userName}, |
| |
| |
The email contains a link to reset yours account password! It will expire after 2 weeks!
Current auto-generated password is ${password}
Click here to reset password with 3six5 Human Capital talent recruitment portal.
Please contact us at<EMAIL_ADDRESS>if you have any queries.
We wish you all the best in your career search.
|
|
<#include "_inc_foot.html"/>


Employee Roster
Andrew
Team Manager
<EMAIL_ADDRESS>Id Number:1
Officenuber/School/Github: 1
Lulu
Summer Intern
<EMAIL_ADDRESS>Id Number:33
Officenuber/School/Github: Mines
Huxley
Science Engineer
<EMAIL_ADDRESS>Id Number:735
Officenuber/School/Github: huxley


Introduction
Welcome to the Picopico Sequencer!
Picopico Sequencer is a Flash-free and purely HTML5 written music sequencer. It describes music in MML and has a piano-roll-style
visualization. Even though it is not implemented as of now, it will have the ability to edit music in GUI.
The Japanese word "Picopico" generally refers to the sounds produced by the traditional video game consoles such as the Family Computer and
Super Family Computer(SFC), which are also known as NES and SNES in English-spoken countries. So the name "Picopico Sequencer" suggests that
the program can only produce such eh...(I don't know how it can be described in English) primitive sounds.
However, there is a way to break the limit, which is explained later.
Notes
- Currently, due to the Web Audio API I gurantee that only the Google Chrome would run it completely as I expect.
- If you have trouble in saving files to the local system/opening files from the local system, try to launch Chrome with the --allow-file-access-from-files switch on.
Basics
Picopico Sequencer is a web-based music sequencer which uses MML for music notation. That means that you must first write some MML source in order for it to play some music. For a brief tour of MML, see sample sources on the server. For the grammar of MML itself, see the following grammar reference.
Interfaces
1: Compile button
Compiles the MML source and automatically starts playing.
2: Play/Hold button
Plays compiled music and holds on the music while playing.
3: Stop button
Stops playing.
4: New button
Creates a new file.
5: Open button
Opens a file previously saved on LocalStorage, the server or the local system.
6: Save button
Saves the MML to LocalStorage, the server or the local system.
7: About button
Opens the "about this program" page.
8: The side bar
Shows various properties and informations on the music and a selected note.
9: The tool bar
The tool bar for editing MML in GUI. It is not functional currently though...
10: Main pane
This is the main area where you can view the music score, get help or edit MML source.
11: The status bar
Tells you various states. And it shows the elapsed time from the beginning of the music in ticks while playing.
Quick reference for MML grammar
As you might know, MML has many dialects. It is often the case that although some two music sequencers are said to use the same MML processor, they actually have slightly different syntaxes and commands. So the following refereces may contain informations only valid for Picopico Sequencer.
Legends
- () : Represents arguments. Unlike the programming languages, you don't need to write the parentheses in MML source.
It also represents a group of characters referring to commands. - [] : Suggests that it can be ommited.
- "" : Double-quoted signs have to be explicitly written in MML source.
- xxx-xxx : Indicates a range of letters, numbers etc.
- XXX : Letters in capital refer to commands and those letters have to be put in MML source as they are.
Note that the case is not significant.(So xxx and XXX refer to the same command.)
Pitch and note duration
(A-G)([accidentals, step, gate, velocity]) where...
- accidentals = (!#+-) : accidentals
- step = 2n(n = 0, 1, 2...) or *0~*32767 : the step time
- gate = 2n(n = 0, 1, 2...) or *0~*32767 : the gate time
- velocity = 0~127 : velocity
A note, which is an "atom" in musical notation, is notated as a letter.
With followed by any of the following signs "!","#","+","-", the note is treated like notes with sharps or flats. Each sign represents a "natural", "sharp", "sharp" and "flat" respectively and can be followed by other accidentals.
The note command can take additional three arguments. The first represents the step time which is the duration in which
the note should be played. It usually takes a note value. And it is worth noting that if step is ommitted the default
value set by a "L" command will be applied.
In addition, you can express "step" in ticks instead of a note value. What is notated in ticks can be written like
"*some_number".
Furthermore you can lengthen the duration by adding "^"(circumflex) and an extra duration.
And dots after the step time lengthen the note duration by half the preceding number.
The second parameter called "gate" refers to the gate time which is the real duration in which the note will be played.
Finally the last named "velocity" literally means the velocity which is equivalent to the volume in Picopico Sequencer.
example 1:
cdef edc /It plays the sequence "CDEF DEC" with each note in the default length
c++++ /This is equivalent to d++(=e)
c- /This means a flat C, which is actually a B.
c!
example 2:
c /in the default duration
c4 /A quarter note of C
c+8 /An eighth note of sharp C
example 3:
c*480 /This is the same as writing "c4"
c*480.. /You can add dots, which is explained later on
example 4:
c1^1 /in the same duration as two whole notes
c4^*480^8 /You can specify some of the durations in ticks
example 5:
c4, 8 /It describes the note as a quarter note, but it actually sounds as an eighth note（so you can say it denotes a staccato)
c, 8 /same as above(if the default length is set to 4)
example 6:
c4,,127 /Played at the maximum volume
c,,-20 /Plays a C note at 20 less in velocity than the last one
Rests
R([step]) where...
- step = 2n(n = 0, 1, 2...) or *0~*32767 : the step time
A rest, which is the other "atom" in music notation, is notated as the letter "r". Because it is identical in usage to the note command except that the rest command can take just one parameter, I'm not going to dig into this command any further.
e.g.
r4 /A quarter rest
r4.. /It is 4+8+16 in duration
r4^8^16 /The above example can be written like this
r*480 /You can specify it in ticks
Definition of a track
"("T (number)")"
"["TRACK (number)"]" where...
- number = 1~ : the track number
Defines a new track. You can define any number of tracks as long as your computer allows.
e.g.
(t1)
[track 2]
Key signatures
"["K.SIGN (key1, key2...)"]" or "["K.SIGN (sign note1, note2...)"]"
"["KEY_SIGNATURE (key1, key2...)"]" or "["KEY_SIGNATURE (sign note1, note2...)"]" where...
- key1, key2... = (+-#)(A-G) : pitches
- sign = (+-#) : a sign representing sharps or flats
- note1, note2... = (A-G) : notes that will have accidentals
Changes the key signature. As of now it can't take the key names such as CMajor, EbMajor and AMinor. Maybe it can take those names in the future, though.
The natural sign comes to play when combined with this command, because in MML accidentals don't cancel the key signatures(they actually raises, or lowers, the pitch by 1 semi-tone).
e.g.
[k.sign +c, +f] f! /Because of the key signature, F always has a sharp on it but the sign cancels the effect.
[k.sign -bea] b- /Because the key signature already has a flat on B, the minus sign lowers the pitch by another 1.
(So it can be considered as a double-flat)
Changing octave
O(octave) where...
- octave = 1~8 : the octave
Sets the octave. The initial value is 4 and a Middle C can be written as "O4 c".
It is worth noting that operators "<" and ">" raise, or lower, the octave by 1.
e.g.
o3
o8
o4 c /Plays a middle C
o4 < /Here is as high in octave as it is when you explicitly write "o5"
Controlling the default length
L(length) where...
- length = 2n(n = 0, 1, 2...) : the default note length
Sets the default length(the value set to the step time when ommited). The initial value is "L4". Currently the "length" parameter can be only specified with a note value.
e.g.
l8
Changing the volume
V(velocity)
"["VELOCITY (velocity)"]"
U(volume)
"["VOLUME (volume)"]" where...
- velocity, volume = 0~127 : the volume
Sets the default volume. Although there are four ways of notation, they are all identical in functionality. If you omit the velocity parameter in a note command, it is set to the default volume.
e.g.
v127
u127
Setting the tempo
T(tempo)
"["TEMPO (tempo)"]" where...
- tempo = 30~300 : the tempo
Sets the tempo in beats per minute. Note that the above values are just the preferable values and therefore no error will be seen if out of the range. The initial value is 120.
e.g.
t100
t60
Changing the sound
@(program_number)
"["PROGRAM (program_number)"]" where...
- program_number = 0, 1, 2... : a number representing the type of sound
Changes the sound type. By default there are 6 types of sound. The following table shows the relations between program numbers and sound types.
| Program number | Sound type |
|---|---|
| 0 | Sine Wave |
| 1 | Square Wave |
| 2 | Sawtooth Wave |
| 3 | Triangle Wave |
| 4 | M-Shaped Wave |
| 5 | Noise |
e.g.
@0
[program 1]
Tuplets
"{"some MML"}"([step]) where...
- step = 2n(n = 0, 1, 2...) or *0~32767 : the step time
It plays the MML in curly braces within the "step". The "step" can be specified in the same way as the note command.
If the step is ommited the default duration will be applied as in the note command.
e.g.
{cde}4 /the triplet
{cdef}4.
Chords
"""some MML"""([ticks, delay]) where...
- ticks = 0~32767 : the duration in ticks
- delay = 2n(n = 0, 1, 2...) or *0~32767 : the delay in which each note will be played
It treats the double-quoted notes as a chord. You can write a duration in the double quotation marks only once.
e.g.
"c4eg" /A chord of C, E and G
"ceg"480 /equivalent to the above
"c4eg", 10 /plays a C, E and G with the delay of 10 ticks between the notes(so it can be thought of as an arpeggio)
Macro definitions
"["DEFINE macro_name"("[args]")""'"(macro_body)"'""]" where...
- macro_name = a character sequence in alphanumerics and underscores : the name of the macro
- args = same as macro_name : formal parameters for the macro
- macro_body = some MML code : the MML code which would be substituted for the macro
It is a macro. But unlike the one in the C programming language, the compiler will check the semantics before actually replacing the texts.
Macros can take parameters and they can be referred to as "$(a parameter name)" in the macro body.
e.g.
[define CMajor(l)'"c$(l)eg"'] /Defining a macro which yields a chord of "C"
Using macros
"$""{"(macro_name)[":"(args)]"}" where...
- macro_name = a character sequence in alphanumerics and underscores : the name of the macro
- args = a valid string in MML : arguments for the macro
Call macros introduced by the macro definitions.
Macros can take the less or same number of arguments than that of the formal parameters. If the argument list has
the less number of arguments than the formal parameter list does, the compiler will detect it and automatically fill
them with empty strings.
Macros can take any valid MML codes as arguments except line breaks and another macro call.
e.g.
l8 cded ${CMajor:1} /called the above macro, passing in 1 as the argument. This will be expanded to `l8 cded "c1eg"'.
l8 cded ${CMajor}ded8^1 /The above macro can be used like this. In this case, it'll yield `l8 cded "ceg"ded8^1'.
l8 cded ${CMajor:4^8}>c8^2 /This will be expanded to `l8 cded "c4^8eg">c8^2'.
Original sound wave definitions
"["FUNCTION "("args")""{"(function_body)"}""]" where...
- args = valid identifiers in JavaScript : formal parameters of the function
- function_body = a code snippet in JavaScript : a JavaScript code which generates a sound wave
Defines a function which generates a new sound wave. The function have to obey the JavaScript grammar and will be called, with the first argument being the elapsed time from the beginning of the current note(in seconds) and the second being the desired frequency(in hertz).
Although you can write any valid JavaScript code in the curly brackets, there are times when you cann't use some global variables.
e.g.
[function (time, freq){return Math.sin(freq * 2 * Math.PI * time);}] /Defined another sine wave function.


Udacity
This is a link to Udacity
Coursera
This is a link to Coursera
DataCamp
This is a link to DataCamp
This is me
Hello there, awesome person!


Quicksort, a Divide and Conquer Sorting Algorithm.
Quicksort is an efficient divide-and-conquer sorting algorithm.
We pick a pivot from the array to be sorted. We can pick at random, or choose the beginning, midpoint, or endpoint. In this case, we choose the midpoint, Math.floor((left+right)/2)
.
Now that we have a pivot, we sort all elements in the array into two groups: one group of elements less than the pivot, and one group of elements greater than the pivot.
We do this with a partition
function that:
- Swaps the pivot to the front of the array
- Iterates from left-to-right (
i++
) and right-to-left (j--
) through the array.
- When arr[i] > pivot, we stop, saving position
i
. - When arr[j] < pivot, we stop, saving position
j
. We swap positionsi
andj
, since they are out of place with respect to the pivot.
When j>i, all of the elements are ordered with respect to the pivot (smaller to the left, larger to the right).
We can now swap the pivot back into the middle of the array and return the index of the pivot.
Quicksort uses this index to recursively sort the smaller & larger subarrays using partition
.
We initially invoke qSort
like this: qSort(arr, 0, arr.length-1)
. As the array reaches its sorted state, the left and right indices grow closer together. When the left index is greater than or equal to the right index, we know the array is sorted, because the pivot is already put in its proper place, and the lengths of the unsorted subarrays on either side of the pivot are zero.
function qSort(arr, left, right) {
if (left >= right) {
return;
}
let pivot = partition(arr, left, right);
qSort(arr, left, pivot - 1);
qSort(arr, pivot + 1, right);
return arr;
}
function partition(arr, left, right) {
const swap = (a, b) => {
let temp = arr[a];
arr[a] = arr[b];
arr[b] = temp;
};
let mid = Math.floor((right + left) / 2);
let pivot = arr[mid];
swap(mid, left);
let i = left + 1;
let j = right;
while (i <= j) {
while (i <= j && arr[i] <= pivot) {
i++;
}
while (i <= j && arr[j] > pivot) {
j--;
}
if (i < j) {
swap(i, j);
}
}
swap(i - 1, left);
return i - 1;
}


The command 'libra' contains four subcommands 'account', 'transaction', 'wallet', 'ledger'.
When you enter 'libra' without any other parameters and subcommands, the help information below is displayed.
%libra
USAGE:
libra [options] command [command parameters ...]
Optional arguments:
-a | --host HOST Host address/name to connect to. [default:testnet]
-p | --port PORT Admission Control port to connect to. [default: 8000]
-v | --verbose Verbose output
-V | --version Show program's version number and exit
-h | --help Show this help message and exit
Use the following commands:
account | a
Account query by address
transaction | t
Transaction query
wallet | w
show account information of a wallet derived from mnemonic file
ledger | lg
show ledger info of Libra blockchain
%libra account
USAGE:
account <params>
Use one of the following params for this command:
config | c
Show the config of Libra
balance | b <account_address>
Get the current balance of an account by address
sequence | s <account_address>
Get the current sequence number for an account by address
state | as <account_address>
Get the latest state for an account by address
txn_acc_seq | ts <account_address> <sequence_number> <fetch_events=true|false>
Get the committed transaction by account and sequence number. Optionally also fetch events emitted by this transaction.
mint | mintb | m | mb <receiver_account_address> <number_of_micro_libra>
Mint micro_libra to the address. Suffix 'b' is for blocking
rotate_auth_key | rak <sender_account_id_in_wallet>|<address> <public_key> <mnemonic_file_path>
Rotate the authentication key of account in wallet.
%libra transaction
USAGE:
transaction <params>
Use one of the following params for this command:
transfer | transferb | t | tb <sender_account_id_in_wallet>|<address> <receiver_account_address> <number_of_micro_libra> <mnemonic_file_path>
Transfer coins (in micro libra) from one to another. <sender_account_address> should exsits in <mnemonic_file_path>. Suffix 'b' is for blocking
show | s <version number>
Get the transaction by version
range | r <start_version> <limit> [fetch_events=true|false]
Get up to <limit> number transactions from <start_version>
latest_version | lv
Get the latest version of transaction on the blockchain
latest | l
Get the latest transaction
%libra wallet
USAGE:
wallet <params>
Use one of the following params for this command:
show | s <mnemonic_file_path>
Show the mnemonic words, seed and addresses of a wallet
accounts | a <mnemonic_file_path>
Show the keypair and address of accounts in a wallet
balance | b <mnemonic_file_path>
Get the balance of all accounts in a wallet
create_wallet | cw <mnemonic_file_path>
create a new wallet and save the mnemonic file to <mnemonic_file_path>
create_account | ca <creator_id> <mnemonic_file_path>
Create new account by exsiting account and sync to the wallet's mnemonic file.
%libra ledger
USAGE:
ledger <params>
Use one of the following params for this command:
info | i
Get the latest ledger info of Libra blockchain
time | t
Get the start and latest ledger time of Libra blockchain


Screen:
width: ,
height:
Move: SHIFT+(CONTROL+)DRAG, Scale slowly: SHIFT+WHEEL
Background:
Ambient Light[]:
intensity:
distance:
decay:
shadow:
preview
intensity:
preview
intensity:
distance:
decay:
shadow:
preview
Camera: rotateX = ,
rotateY = ,
distance = ;
Center: x = ,
y = ,
z =
Loading
e_Simple3DView 20190908 (https://github.com/yamule/e_Simple3DView)
powered by Three.js (https://threejs.org/)


This documentation relates to Opera's now deprecated .oex Extension API framework for Opera versions <= 12.15 and also provided by our OEX2NEX shim library.
For the latest Opera Extensions API documentation for Opera versions > 12.15 please consult the latest Opera Extensions API documentation online.
The readonly readyState
attribute exposes the current document readiness of the page within the browser tab.
An HTML or XML file has its current document readiness set to loading
when it is created, and complete
when the file has finished loading. When the value is set by the browser or other user agent, a simple event called readystatechange
is fired on the Document
object.
readonly DOMString readyState // maps to document.readyState
The following example creates a button on the browser toolbar. Then, a new tab is created and given focus. When the tab's page has finished loading, the button's badge turns green.
//
// The background process (e.g. index.html)
//
// Specify the properties of the button before creating it.
var UIItemProperties = {
disabled: false,
title: "Example extension",
icon: "images/icon_18.png",
badge: {
backgroundColor: '#cc0000',
color: '#ffffff',
textContent: '-'
}
};
// Create the button and add it to the toolbar.
var button = opera.contexts.toolbar.createItem( UIItemProperties );
opera.contexts.toolbar.addItem(button);
// Create a new tab and give it focus
var tab = opera.extension.tabs.create({url: 'http://dev.opera.com/', focused: true});
// Start a timed loop
var loop = setInterval(function() {
// When the page has finished loading, turn the badge green
if (tab.readyState === 'complete') {
button.badge.backgroundColor = '#00cc00';
button.badge.textContent = '✓';
// Don't forget to stop the loop
clearInterval(loop);
}
}, 100);


Selmor is miles ahead – Bazuka
Australia based Afro fusion musician Mabasa “Bazuka” Ziyambi has praised Selmor Mtukudzi for her professionalism.
by Trust KhosaThe Kadoma bred singer who has since settled abroad in Australia, said this on the sidelines of their tour currently underway.
He also praised Selmor’s husband for complementing his wife in her quest to conquer the globe.
Related Articles
Sep 30, 2019 26,506 1
Sep 30, 2019 18,024 51
Selmor Mtukudzi takes over dad’s role
Sep 22, 2019 29,180 17
By public demand . . . Selmor added to Tuku tribute line-up
Sep 18, 2019 33,221 3
“I have known selmor and Tendai for quite a long time now and I believe their combination is formidable.
“Tendai’s guitar work gently fuses with Selmor’s vocals as well as dance moves. I believe Selmor is among the best female artistes and her open minded approach in discussing business issues with take her places.
“She is kind genuine and flexible with time allocations as she easily associates well with her fans,” he said.
Asked whether was ready for a collaboration with Selmor if time permits, he said:
“ Absolutely, she is a clear evidence of a product of a legendary icon and carries father’s legacy with passion, very talented and based on her performance in Sydney people were shell shocked as it looked like Dr Oliver Mutukudzi was in the building.
“Since I got some musical tips from the father, l can see Selmor as nothing but a true replica to the father.”
He also praised Selmor’s handlers who have made him understand Selmor better.
“The relationship between me and Selmor was made smooth sailing with understanding that she is being managed by Josh Hozheri, a businessman and a close friend to me, naturally he made it easier for me to have a chance to chat with Selmor and the band.
“He promised that he will maintain the relationship that was there between us and Dr Oliver Mtukudzi.”
He also opened up of the challenges they face as musician plying their trade abroad.
“Life as a musician in diaspora has its own challenges especially that we juggle between work, school and music.
“Language barriers also affect the fan base. We have to explain at times the meaning of the song to the audience but once accepted, you will become a regular,” said.
Bazuka said it was also hard to market their music abroad but vowed to continue doing well.
“I use Youtube and social media to market music as well as community platforms such as Zim communities in Australia as well as a team Led by Simba Antonio who doubles as the band stage Manager and and communications and liason officer. Also some Zimbabwean friends make some noise on our behalf.
“It’s a bit challenging to understand how I manage but because I love music things simply happen. It helps in relieving stress and at times I sing for my mental health patients as musical therapy.
“I priorities what needs my urgent attention,” he said.
Meanwhile, Bazuka has released two videos with a total costs of US$3000. H-Metro


And it begins! I'm starting to take applications for the very first artist in residence at Tiny Apartment, my home in Montreal, Canada.
Tiny apartment is an idea that I had a few months ago to create a community of artists in Montreal. I haven't lived in this city for six years, and I recently find myself back here with a new perspective and a desire to create something meaningful for emerging artists. After having completed art school in Vancouver, BC, I found the art community to be a difficult world to break into. Now, while rediscovering Montreal, I thought that the best way to find the art world and community was not to look for it, but to directly contribute to it by building it around my own practise.
My mission is to connect local artists with new and upcomming artists from around the world. I want to provide a space where artists can work and exhibit their art to the public.
This project is completely experimental, as I have not yet facilitated anything like this before. It is flexible and open to shifting identity and concept, and will embrace exterior influeces. Unlike traditional art spaces, Tiny Apartment puches the limitations of conventional exhibitions and considers the idea that any space can be made into a place to facilitate dialogue around visual language.
I'm ready to introduce this idea to the public and see what shapes it will transform into from here. Apply now and be part of the community.


Getting started¶
We’ve created a data science like bash script for linux to start the template for projects in Python. This script contains the three above template types. Your analysis doesn’t have to be in Python, but the templates do provide some Python boilerplates.
Requirements¶
- Python 2.7 or 3.5
- cookiecutter Python package >= 1.4.0: pip install cookiecutter
- Linux OS (We use Centos 7 but whatever you want will do the job)
name: sphinx
dependencies:
- python=3.5 # or 2.7
- pip:
- sphinx==1.5.6
- Flask-Sphinx-Themes *(optional, is only an example!)*
- recommonmark
and execute:
$ conda env create --file environment.yml
$ source activate sphinx
The Script¶
In the new_project.sh script there are simple instructions to start a new project from scratch.
#!/bin/bash
#2018, Parrondo https://github.com/parrondo/quant-trading-project-structure
#Starting a new project is as easy as running this command at the command line. No need to create a directory first,
#the cookiecutter will do it for you.
#Conda python environment activation where cookiecutter lives.
source activate cookiecutter
echo -e "What kind of new project do you want? \nData-Science [ds] \nDeepLearning [dl] \nData-Science-Luigi [lu] \nSphinx [sp]: "
read answer
case $answer in
ds|Ds|dS|DS)
echo "Agreed, you want a Data-Science new project"
#Creating files and project folder structure with cookiecutter-data-science
cookiecutter https://github.com/drivendata/cookiecutter-data-science
;;
dl|Dl|dL|DL)
echo echo "Agreed, you want a DeepLearning new project"
#Creating files and project folder structure with cookiecutter-deeplearning
cookiecutter https://github.com/tdeboissiere/cookiecutter-deeplearning.git
;;
lu|Lu|lU|LU)
echo "Agreed, you want a Data-Science with Luigi new project"
cookiecutter https://github.com/ffmmjj/luigi_data_science_project_cookiecutter
;;
sp|Sp|sP|SP)
echo "Agreed, you want a Sphinx documentation new project"
cookiecutter https://github.com/carschar/cookiecutter-sphinx.git
;;
*) echo "Invalid input"
;;
esac
Starting a new project¶
Starting a new project is as easy as running this command at the command line. No need to create a directory first, the cookiecutter you select in the dialog will do it for you. Remember to change the file new_project.sh as executable file, also you’ll place the file into the parent folder of the new project structure. Then, execute:
$ ./new_project.sh
this command will create my_project structure (see example below)
Example of Directory structure (Data Science type project)¶
After finishing setup, some build folders should be ignored during git commit. By default, these folders are
Data is immutable¶
Don’t ever edit your carefully and usually expensive downloaded raw data, especially not manually, and especially not in Excel or whatever whorksheet. Don’t overwrite your raw data ever. Don’t save multiple versions of the raw data. Treat the data (and its format) as immutable. The code you write should move the raw data through a pipeline to your final analysis (Luigi is perfect for this task). You shouldn’t have to run all of the steps every time you want to make a new figure, but anyone should be able to reproduce the final products with only the code in src and the data in data/raw.
Also, if data is immutable, it doesn’t need source control in the same way that code does. Therefore, by default, the data folder is included in the .gitignore file. If you have a small amount of data that rarely changes, you may want to include the data in the repository. Github currently warns if files are over 50MB and rejects files over 100MB.
Notebooks are for exploration and communication¶
Notebook packages like the Jupyter notebook, are very effective for exploratory data analysis. However, these tools can be less effective for reproducing an analysis. When we use notebooks in our work, we identify the notebooks files. For example, 01-ram-exploratory.ipynb contains initial explorations, whereas 01-ram-reports.ipynb is final work that can be exported as html to the reports directory. Since notebooks are challenging objects for source control (e.g., diffs of the json are often not human-readable and merging is near impossible), we recommended not collaborating directly with others on Jupyter notebooks. There are two steps we recommend for using notebooks effectively:
- Follow a naming convention that shows the owner and the order the analysis was done in. We use the format: <step>-<user>-<description>.ipynb (e.g., “01-ram-data-preparation.ipynb”, “03-ram-returns-visualization.ipynb”).
- Refactor the good parts. Don’t write code to do the same task in multiple notebooks. If it’s a data preprocessing task, put it in the pipeline at src/data/make_dataset.py and load data from data/interim.
Build from a Conda environment¶
The first step in reproducing an analysis is always reproducing the computational environment it was run in. You need the same tools, the same libraries, and the same versions to make everything play nicely together. One effective approach to this is use Anaconda. By listing all of your requirements in the repository (it is include a requirements.txt file) you can easily track the packages needed to recreate the analysis. Here is an example of good workflow:
1. $ conda create --name myenv (when creating a new project)
2. $ source activate myenv (to activate the environtment)
3. (myenv)$ pip install the packages that your analysis needs
4. Run pip freeze > requirements.txt (to pin the exact package versions used to recreate the analysis)
5. If you find you need to install another package:
run pip freeze > requirements.txt again and commit the changes to version control.
Usually you have more complex requirements for recreating your environment, then you should consider a virtual machine based approach such as Docker or Vagrant. Both of these tools use text-based formats (Dockerfile and Vagrantfile respectively) you can easily add to source control to describe how to create a virtual machine with the requirements you need. Once you are familiarized with this virtual machine techniques, they works like a charm.
If you need orchestration then us Kubernetes, Mesos, and Docker Swarm. These last ones are more for production scale and so, out of the scope of this document.
Secrets and configuration should be kept out of version control¶
You really don’t want to leak your username and password on Github. Here’s how to do this:
Store your secrets and config variables in a special file¶
Create a .env file in the project root folder. Thanks to the .gitignore, this file should never get committed into the version control repository. Here’s an example:
# example .env file
DATABASE_URL=mongodb://username:password@localhost:5432/dbname
AWS_ACCESS_KEY=myaccesskey
AWS_SECRET_ACCESS_KEY=mysecretkey
OTHER_VARIABLE=something
Use a package to load these variables automatically¶
If you look at the stub script in src/data/make_dataset.py, it uses a package called python-dotenv to load up all the entries in this file as environment variables so they are accessible with os.environ.get. Here’s an example snippet adapted from the python-dotenv documentation:
# src/data/dotenv_example.py
import os
from dotenv import load_dotenv, find_dotenv
# find .env automagically by walking up directories until it's found
dotenv_path = find_dotenv()
# load up the entries as environment variables
load_dotenv(dotenv_path)
database_url = os.environ.get("DATABASE_URL")
other_variable = os.environ.get("OTHER_VARIABLE")
Default folder structure cuasi-inmutability¶
To keep this structure broadly applicable for many different kinds of projects, we think the best approach is to adapt the folders to your project, but be very conservative in changing the default basic structure for all projects. This is what we say cuasi-inmutable. Now you have a folder-layout label specifically for your trading development works to add, subtract, rename, or move folders around.
Be careful and be consistent!


Driving and Parking Directions
Due to the Raleigh Marathon on Sunday morning, the following roads will be closed which will affect your driving direction to Fairgrounds:
If you are coming from Cary, Holly Springs or Fuquay-Varina using I-440:
If you are coming from Cary, Morrisville or Durham using I-40, NC-54, or Hillsborough Street, there will be no changes in your driving directions to the State Fairgrounds.
View N.C. State Fairgrounds in a larger map
- Hillsborough Street will be closed east of Blue Ridge Road (from Blue Ridge Road to downtown Raleigh) from 7:00am to 10:00am. There will be no access to Hillsborough Street from I-440 (Beltline) in either direction.
- Blue Ridge Road northbound lanes (K-Mart to Rex Hospital) will be closed between Hillsborough Street and Wade Avenue. The southbound lanes (Rex Hospital to K-Mart) will be open. This closure also includes the exit ramp from westbound Wade Avenue to Blue Ridge Road. If you are on Wade Avenue driving away from Downtown Raleigh, you will not be able to exit onto Blue Ridge Road.
Based on the above road closures and the traffic flow restrictions, we suggest the following directions to State Fairgrounds:
- If you are coming from North Raleigh on I-440:
- Exit at Wade Avenue towards the airport.
- Pass the exit for Blue Ridge Road (the ramp will be closed).
- Exit at Edwards Mill Road and turn left at Edwards Mill Road.
- You will have two options to reach the State Fairgrounds:
- Turn left immediately after the Wade Avenue bridges and take Wade Avenue toward Downtown Raleigh. Then exit onto Blue Ridge Road and turn right on Blue Ridge Road. Enter Gate 11 at Blue Ridge Road.
- Continue on Edwards Mill Road and turn left onto Trinity Road. Enter Gate 9 at Trinity Road.
- Exit at Western Boulevard towards Cary
- Turn right at Blue Ridge Road.
- Turn left at Hillsborough Street and enter Gate 2.
For your convenience, Raleigh police officers will be on the streets to assist and direct you to the Fairgrounds gates.
View N.C. State Fairgrounds in a larger map


The tropical city of Mackay, located midway between Brisbane and Cairns, is the "sugar capital" of Australia. It is a prosperous city and its proximity to the rainforest and the Whitsunday reefs make it a very attractive destination.
This is a good place to stop if travelling either north or south, as most boat facilities and services are available here onsite at Mackay's large boatyard. Cruisers report that prices for repairs can be cheaper here than in Cairns. It is also a useful base if cruising the nearby islands.
Approach Mackay with caution and patience, as plenty of bulk carriers are usually anchored offshore waiting to be loaded at Hay Point. Keep the VHF on scan because the reef pilots now mostly move by helicopter. Be aware that if you have AIS on board, alarms will start sounding on approach, as the many anchored carriers shift about slightly on their moorings - the AIS will pick this up that they are under way.
Position 21°09' 02"S, 149°13′34"E (river entrance)
Mackay Marina is now a well established and modern marina, providing good protection from the weather. On entering, yachts should pass through the first (commercial) area to the marina area, which forms the southern part.
The marina is part of a residential village with a hotel, restaurants, shops, chandlery and shipyard included. It is 15 minutes by car from Mackay town where more extensive provisioning is possible.
Anchoring outside the marina is definitely not advised due to busy shipping, 6m+ tides and exposure to weather.
Last updated March 2013.


There are more chickens on earth than people – 25 billion. There are also more chickens than any other bird species.Chickens can remember over 100 different faces of people or animals.A mother hen turns her eggs about 50 times per day, and can lay more than 300 eggs per year.The record number of eggs laid by a chicken in one day is 7. The record number for eggs laid by a chicken in one year is 371.
Navigating the meat case can be a little confusing these days, but the good news is that all beef is safe, nutritious, and wholesome! Beef farmers and ranchers are proud to offer a variety of choices to meet changing lifestyles and different nutritional needs. They have adapted their practices to provide consumers with the grain-fed.
As for protein options? Anything you’d like! I typically use shrimp tempura and/or sashimi grade tuna, since that’s what’s available near me. When I lived in Virgina I was able to get fresh salmon from local Asian markets, but here in coastal NC my options are limited. You can also add tofu or cream cheese to the rolls if you’d like!


Datamanagers adapter namespace, this contains all the different
datamanager handler implementations to comply with the standard
adapter interface, and with the plugins for hooks.
| Class | Description |
| \Tuxxedo\Datamanager\Adapter\Datastore | Datamanager for datastore |
| \Tuxxedo\Datamanager\Adapter\Language | Datamanager for languages |
| \Tuxxedo\Datamanager\Adapter\Option | Datamanager for options |
| \Tuxxedo\Datamanager\Adapter\Optioncategory | Datamanager for option categories |
| \Tuxxedo\Datamanager\Adapter\Permission | Datamanager for permissions |
| \Tuxxedo\Datamanager\Adapter\Phrase | Datamanager for phrases |
| \Tuxxedo\Datamanager\Adapter\Phrasegroup | Datamanager for phrase groups |
| \Tuxxedo\Datamanager\Adapter\Session | Datamanager for sessions |
| \Tuxxedo\Datamanager\Adapter\Style | Datamanager for styles |
| \Tuxxedo\Datamanager\Adapter\Template | Datamanager for templates |
| \Tuxxedo\Datamanager\Adapter\User | Datamanager for users |
| \Tuxxedo\Datamanager\Adapter\Usergroup | Datamanager for usergroups |
Generated by Tuxxedo Engine 1.3.0 "Intergalactic" Alpha 1 (experimental).


Sleepy Hollow ***
Rated on a 4-star scale Screening venue: Odeon (Bromborough) Released in the UK by UIP on January 7, 2000; certificate 15; 105 minutes; country of origin USA; aspect ratio 1.85:1
Directed by Tim Burton; produced by Scott Rudin, Adam Schroeder. Written by Andrew Kevin Walker; from a screen story by Kevin Yagher, Andrew Kevin Walker; based upon the short story "The Legend of Sleepy Hollow" by Washington Irving. Photographed by Emmanuel Lubezki; edited by Chris Lebenzon.
CAST..... Johnny Depp..... Icabod Crane Christina Ricci..... Katrina Van Tassel Michael Gambon..... Baltus Van Tassel Michael Gough..... James Hardenbrook Jeffrey Jones..... Steenwyck Richard Griffiths..... Phillipse Miranda Richardson..... Lady Van Tassel Casper Van Dien..... Brom Van Brunt
Washington Irving's short story "The Legend of Sleepy Hollow", first published in 1819, is a well-respected folk tale of supernatural secrets, and has survived the generations long enough to spawn several film adaptations -- among them an Emmy-winning mini-series for kids and a Disney animation. When Tim Burton, that distinctive director of twisted heroic journeys and gothic fantasies, decided to do his own remake of the Irving work, the project was expected to be his prestigious bid for Oscar success. If David Lynch can make a subtle movie with a premise as weird as that of "The Straight Story", people thought, surely Tim Burton can take a delicate approach to a classic?
Actually, this "Sleepy Hollow" is as Burtonesque as possible, a gory special-effects extravaganza set in 1799 that plays like a cross between Thomas Hardy and "The Evil Dead". Tim has determined to stay in his own wild world, and along with his screenwriters, Andrew Kevin Walker and Kevin Yagher, has confidently shuffled around the details of Irving's plot for his own purposes. Even the image of the famous literary figure Ichabod Crane has been altered -- he's no longer a lanky, curious schoolteacher who lives where the story is set, but a clumsy New York City police constable played by Johnny Depp.
Burton and Depp's Crane travels to the village of Sleepy Hollow to investigate the murders of three local men -- all of whom were found in the woods without heads. The town elders -- Van Tassell (Michael Gambon), Hardenbrook (Michael Gough), Steenwyck (Jeffrey Jones) and Phillipse (Richard Griffiths) -- inform Crane that they suspect the legendary 'Headless Horsemen' of the crimes, a warrior ghost who is said to stalk and decapitate the inhabitants of the area in search of his own noggin. But the constable does not want to listen, claiming to be a man of science and reason, and searching for a human culprit.
There is fun to be had in just watching Crane try to operate his newfangled scientific gadgets, which are elaborately designed for no visible purpose, with windows and panels and knobs aplenty, which constantly spring out of his control. Depp plays the character as a clearly preposterous man who nonetheless attempts to maintain serious authority, and who rigidly keeps eyes wide open, head upright and mouth poised properly even while cowering from a spider, or shrieking in peril under bed sheets.
The amusingly clumsy fellow soon learns that the Headless Horseman is indeed a real figure, and also finds such sights as a witch and a magical tree. Crane carries out silly interrogations, investigates town records and digs up the victims' graves for further research, getting closer to the explanation behind Sleepy Hollow's odd events, and to a violent confrontation with the villain responsible. There are slow patches, and at times the film gets tangled up in unnecessary confusing details on the way to its simple resolution. But the payoff redeems the flaws, thanks to Burton's visuals, which are not inaccurate to the location and period, but are larger than life, with the depth of Emmanuel Lubezki's photography slightly swelling every image and casting a sinister blue mist over the night air. When the horseman jumps out from these clouds, the camera rushes around in jarring close-ups to follow the havoc he wreaks, and this makes for stunning action sequences.
Admittedly, I expected terrific production values and an amusing Johnny Depp performance from "Sleepy Hollow". Burton, as I keep stressing, is one of the most visually astute of all working filmmakers, and Depp has performed creatively in the challenging title roles of the director's "Edward Scissorhands" and "Ed Wood". The pleasant surprise here is Christina Ricci, a young actress whose recent persona has only been fit for satire, with its rebellious, dead-eyed, flat-voiced arrogance. She is sincere and subtle as Katrina, the innocent maiden who loves and protects Icabod Crane, displaying versatility I believed her to have lost.
No doubt Ricci was just so amazed by the movie's carefully constructed atmosphere that she could not stand in the way of it with her usual distracting sarcasm. "Sleepy Hollow" proves -- as do "Pee Wee's Big Adventure", "Batman", "Edward Scissorhands" and "The Nightmare Before Christmas" -- that the offbeat crannies of Tim Burton's mind are worth visiting, and he knows how to take us into them.
COPYRIGHT(c) 2000 Ian Waldron-Mantgani
Please visit, and encourage others to visit, the UK Critic's website, http://members.aol.com/ukcritic
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


Amazing Tours and Fun
Adventures Waiting for
You in Karnataka
Karnataka is a tapestry of colours, cultures, flavours, landscapes, timelessness and spectacular beauty.It feels like one state with many exlorable worlds.
The art of story-telling comes from passion and creativity. It is embedded within and it is portrayed so naturally and beautifully. Be it drama, dance, music or storytelling, you can witness vivid diversity in terms of cultural dress, traditional dance forms, social and cultural history and so on.
Fall in love with some of the most breath taking and transcendent locations of nature and experience true tranquility that you have most longed for. Be it the Jog Falls or the coffee plantations in the Scotland of India (Coorg) or the spectacular view of the Sunrise at Nandi Hills, Karnataka is where your bucket list is set to begin. When it comes to adventure and exploring inches of Karnataka, there are so many places you will find as you keep visit each place.
Karnataka is widely known mainly for the famous Bandipur National Park but did you know there are totally 27 various Wildlife Sanctuaries and National Parks spread across the state? Karnataka gives huge importance to preserving the wild and wildlife and these sanctuaries are proof of the same. Starting all the way from Bandipur National Park to Bannerghatta National Park and extending further.
| AIRLINES | |
|---|---|
| Air India | Indigo |
| Go Air | Air Asia |
| Spice Jet | TruJet |


Pressing the same shortcut after you have invoked Smart-type Completion will search for chained expressions which have expected type.


We extend networks!
- redefine wireless infomediaries
- incubate plug-and-play architectures
- reinvent granular infrastructures
- leverage best-of-breed technologies
- reinvent out-of-the-box niches
- streamline leading-edge metrics
- mesh impactful markets
- harness rich portals
- aggregate global paradigms
- brand sticky solutions
- embrace leading-edge functionalities
- grow synergistic content
- matrix frictionless niches
- leverage plug-and-play bandwidth


@* * Copyright 2017 HM Revenue & Customs * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. *@ @import uk.gov.hmrc.play.views.html.helpers.{form} @import views.html.helpers.backButtonWithProgress @import models.investorDetails.PreviousShareHoldingModel @(previousShareHoldingModel: PreviousShareHoldingModel)(implicit request: Request[_], messages: Messages) @main_template(Messages("page.investors.DeletePreviousShareHolder.title")) { @backButtonWithProgress(controllers.eis.routes.PreviousShareHoldingsReviewController.show(previousShareHoldingModel.investorProcessingId.get).url, Messages("common.section.progress.details.four"))


Survey to join a university program
Please fill the form and verify your answers before submit.
*
Name
(Full name)
*
Email
*
Phone number
*
Select the career path you prefer
Select
JavaScript
Java
Salesforce
Select the materials you prefer to have in a course.
(Check all that apply)
Documents (PDF and Word)
Classes online
Practical assignments
Teorical assignments
Conferences
Practices in the company
Books (physical)
Any comments or suggestions
Would you like to take another survey at a later time ?
Yes
No
Submit


Project description
Invasive Alien Species Tracker (IASTracker) is an application used to locate invasive
species, whether animal or plant, initially in Catalonia and Belgium, but
adaptable to any other region of Europe. The user feedback can be managed,
viewed and controlled from the Geoportal IASTracker.
One of the main reasons for the loss
of biodiversity in the world is the proliferation of invasive alien species.
This problem has been studied for many years by many experts, environmental
institutions and organizations. Although the impacts of these species are well
known, it is often difficult to know their expansion, distribution and
especially the first contaminated spot in a spared area. Several studies argue
that preventive measures have to be set up to improved the knowledge of the
location of an invasive species and its extension.
IASTracker aims to achieve any type of public,
expert or not, with the common goal of helping to reduce the negative impacts
of invasive species on biodiversity, health and economy of the affected areas.
The IASTracker
App works offline, so when the user does not have data connection on his
Smartphone, by prior downloading records of species in its zone, he can
continue to locate invasive species nearby.
Invasive species described in the
application were selected according to two criteria: the first is the ease of
identification to allow non-expert users to fully participate in the project
and the second criterion is that the chosen species have a strong negative
impact on biodiversity, health and economy. The selection is not a closed list,
it is expected that it can be modified according to the evolution of a
particular species and depending on the geographical area where the observer is
located.
IASTracker is one of the winners of the first
MYGEOSS contest for innovative applications in environmental and social areas
supported by the Joint Research Centre (JRC) of the European Commission. The
latter has funded us for the development of IASTracker
App. MYGEOSS is a two-years project to develop useful
free applications based on observation systems for citizens to inform them of
the changes that occur in their environment.
If you want to cooperate with IASTracker, please contact us via the following email<EMAIL_ADDRESS>Resources
The main resources used for the
preparation of descriptive sheets of the application are:
CABI, 2015. Reports of
invasive species. Wallingford, UK: CAB International. www.cabi.org/isc
Global Database on invasive species:
http://www.issg.org/database
Department of Land, Sustainable
Development and Environment, 2015 http://mediambient.gencat.cat/ca
Harmonia Database 2015. Belgian
Forum on Invasive Species. http://ias.biodiversity.be
Other sources consulted are cited in
the descriptive sheets of species.
Citation
To cite IASTracker,
use the following text:
IASTracker, year. Invasive Alien Species Tracker www.iastracker.ic5team.org
Acknowledgments
This application has been
developed within the MyGEOSS project, which has
received funding from the European Union’s Horizon 2020 research and innovation
programme.
The JRC, or as the case may
be the European Commission, shall not be held liable for any direct or
indirect, incidental, consequential or other damages, including but not limited
to the loss of data, loss of profits, or any other financial loss arising from
the use of this application, or inability to use it, even if the JRC is
notified of the possibility of such damages.
Thanks to the European
Union and the cooperation of Geological and Cartographic Institute of
Catalonia.


QGIS STAC Browser
The QGIS STAC Browser plugin allows for searching STAC catalogs for assets and downloading those assets directly into QGIS.
Documentation and Source Code
https://github.com/kbgg/qgis-stac-browser
Issues or Enhancements
https://github.com/kbgg/qgis-stac-browser/issues
Contact
Kevin Booth
Twitter: @kbgg_
Email<EMAIL_ADDRESS>License
Apache License 2.0


JavaScript development touches a lot of diverse environments: Node, Chrome, Safari, etc. These various environments have different levels of compatibility with advanced JavaScript features like JSX and ES6. To ensure that our JSX and ES6 code works in any environment, we will use a transpiler called Babel to convert our code into ES5, the universal, vanilla Javascript compatible with all browsers and Node.
Webpack can be configured to transpile your JSX and ES6 source code into browser-compatible Javascript when creating the bundle.
Install the appropriate NPM packages:
npm install @babel/core @babel/preset-env @babel/preset-react babel-loader
@babel/core
is the transpiling engine itself. @babel/preset-env
and @babel/preset-react
are configurations that tell the core transpiler how to interpret ES6 and JSX, respectively.
Configure the module
key of your webpack.config.js
:
module: {
rules: [
{
test: [/\.jsx?$/], // Specifies file types to transpile
exclude: /(node_modules)/, // Leaves dependencies alone
loader: 'babel-loader', // Sets Babel as the transpiler
query: {
presets: ['@babel/env', '@babel/react'] // Tells Babel what syntaxes to translate
}
}
]
},
This chart is a great resource to see what levels of native support exist for advanced JS features in different environments. However, you shouldn’t have to worry about compatibility if you use Babel.
Did you find this lesson helpful?


Kaazing JavaScript AMQP Demos
Kaazing WebSocket Gateway is a platform for building web applications that require high-performance, full-duplex communication between the browser and server. The demonstrations on this page show JavaScript-based AMQP clients that communicate directly with a remote message broker. For more information, see Checklist: How to Build JavaScript Clients Using Kaazing WebSocket Gateway.
JavaScript AMQP Demo
This demo uses an AMQP client library to send and receive messages using the AMQP protocol which communicates with a message broker such as Rabbit MQ or Apache Qpid
by way of the Kaazing Gateway AMQP Proxy service.
AMQPClient API


Why aren't my images rendered?
html2canvas does not get around content policy restrictions set by your browser. Drawing images that reside outside of the origin of the current page taint the canvas
that they are drawn upon.
If the canvas
gets tainted, it cannot be read anymore. As such, html2canvas implements methods to check whether an image would taint the canvas
before applying it. If you have set the allowTaint
option to false
, it will not draw the image.
If you wish to load images that reside outside of your pages origin, you can use a proxy to load the images.
How do I get html2canvas to work in a browser extension?
You shouldn't use html2canvas in a browser extension. Most browsers have native support for capturing screenshots from tabs within extensions. Relevant information for Chrome, Firefox and Opera.
Why isn't SVG images getting rendered?
As with the previous question, SVG images taint the canvas with many browsers regardless of where they are hosted, or even if they are inline.
Why doesn't CSS property X render correctly or only partially?
As each CSS property needs to be manually coded to render correctly, html2canvas will never have full CSS support. The library tries to support the most commonly used CSS properties to the extent that it can. If some CSS property is missing or incomplete and you feel that it should be part of the library, create test cases for it and a new issue for it.