text:
\section{Introduction}
\label{sec:intro}
In 2002, Bandt and Pompe introduced a measure of complexity for time series \citep{bandt2002permutation} named \textit{permutation entropy} (PE). It is an information entropy \citep{gray2011entropy} that takes account of the time evolution of the time series, in contrast with other prominent information entropies as the Shannon entropy \citep{shannon2001mathematical}. It computation is fast, requires not too long time series \citep{riedl2013practical} and it is robust against noise \citep{quintero2015numerical}. This measure has been widely used in non-linear dynamics \citep{keller2005ordinal,de2008randomizing,rosso2010generalized,masoller2011quantifying}, and to a lesser extent in Stochastic Processes \citep{rosso2007extracting,sinn2011estimation,zunino2008permutation}, among others. It has also had a great impact in in such different and important areas of applied science and engineering as varied as Mechanics Engineering \citep{yan2012permutation,redelico2017evaluation}, Epilepsy \citep{redelico2017classification,olofsen2008permutation}, anaesthesia \citep{jordan2008electroencephalographic}, Cardiology \citep{frank2006permutation,parlitz2012classifying}, Finance \citep{matilla2009detection}, Climate Change \citep{carpi2013analysis}.\\
Since its publication and up to the end of 2016, this paper has been cited in 789 papers, according Scopus bibliographic database, and the evolution of the cites seems to indicate that it will be increasing within time. All these facts made an investigation of PE from the statistic point of view an important issue.\\

There has been little research, up to our knowledge, on the statistical properties of the quantities used in nonlinear dynamics to characterize time series. This lack of research may be due the lack of distributional theory of these quantitites,  yielding resampling technics as the most powerfull tool to overcome this task. Perhaps one exception to this is the research on the distribution of the largest Lyapunov exponent and the correlation dimension\citep{boeing2016visual}. We will summarize one of the most important discussion in this matter, according to our criterion and having in mind the computational scheme that we are proposing: In \citep{genccay1996statistical} a methodology to calculate the empirical distributions of Lyapunov exponents based on a a traditional bootstrapping technique is presented, providing a formal test of chaos under the null hypothesis. However, in \citep{ziehmann1999bootstrap} it is shown that the previously bootstrap approach seems to fail to provide reliable bounds for estimates the Lyapunvos exponents, and conclude that the traditional bootstrap cannot be applied for estimating multiplicative ergodic statistics. In \citep{brzozowska2004application}, a moving blocks bootstrap procedure is used to detect a positive Lyapunov exponent in financial time series. However, the time series generated by moving block bootstrap present artifacts which are caused by joining randomly selected blocks, so the serial dependence is preserved within, but not between, the block.\\

Regarding time series symbolic dynamics, in \citep{bandt2007order} the probabilities generated using the Bandt and Pompe methodology are calculated analytically for Gaussian Processes for symbol length equal three, but they recognize that for larger length this is not possible, for that reason a computer based method is required to estimate the bias and variance in the PE estimation.\\

In this contribution we propose a different simulation method (i.e parametric bootstrap) for estimating the bias, variance and confidence intervals for the Permutation Entropy estimation, along with hypothesis testing, that consists in simulate bootstrap symbolic time series samples that are thought to be produced by a probabilistic model with a fixed transition probability extracted from the original time series.

In order to show some results from our method we simulate a well known family of time series: the $1/f^{\alpha}$ noise. We compute bias, variance and confidence intervals for the Permutation Entropy of these time series according time series length and several parameters. In addition, an application of the parametric bootstrap methodology for hypothesis testing is used to compare normal and pre-ictal EEG signals.

The paper reads as follows: Section \ref{sec:permu} shows a brief review of PE in order to present the estimator to be evaluated using the bootstrap approach, Section \ref{Bootgeneral} presents and explains the proposed parametric bootstrap, firstly a brief review of the bootstrap scheme is done as introduction to our method, then in Subsection \ref{transition} the core of the bootstrap approach is presented, i.e. the probability transitions computation is explaiedn and finally in Subsection \ref{boot2} the algortihm to parametric bootstrap PE is explained. Section \ref{numerical} presents the dynamical systems simulated, Section \ref{EEGdata} introduces the experimental data used in the application and Section \ref{results} is devoted to the results and conclusions of this contribution.

\section{Permutation Entropy}
\label{sec:permu}
In this Section we briefly review the PE to make the article self contained and accessible for a wider audience.\\

Let $\{X_t\}_{t \in T}$ be a realization of a data generator process in form of a real valued time series of length $T \in \mathbb{N}$. A measure of uncertaintly about $\{X_t\}_{t \in T}$ is the \textit{normalized} Shannon entropy \citep{shannon2001mathematical} ($0 \leq {\mathcal H} \leq 1$), which is defined as:
\begin{equation}
\label{shannon-disc}
{\mathcal H}[P]~=~ S[P]  / S_{max} ~=~\left\{-\sum_{i=1}^{N}~P_i~\ln( P_i) \right\} /  S_{max} \ ,
\end{equation}
where $P_i$ is a probability to be extracted from the time series, $N$ is the cardinality of the $P_i$ set $\{p_i\}_1^N$, the denominator  $S_{max} = S[P_e] = \ln N$ is obtained by a uniform probability distribution $P_e = \{P_i =1/N,~ \forall i = 1, \cdots, N\}$.\\
Bandt and Pompe proposed a symbolization technique to estimate $P_i$ and compute PE, $\hat{\mathcal H}(m,\tau)$. First we recall that PE has two tuning parameters, i.e. $m$ the symbol length and $\tau$ the time delay. Within this paper, we set $\tau=1$ with no loss of generality and it will omitted, so we will use $\mathcal H = \mathcal H(m)$ for sake of simplicity. Let $X_m(t)=(x_t,x_{t+1},\dots,x_{t+m-1})$ with $0\leq t \leq T-m+1$ be a non-disjoint partition containing the vectors of real values of length $m$ of the time series $\{X_t\}_{t \in T}$. Let $S_{m \geq 3}$ the symmetric group of order $m!$ form by all possible permutation of order $m$, $\pi_i=(i_1,i_2,\dots,i_m) \in~S_m$ ($i_j \neq i_k \forall j \neq k$ so every element in $\pi_i$ is unique). We will call an element $\pi_i$ in $S_m$ a symbol or a motiv as well. Then $X_m(t)$ can be mapped to a symbol $\pi_i$ in $S_m$ for a given but otherwise arbitrary $t$. The $m$ number of real values $X_m(t)=(x_t,x_{t+1},\dots,x_{t+m-1})$ are mapped onto their rank. The rank function is defined as:
\begin{equation}
R(x_{t+n}) = \sum_{k=0}^{m-1} \mathbbm{1}(x_{t+k} \leq x_{t+n})
\end{equation}
where $ \mathbbm{1}$ is the indicator function (i.e $ \mathbbm{1}(Z) = 1$ if $Z$ is true and $0$ otherwise) , $x_{t+n} \in X_m(t)$ with $0\leq n \leq m-1$ and $1 \leq R(x_{t+n}) \leq m$. So the rank $R(min(x_{t+k}))=1$ and $R(max(x_{t+k}))=m$. The complete alphabet is all the possible permutation of the ranks.   Hence, any vector $X_m(t)$ is uniquely mapped onto $\pi_i=\left(R(x_t),R(x_{t+1}),\dots,R(x_{t+m-1})\right) \in S_m$. With this  Rank Permutation Mapping one simply maps each value $x_i$ in $X_m(t)$ placing its rank $R(x_i) \in \{1,2,\dots,m\}$ in chronological order to form $\pi_i$ in $S_m$.  In Figure \ref{fig:rank} an illustrative drawing of this mapping for all alternatives in $m=3$ is presented. It can be seen that the indexes of the vertical axis are fixed, ordered by amplitude (i.e ranks), and they are mapped onto the time axis. The resultant symbol can be obtained reading the labels in the horizontal axis from left to right (in chronological order). This method is used by \citep{autocorrelationBandt,riedl2013practical,Bandt2005} among others.
For example, let us take the series with seven values ($T=7$) \citep{bandt2002permutation} (see Fig. \ref{fig:ejemplo}, top), and motiv length $m=3$:
\begin{equation}
X_t=(4,7,9,10,6,11,3)
\end{equation}
$X_3(1)=(4,7,9)$ and $X_3(2)=(7,9,10)$ represents the permutation $\pi = 123$ since $R(x_1)= 1$ ,$R(x_2)= 2$, $R(x_3)= 3$. $X_3(3)=(9,10,6)$ and $X_3(4)=(6,11,3)$ correspond to the permutation $\pi = 231$ since $R(x_1)= 2$ ,$R(x_2)= 3$, $R(x_3)= 1$ (see Fig. \ref{fig:ejemplo}, middle). Using the rank permutation Mapping we compute $P(\pi_i)$ (see Fig. \ref{fig:ejemplo}, bottom) ,
\begin{equation}
 P(\pi_i)=\frac{\sum_{l=1}^{T-m+1}\mathbbm{1}(X_m(l) \text{ has ordinal patter } \pi_i \text{ in } S_m)}{T-m+1},
\end{equation}
where $ \mathbbm{1}$ is the indicator function  and $i=1,\dots,m!$. Using these probabilities, $\hat{\mathcal H}(m)$ can be computed as,
\begin{equation}
\label{eq:shannon}
\hat{\mathcal H}(m)=\left\{-\sum_{i=1}^{N}~P(\pi_i)~\ln( P(\pi_i)) \right\} /  S_{max} \ ,
\end{equation}
 where $N=m!$ is the order of the symmetric group $S_m$ and $S_{max}=log(N)$.\\

\begin{figure}[h!]
\includegraphics[width=\textwidth]{rank2.eps}
\caption{\textbf{Rank Permutation Mapping} All symbols for $m=3$ are shown. With this Rank Alphabet one simply maps each value $x_i$ in $X_m(t)$ placing its rank $R(x_i) \in \{1,2,\dots,m\}$ in chronological order to form $\pi_i$ in $S_m$.It can be seen that the indexes of the vertical axis are fixed, ordered by amplitude (i.e ranks), and they are mapped onto the time axis. For each pattern $X_3(t)=(x_t,x_{t+1},x_{t+2})$, the resultant symbol can be obtained reading the labels in the horizontal axis from left to right (in chronological order). }
\label{fig:rank}
\end{figure}

\begin{figure}[h!]
\includegraphics[width=\textwidth]{pe.eps}
\caption{Example of the calculation of the permutation entropy.
(top) Time series $X_t=(4,7,9,10,6,11,3)$. (middle) symbols $\pi_i$ generated from the time series using the Rank Permutation Map. (bottom) relative frecuency of $S_{m=3}$ elements for the exemplified time series, $P(312)=0.4$, $P(123)=0.4$ and $P(213)=0.2$.}
\label{fig:ejemplo}
\end{figure}

\section{The Bootstrap approach}
\label{Bootgeneral}
The bootstrap is a computer based method for assigning measures of accuracy to the desired statistical variable estimates. If $\mathcal{H}$ is an unknown characteristic of a model $\Psi$, an estimator $\hat{\mathcal{H}}$ can be derived from the sample generated by $\Psi$ in a single experiment. A way to obtain the distribution of $\hat{\mathcal{H}}$ is to repeat the experiment a large number of times and approximate the distribution of $\hat{\mathcal{H}}$ by the so obtained empirical distribution. In most practical situations this method is impossible because the experiment is not reproducible, or is unenforceable for cost reasons.
The spirit of the  bootstrap methodology is to estimate the sampling distribution of a statistic (i.e  quantifier or a parameter estimator) from the data at hand by analogy to the 'thought experiment" that motivates the sampling distribution.

\begin{figure}
\includegraphics[width=\textwidth]{parametricscheme.jpg}
\caption{Schematic diagram of the parametric bootstrap approach. An unknown probability model, $\Psi~=~\Psi(P^{ij})$, gives an observed sequence $S$ from which we estimate $\hat{{\mathcal H}}$ , so the bootstrap approach suggest to estimate this model $\hat{\Psi}~=~\Psi(\hat{P}^{ij})$ and get the correspondent bootstrap samples $S^{*}$ from which we estimate $\hat{{\mathcal H}}^{*}$}
\label{fig:bootscheme}
\end{figure}

Suppose that an unknown probability model $\Psi$ gives an observed data set $\textbf{X} = \{x_t\}_{t=1}^n$ by random sampling and let $\hat{\theta}_{\Psi}(\textbf{X},T)$ be the statistic of interest that estimates our true value $\theta = f(\Psi)$. Then with the observed data set $\textbf{X}$ we produce an estimate $\hat{\Psi}$. The trick is now to repeat the random sampling but with the estimate $\hat{\Psi}$ giving bootstrap samples $\textbf{X}^{*} = \{x^{*}_t\}_{t=1}^n$ and for each bootstrap sample we calculate $\hat{\theta}^{*}_{\hat{\Psi}}(\textbf{X}^{*},n)$. Now we repeat the bootstrap sampling $B$ times and the distribution of $\hat{\theta}^{*}_{\hat{\Psi}}(\textbf{X}^{*},n)$ is the bootstrap estimator of the distribution of $\hat{\theta}_{\Psi}(\textbf{X},n)$. With this estimated distribution we can also obtain the variance, the bias and the confidence intervals of our estimator. \\
Formally, the bootstrap methodology is based in the plug-in principle. The parameter of interest can be written as a function of the probability model, $\theta = f(\Psi)$. As the probability model is unknown, the plug-in estimate of our parameter is defined to be $\hat{\theta} = f(\hat{\Psi})$. So the bootstrap propose that we resample from this estimated probability model $\hat{\Psi}$ that is chosen to be close to $\Psi$ in some sense.

If we have some information about $\Psi$ besides the data, the chosen $\hat{\Psi}$ must contain this information. Suppose that we know that the data $\textbf{X} = \{x_t\}_{t=1}^n$ comes from a certain process ruled by a probabilistic model $\Psi$ that depends on a finite number of parameters $\mathbf{\Xi} = \{\xi\}_{i=1}^k$, so $\Psi~=~f\left(\mathbf{\Xi}\right)$. This parameters can be estimated in the traditional statistical parametric approach as Maximum Likelihood getting $\mathbf{\hat{\Xi}} = \{\hat{\xi}\}_{i=1}^k$, and equivalently  $\hat{\Psi}~=~f\left(\mathbf{\hat{\xi}}\right)$.

Now the bootstrap samples $\textbf{X}^{*} = \{x_1^{*},x_2^{*} \dots x_n^{*}\}$ comes from a process ruled by a probabilistic model $\hat{\Psi}$ (Fig. \ref{fig:bootscheme}).
These bootstrap samples emulates in every sense the original samples, including the correlation between the values.

\subsection{The transition probabilities of a symbol sequence}
\label{transition}

 As stated in Section \ref{sec:permu} using the methodology proposed by Bandt \& Pompe, the dynamics of a process $\{X_t\}_{t \in T}$ with $X_t \in \mathbb{R}$ is represented by a $m!-th$ finite state random process $\{S_t\}_{t \in (T-m+1)}$ with $ S_t \in S_m = \{\pi_1,\pi_2 \dots \pi_{m!}\}$ for all posible $m\geq 2$.
This realization of the symbolic sequence is thought to be produced by a probabilistic model with a fixed transition probability  $P^{ij}$ (i.e. the probability of moving from a symbol $\pi_i$ to a symbol $\pi_j$ for all $1 \leq i \leq m!$ and $1 \leq j \leq m!$) denoted $\Psi(P^{ij})$.

We estimate the model $\hat{\Psi} = \Psi(\hat{P^{ij}})$, see Fig. \ref{fig:bootscheme} to bootstrap the Permutation Entropy

According to \citep{bandt2002permutation}, the relative frequency

\begin{equation}\label{eq:frequ}
\hat{P}_T(\pi_i)~=~
\frac{n_i}{T-m+1}
\end{equation}

is an estimate \textit{as good as possible for a finite series of values}  of $P(\pi_i)$, with $n_i$ the number of times the state $\pi_i$ is observed up to time $T-m+1$. The sub-index $T$ in $\hat{P}_T(\pi_i)$ reinforces the notion of the dependence of the estimator on the length of the series $T$.

With the same spirit we define the transition probabilities of the symbol sequence as:

\begin{equation}
P^{ij}=P(s_{t+1}=\pi_j | s_t= \pi_i) ~~~ {1 \leq i \leq j \leq  m!}
\end{equation}

And the estimator of $P^{ij}$

\begin{equation}\label{eq:Pij}
\hat{P}_T^{ij} =
\begin{cases*}
      \frac {n_{ij}}{n_i} ~~ if ~ n_i \geq 0\\
      0     ~~~     otherwise
    \end{cases*}
\end{equation}

where $n_{ij}$ is the number of transitions observed form $\pi_i$ to $\pi_j$ up to time $T-m+1$ and . Note $n_i~=~ \hat{P}(\pi_i).(T-m+1)$

Then by the law of the total probability:

\begin{equation}
P(\pi_j)~=~\sum_{i=1}^{m!} P(\pi_i) P^{ij}
\end{equation}

so if we call $\mathbf{P}(\pi)$ to the (m!)-dimensional vector containing $P(\pi_i)$ in each coordinate (i.e  $\mathbb{P}(\pi)~=(P(\pi_1),P(\pi_2),\dots,P(\pi_{m!})$), then $\mathbf{P}(\pi)$  is determined by $P^{ij}$, leading to the conclusion that the estimator $\hat{\mathbf{P}}_T(\pi)$ is determined by the estimation of $\hat{P}_T^{ij}$.

\subsection{Bootstrapping the Permutation Entropy}
\label{boot2}

The Permutation Entropy is defined in eq. \ref{shannon-disc}, so because of the plug-in principle, our natural estimator is:

\begin{equation}\label{eq:hatPE}
 \hat{\mathcal{H}}_T~=~\left\{-\sum_{i=1}^{N}~ \hat{P}_T(\pi_i) \ln(\hat{P}_T(\pi_i)) \right\} /  ln (m!)
\end{equation}

In section \ref{transition} we showed that the Permutation Entropy was completely defined by the transition probabilities $P^{ij}$ so we can think of them as  parameters of a probabilistic model $\Psi$.

Following the scheme in Fig. \ref{fig:bootscheme} we have:\\

$\Psi \left(P^{ij}\right) \longrightarrow \mathbf{S}=(s_1,s_2\dots,s_{T-m+1}) \longrightarrow  \hat{\mathcal{H}}_T$\\

Our probabilistic model with unknown transition probabilities $P^{ij}$ gives the observed symbol sequence $\mathbf{S}$, and with that sequence the estimation of the Permutation Entropy is obtained.\\
 In the 'bootstrap world":\\

\begin{small}
 $\hat{\Psi} ~=~ \Psi \left(\hat{P}_T^{ij}\right) \longrightarrow \mathbf{S^{*}}=(s_1^{*},s_2^{*}\dots,s^{*}_{T-m+1}) \longrightarrow  \hat{\mathcal{H}}^{*}_T$\\
\end{small}

 $\hat{\Psi}$ generates $\mathbf{S^{*}}$ by a simulation, giving the bootstrap replication $ \hat{\mathcal{H}}^{*}_T$. We can repeat the simulation to get as many bootstrap replications as affordable.

Computing $B$ bootstrap replication of the permutation entropy from a time series $\{X_t\}_{t \in T}$ is simple: given a time series of lenght $T$, choose a world length $m$ and a time delay $\tau$ to do the mapping from $\{X_t\}_{t \in T}$ to $\{S_t\}_{t \in (T-m+1)}$ as stated in section \ref{sec:permu}. With this sequence: compute  $\hat{P}_T(\pi_i)$, (eq. \ref{eq:frequ}), $\hat{P}_T^{ij}$ (eq. \ref{eq:Pij}) and calculate  $\hat{\mathcal H}_T$ (eq. \ref{eq:hatPE}). Then choose at random with probability $\hat{P}_T(\pi)$ an inicial state $s^{*}_1(b)= \pi_k $ and choose at random with probability $\hat{P}_T^{kj}$ (note that $k$ is fixed with the value of the previous state) the next simulated state $s_2^{*}(b)$.
Repeat this last step $T-m+1$ times to obtain the simulation $\mathbf{S^{*}(1)}=(s_1^{*}(1),s_2^{*}(1)\dots,s^{*}_{T-m+1}(1))$. With this bootstrap replication of symbol sequence estimate $\hat{\mathcal H}^{*}_T(b)$ (equation \ref{eq:frequ}).

For a more detailed reference see Algorithm \ref{alg:algoritmoRaro} in Appendix \ref{Appen}.

Repeat the simulation of the sequence $B$ times to obtain $\hat{H}^{*}_T(b) ~~ b =  1 \dots B$. With the set $\hat{\mathcal H}^{*}_T(b) ~~ b =  1 \dots B$ we have the bootstrap replications needed to estimate the standard deviation, the confidence intervals of  $\hat{\mathcal H}_T$, or the test presented in the following section.

So we obtained $B$ bootstrap replications of $\hat{\mathcal{H}}^{*}_T$:

$\hat{\mathcal{H}}^{*}_T(1),\hat{\mathcal{H}}^{*}_T(2)\dots\hat{\mathcal{H}}^{*}_T(B)$

The Bootstrap Standard Deviation of $\hat{\mathcal{H}}^{*}_T$ is our estimation of the Standard Deviation of $\hat{\mathcal{H}}_T$:
\begin{equation}
\hat{\sigma}_B(\hat{\mathcal{H}}_T)~=~\hat{\sigma}(\hat{\mathcal{H}}^{*}_T)
\end{equation}
and is defined as
\begin{equation}
\label{eq:bootsd}
\hat{\sigma}(\hat{\mathcal{H}}^{*}_T)=\sqrt{\frac{1}{B-1}\sum_{i=1}^{B} \left(\hat{\mathcal{H}}_T^{*}(i) - \hat{\mathcal{H}}^{*}_T(\bullet)\right)^2}
\end{equation}
where
\begin{equation}
\label{eq:bootmean}
\hat{\mathcal{H}}^{*}_T(\bullet)~=~\frac{1}{B}\sum_{i=1}^{B}\hat{\mathcal{H}}^{*}_T(i)
\end{equation}

We define the bootstrap bias of $\hat{\mathcal{H}}^{*}_T$ as:

\begin{equation}
\label{eq:bias}
\text{Bias}(\hat{\mathcal{H}}^{*}_T)=\hat{\mathcal{H}}^{*}_T(\bullet) - \hat{\mathcal{H}}_T
\end{equation}

Finally, the Mean Square Error (MSE) of an estimator:
\begin{equation}
\text{MSE}(\hat{\mathcal{H}}^{*}_T)= Var(\hat{\mathcal{H}}^{*}_T)+Bias^2(\hat{\mathcal{H}}^{*}_T)
\end{equation}

\subsubsection{Confidence Intervals}
The $1-\alpha$ Confidence Interval of $\mathcal{H}$ is defined by the percentiles of the bootstrap $\delta$. For each bootstrap replicate $\hat{\mathcal{H}}^{*}_T(b)$ we compute the difference - $\delta^{*}(b)$ - between that replication and the mean of all bootstrap replicates.
Then we choose the ($\frac{\alpha}{2}$) and the ($1-\frac{\alpha}{2}$) percentiles of the $\delta^{*}$'s distribution and add them to the original estimate, $\hat{\mathcal{H}}^{*}_T$, correcting for the bias, and the resulting $(1-\alpha)100\%$ confidence interval is:

\begin{equation}
\left[\max(2 . \hat{\mathcal{H}}_T - \hat{\mathcal{H}}^{*}_T(\bullet) +\delta^{*}_{\frac{\alpha}{2}},0),\min(2 . \hat{\mathcal{H}}_T - \hat{\mathcal{H}}^{*}_T(\bullet) +\delta^{*}_{(1-\frac{\alpha}{2})},1)\right]
\end{equation}\label{eq:bootci}

For a more detailed reference see Algorithm \ref{alg:algoritmo2} in Appendix \ref{Appen}.

\subsubsection{Hypothesis testing}

With this same spirit, a confidence interval for the difference between the permutation entropy of two different time series can be made. In inferential statistics exists a direct relationship between confidence intervals and hypothesis testing. A two-sided $(1-\alpha)$ confidence interval in the difference between two measures can be used to determine if those two measures are significantly different by only checking if the $zero$ belongs to this particular interval.
\\
\\
$H_0:\Delta = \mathcal{H}_1 - \mathcal{H}_2 = 0$
\\
\\
If $0~ \notin~ (1-\alpha)100\% ~CI~(\Delta)$ \\then reject $H_0$ and $$\mathcal{H}_1 \neq \mathcal{H}_2$$

The procedure to perform this test is shown in \ref{alg:hypothesis} in Appendix \ref{Appen}.

\section{Numerical simulation}
\label{numerical}
In order to show our proposed bootstrap in a very general time series, we simulate a well known dynamical system: the $ 1/f^{\alpha}$. All the series are simulated with different time spam, $T$ in order to evaluate the statistical properties of  $\hat{\mathcal{H}}_T$ according to Ec. \ref{eq:hatPE}.
As stated before, a way to obtain the distribution of $\hat{\mathcal{H}}$ is to repeat the experiment a large number of times and approximate the distribution of $\hat{\mathcal{H}}$ by the so obtained empirical distribution. While for real world experiments this can be inapplicable, for simulated time series this can easily done by Montecarlo Simulation.
Once the $n$ replications of $\hat{\mathcal{H}_T}~=~\{\hat{\mathcal{H}_T}(1),\dots,\hat{\mathcal{H}_T}(n)\}$ is obtained the standard deviation is estimated by:
\begin{equation}
\label{eq:sd}
\hat{\sigma}(\hat{\mathcal{H}}_T)=\sqrt{\frac{1}{n-1} \sum_{i=1}^{n} \left(\hat{\mathcal H}_T(i)-\hat{\mathcal H}_T(\bullet\right)^2}
\end{equation}
where
\begin{equation}
\label{eq:mean}
\hat{\mathcal{H}}_T(\bullet)~=~\frac{1}{n}\sum_{i=1}^{n}\hat{\mathcal{H}}_T(i)
\end{equation}

\subsection{Experimental design}

\paragraph{Stochastic dynamical systems:}\label{stochasticdesign}$1/f^{\alpha}$ noises refers to a signal with spectral density $S(f)$ with the form $S(f)~=~k \frac{1}{f^{\alpha}}$ where $k$ is a constant, $\alpha$ is the signal-dependent parameter and $f$ is frecuency \citep{kasdin1995}. It is a stochastic model which seems to be ubiquitous in nature \citep{kasdin1995} and the references therein. We simulate $1/f^{\alpha}$ noises with $\alpha=\{-1,0,1,2\}$. See Fig. \ref{fig:ruidos} for an example of these noises. A \textit{white noise} process ($\alpha = 0$) would generate a curve with constant power in the spectrum. The case of $\alpha = 1$ or \textit{pink noise} is the canonical case and of most interest as many of the values of $\alpha$ found in nature are very near to 1.0 \citep{caloyannides1974,musa1981,novikov97,vossclarke75,dutta1981}. A random walk noise (Brownian Motion or \textit{red noise}, $\alpha=2$) would show a $(1/f^2)$ distribution in $S(f)$. In order to simulate this stochastic process, the algorithm propose in \citep{timmer1995generating} is used.

For each $\alpha=\{-1,0,1,2\}$ 1000 replications were simulated for each
$T=\{60,100,120,400,$ $600,2000,3600,5000,10000,20000,50000\}$.\\
 $\hat{\mathcal{H}}_i(T,m)$ for $\{i=1\dots 1000\}$ along with $\hat{\sigma}(\hat{\mathcal{H}}_T)$ are obtained for $m=\{3,4,5,6\}$.\\
 For each $\alpha=\{-1,0,1,2\}$ a single replication was simulated for each $T=\{60,100,120,400,600,2000,3600,5000,$ $10000,20000,50000\}$. In each case for this replication we implemented the algorithm \ref{alg:algoritmoRaro} to get 1000 bootstrap replicates. $\hat{\mathcal{H}}_i^*(T,m)$ for $\{b=1 \dots 1000\}$ and $\hat{\sigma}_B(\hat{\mathcal{H}}_T)$ are obtained for $m=\{3,4,5,6\}$.
For these bootstrap distribution we analyze \textit{Bias}, \textit{Standard Deviation} and \textit{MSE}.
 \\
As for each set of 1000 bootstrap replicates we obtain a single confidence interval, we repeated this step 50 times to obtain Table \ref{tab:IC} that indicates the estimated confidence level of this method along with the mean amplitude of the interval.
\begin{figure}
\includegraphics[width=\textwidth]{ruidos.eps}
\caption{(top) realization for $1/f^k$ noises (T=2000), from left to right: $k=-1$,$k=0$,$k=1$,$k=2$. (bottom) spectral density of the respective $1/f^k$ noises.}
\label{fig:ruidos}
\end{figure}

\section{Application: EEG data}\label{EEGdata}

In order to illustrate the proposed confidence intervals in real contexts we present how it can
describe the variability in the Permutation Entropy within one observation of Electroencephalogram (EEG) Data. More precisely, as a first practical application, we analyze, via PME, four different sets of EEGs for healthy and epileptic patients that were
previously analyzed by \citep{andrzejak2001indications}\\ (available at
http://www.meb.unibonn.de/epileptologie/science/physik/eegdata.html). The data consist of 100 data segments (from which we choose 10 at random), whose length is 4097 data points with a sampling frequency of 173.61Hz, of brain activity for different groups and recording regions: surface EEG recordings from five healthy volunteers in an awake state with eyes open (Set A) and closed (Set B), intracranial EEG recordings from five epilepsy patients during the seizure free interval from outside (Set C) and from within (Set D) the seizure generating area. Details about the recording technique of these EEG data can be found in the original paper.

\section{Results and discussion}
\label{results}

We intend to show in our simulated experiment that the bootstrap distribution of the PE estimator is close in every meaningful sense to the distribution obtaining by the repetition of the original experiment (empirical distribution) in order to obtain this estimator distribution when the exact replication of the experiment can not be done.
 A comparison between the standard deviations of both bootstrap replicates and the empirical distribution ($\hat{\sigma}_B(\hat{\mathcal{H}}_T)$ and $\hat{\sigma}(\hat{\mathcal{H}}_T)$ respectively) for the stochastic processes is presented in Fig. \ref{fig:vardividido}. There are some discrepancies for low values of $T$, but form a certain value $T_0$ in all the cases of $m$ the standard deviation coincides. In Fig. \ref{fig:sesgo} it can be seen that for every $m$ and $\alpha$ the bias of the bootstrap estimate tends to zero as $T$ increases. So, this bootstrap estimator is an asymptotically unbiased estimator. With this and with the fact that $\sigma$ also goes to zero as $T$ increases, the bootstrap estimator seems to be Mean Square Consistent. Even more, for large values of $T$, the bootstrap estimation is as efficient as the estimation produced by the repetition of the experiment.

In Fig. {\ref{fig:histo} and for an arbitrary value of $\alpha=1$ an for the largest length of the simulated time series $T=50000$, an histogram of the bootstrap estimator along with an histogram of the simulated estimator are presented in different scale for every $m$. The similar shape between the histograms can be appreciated, the difference in the location is due that the bootstrap samples depends on only one of the estimations of the PE (that are random) but this does not affect the posterior inferential conclusions.

 For a more thorough exploration of the bootstrap estimator we have calculated fifty $90\%$ Confidence Intervals and for every $m$ and every {$\alpha$} we computed how many times the real value of ${\mathcal{H}}$ - in fact we use the mean of $\hat{\mathcal{H}}(T,m)$ (see paragraph \ref{stochasticdesign}) that is the best possible estimator - is outside the bounds of the confidence interval.  Results are shown in Table \ref{tab:IC}. For white noise  the confidence level is in fact higher than 90\%, in fact is always accurate but for other values of $\alpha$ the overall confidence level is approximately between 90\%. and 95\%.

In many practical situations, there is a wish to compare the dynamics of two processes via the Permutation Entropy of their time series. The question is:  $\mathcal{H}_1 = \mathcal{H}_2$? This can not be answered with punctual estimators ($\hat{\mathcal{H}}_1 , \hat{\mathcal{H}}_2$) because these are continuous random variables and with probability 1 (i.e. \textit{always}) they are going to be different. The real question is if that difference is statistically significant or not, and that only can be answered if exists a measure of variability of that continuous random variable, $\hat{\Delta}=\hat{\mathcal{H}}_1 - \hat{\mathcal{H}}_2$. There has not been, up to our best knowledge, this kind of variability measure that we are proposing now.
An example of this is the Permutation Entropy of EEG signals.

The problem of interest is comparing the PE of 4 different sets of EEG signals: EEG signals of patients in an awake state with eyes open (Set A) and closed (Set B), intracranial EEG recordings from epilepsy patients during the seizure free interval from outside (Set C) and from within (Set D) the seizure generating area.

If many EEG signals for each type of patients can be recorded a classical inference for the mean can be performed if the normality assumptions are complied or, if normality fails (that is to be expected in this case), a non parametric test can be made. But is the mean PE representative of the population of each type of patient?

A different problem is to analyze the variability of a single EEG signal, this can not be done with conventional methods and up to this contribution there has not been an answer to this problem. The same problematic applies when the issue is to compare between two EEG signals.

We solve this problem by constructing confidence intervals and hypothesis testing with our proposed method. In Fig \ref{fig:intervalosEEG} 90\% Confidence Intervals for the 10 EEG signals of brain activity for different groups and recording regions are performed. It should be pointed out that the overlapping between intervals does not necessarily means that there is no significant differences between the two Permutation Entropies. To reach that conclusion, an hypothesis test for the difference must be made.

In Fig. \ref{fig:testABEEG} we perform a test for difference in the Permutation Entropy between the 10 EEG signals of healthy volunteers in an awake state with eyes open ($Set A$) and the 10 EEG signals of healthy volunteers in an awake state with eyes closed ($Set B$). Each EEG signal of $Set A$ was compared with each signal of $Set B$ with a 10\% significance level, and the conclusion is that the differences seems to be at random, indicating that is no real difference between these two types of EEG signals.
In Fig. \ref{fig:test} the same analysis is extended to all the different types of patients. While the differences between $Set A$ and $Set B$ seems to be at random, all EEG signals of those Sets are different in every test to the EEG signals of $Set C$ and $Set D$. Instead, between $Set C$ and $Set D$ again the differences are distributed between significant and not significant.

In summary, we present a computer based methodology to obtain an accuracy measure for the estimation of the permutation entropy ($\hat{\mathcal{H}}$). So far we found in the literature that only descriptive statistics are used to characterize this quantifier and if the objective is to extrapolate on and reach conclusions that extend beyond the raw data itself there were no statistical inference method at hand. Even a simple comparison between to random variables (as $\hat{\mathcal{H}}$) can not be made with some confidence without a measure of variability of that variable. Our method paves the way to perform any inferential statistic involving the Permutation Entropy or even any entropy that uses the Probability Function Distribution proposed by Bandt and Pompe.

\begin{table}
\caption{$90\%$ Confidence Intervals (Eq. \ref{eq:bootci}) for every symbol length $m$ and power law parameter $\alpha$. How many times the real value of ${\mathcal{H}}$  - in fact we use the mean of $\hat{\mathcal{H}}(T,m)$ (see paragraph \ref{stochasticdesign}) that is the best possible estimator - is lower than the Lower Bound $Miss Left$ or higher than the Upper Bound $Miss Right$. For white noise  the confidence level is in fact higher than 90\%, in fact is always accurate but for other values of $\alpha$ the overall confidence level is approximately between 90\%. and 95\%. }
\label{tab:IC}
\begin{center}
\begin{tabular}{cccccc}
\hline\noalign{\smallskip}
m & $\alpha$ & $\hat{\mathcal{H}}(T,m)$ &  Miss left & MissRight & Mean Amplitude \\
\noalign{\smallskip}\hline\noalign{\smallskip}
3 & -1    & 0.995831848 & 0       & 0.04           & 0.00222              \\
4 & -1    & 0.989083439 & 0.02    & 0.04           & 0.00420              \\
5 & -1    & 0.983495069 & 0.04    & 0.04           & 0.00500              \\
6 & -1    & 0.97547007  & 0.02    & 0              & 0.00555              \\
3 & 0     & 0.99990292  & 0       & 0              & 0.00057              \\
4 & 0     & 0.999679839 & 0       & 0              & 0.00080              \\
5 & 0     & 0.998800463 & 0       & 0              & 0.00134              \\
6 & 0     & 0.994503528 & 0       & 0              & 0.00235              \\
3 & 1     & 0.991622896 & 0.02    & 0.02           & 0.00340              \\
4 & 1     & 0.983385433 & 0.02    & 0.02           & 0.00493              \\
5 & 1     & 0.97600538  & 0.02    & 0.04           & 0.00591              \\
6 & 1     & 0.966355927 & 0       & 0.06           & 0.00657              \\
3 & 2     & 0.943233315 & 0.08    & 0.06           & 0.00959              \\
4 & 2     & 0.90634703  & 0.04    & 0.02           & 0.01273              \\
5 & 2     & 0.878452628 & 0.02    & 0.02           & 0.01413              \\
6 & 2     & 0.853327039 & 0.04    & 0.02           & 0.01482             \\
\noalign{\smallskip}\hline
\end{tabular}
\end{center}
\end{table}

\begin{figure}[H]
\includegraphics[width=\textwidth]{varianzadividido.eps}
\caption{Standard Deviation of $\hat{\mathcal{H}}$ as $T$ increases. A comparison between the standard deviations of $\hat{\mathcal{H}}$ of both bootstrap replicates in red and simulated replicates in blue is shown. There are some discrepancies for low values of $T$, but form a certain value $T_0$ in all the cases of symbol length $m$ and $\alpha$ the standard deviation coincide. As the bias goes to zero (Fig.\ref{fig:sesgo}) along with the standard deviation the bootstrap estimator seems to be a mean square consistent estimator.}
\label{fig:vardividido}
\end{figure}

 \begin{figure}[H]
\includegraphics[width=\textwidth]{sesgo.eps}
\caption{The Bootstrap Bias for different values of $\alpha$ in function of $T$. It can be seen that for every symbol length $m$ and $\alpha$ the bias of the bootstrap estimate tends to zero as $T$ increases. The bootstrap estimator is an asymptotically unbiased estimator. }
\label{fig:sesgo}
\end{figure}

\begin{figure}[H]
\includegraphics[width=\textwidth]{histogram.jpeg}
\caption{For an arbitrary value of $\alpha=1$ an for the largest length of the simulated time series $T=50000$, an histogram of the bootstrap estimator (Red) along with an histogram of the simulated estimator (Blue) are presented in different scales for every $m$. The similar shape between the histograms can be appreciated, the difference in the location is due that the bootstrap samples depends on only one of the estimations of the PE (that are random) but this does not affect the posterior inferential conclusions. }
\label{fig:histo}
\end{figure}

\begin{figure}[H]
\includegraphics[width=\textwidth]{intervalosEEG.eps}
\caption{The 90\% Confidence Intervals for the 10 EEG signals of brain activity for different groups and recording regions: surface EEG recordings from healthy volunteers in an awake state with eyes open (Set A) and closed (Set B), intracranial EEG recordings from epilepsy patients during the seizure free interval from outside (Set C) and from within (Set D) the seizure generating area. It should be pointed out that the overlapping between intervals does not necessarily means that there is no significant differences between the two Permutation Entropies. To reach that conclusion, an hypothesis test for the difference must be made. }
\label{fig:intervalosEEG}
\end{figure}

\begin{figure}[H]
\includegraphics[width=\textwidth]{testABEEG.eps}
\caption{Hypothesis Test: Difference in the Permutation Entropy of a time series. A test for difference in the Permutation Entropy between the 10 EEG signals of healthy volunteers in an awake state with eyes open ($Set A$) and the 10 EEG signals of healthy volunteers in an awake state with eyes closed ($Set B$) is shown at the top left. Each EEG signal of $Set A$ was compared with each signal of $Set B$ with a 10\% significance level, and the results are shown. The red squares mean that the test was rejected and there is a significant difference between the Permutation Entropies. On the other side green squares mean that the test was not rejected and there is no evidence for that difference.
It should be pointed out that this is not a test for the difference in the mean Permutation Entropy of all EEG signals in $Set A$ vs all EEG signals in $Set B$, but instead a $one-on-one$ test between the Permutation Entropy for each single EEG signal of $Set A$ vs. the Permutation Entropy for each single EEG signal of $Set B$ repeated, giving a total of 100 tests. In the $x-axis$ are the estimations of the Permutation Entropy of each signal of the $Set B$ EEG signals, and on the $y-axis$ are the estimations of the Permutation Entropy of each signal of the $Set a$ EEG signals.}
\label{fig:testABEEG}
\end{figure}

\begin{figure}[H]
\includegraphics[width=\textwidth]{testEEG.eps}
\caption{The same analysis of the previous figure is extended to all the different types of patients. While the differences between $Set A$ and $Set B$ seems to be at random, all EEG signals of those Sets are different in every test to the EEG signals of $Set C$ and $Set D$. Instead, between $Set C$ and $Set D$ again the differences are distributed between significant and not significant.}
\label{fig:test}
\end{figure}

\section*{References}

redpajama_set_name: RedPajamaArXiv


Shop our selection of Metal Fence Gates in the Lumber & Composites Department at The ... H Black Heavy-Duty Aluminum Arched Pre-Assembled Fence Gate.
W Black Steel Adjustable Fence Panel ... W Black Aluminum Pre-Assembled Fence Panel ... TuffBilt Natural Reflections Standard-Duty 4-1/2 ft. H x 6 ft. ... Heavy-Duty Black Aluminum Arched Pre-Assembled Fence Gate .... The Home Depot Canada · The Home Depot México · Blinds.com · Pro Referral · The Company Store.
We carry easy to install connecting fence and staking edging fence panels in creative designs. ... Handmade 2ft tall Border Fence - Old World Iron Cast Finial.
Madison No Dig Vinyl Picket Garden Fence Panel (Set of 2). by Zippity Outdoor .... Create instant landscaping with this easy to install black metal fence. ... The Outdoor 3' ft x 15' ft Outdoor Screen Panel is knitted from high-grade polyethylene .
Results 1 - 24 of 312 ... Amagabeli Decorative Garden Fence Coated Metal Outdoor ... Windscreen4less IFD650 Heavy Duty Privacy Screen Fence Brass ... Section Outdoor Wire Patio Garden Folding Fencing Landscape Panels ... Fencer Wire 16 Gauge Black Vinyl Coated Welded Wire Mesh Size 1 inch by 1 inch (2 ft. x 50 ft.).
Aug 8, 2010 ... The 15-foot-high fence extends west of Nogales into the Arizona desert, undulating and curving as it follows the border with Mexico. ... a power saw, nearly 40 minutes to cut a 2-foot-wide hole in its anti-ram fencing, .... at the edge of a landing-mat fence made of corrugated steel panels welded to steel posts.


In a few words: Awesome. Educational. Empowering.
My experience working with the team at Automattic has been invaluable. As a self-taught developer, it was exactly what I needed. It's an education in WordPress theme development directly from the source — the talented folks that have built the most popular website content management system in the world. Their team has taught, and continues to teach me the best ways to approach theme development. The experience has improved our products across the board.
The process has taught me to always have a fallback, and employ conditionals for everything. That's more than a good lesson in theme development, that's a good lesson for life. It's taught me to test, test, test — then test again. I've always been a bit of a perfectionist, but it has helped perfect my perfectionism.
Organic Themes has been providing a handful of our premium themes on the WordPress.com marketplace for over a year. And for nearly a year, we have been dominating that marketplace in sales — out performing every major competitor with only a fraction of the products.
We're underdogs. The little theme company that's been around for years, but not widely known or discussed.
As the designer and developer of our themes, it's been a nice boost of confidence. In my line of work and isolated environment of Maui, I'm typically doing my own thing without much feedback from the outside world. It's nice to know that people appreciate and use the products I'm building.
I sometimes get asked how I approach theme design. It isn't scientific. It's not even very organized. Much like our brand suggests, the process is organic. I simply design and develop websites that I would personally want to use. I don't try to add every feature under the sun. I add the features that I feel compliment the design. Then I build it on the fly within the browser, changing and molding the design and concept as I go. I've worked in the corporate environment — building wire frames and multiple concepts in Photoshop. My process is the exact opposite.
After working with WordPress.com, I can finally develop in confidence of knowing that I'm doing it the right way. That feels pretty good. Because like many things, there are a billion different ways to design and develop a website, and 99% of the people out there are doing it wrong.
I would like to extend a warm mahalo to the many people that have assisted in my extended WordPress development education, including Kirk Wight, Philip Arthur Moore, Michelle Langston, Caroline Moore and others. Maybe we'll see you guys at the first WordCamp Maui!


text:
Q: After monitor upgrade Steam seems low resolution I upgraded my monitors from 1920x1080 displays to 2560X1440. Now for some reason Steam seems to be low resolution - like it's defaulting to 1920x1080. In every other program, the text is noticeably crisper.
I'm Running Windows 10 Pro. I don't have any issues with any of the games, just Steam itself.
Do I have to uninstall and re-install to fix this?

A: I believe this might be a Windows 10 display scaling issue. Here's two things to try:
Windows 10 has a display scaling feature. I think for high resolution monitors, it essentially "zooms" in.  The display scaling is a setting unique to each monitor. To change it:

*

*Right click on the desktop and select Display Settings

*Select the monitor that needs to be adjusted  (your new monitor, or if you only have one, the only monitor)

*Adjust the slider called Change the size of text, apps, and other items to 100%

*Restart your computer.  When you load up again, the display scaling should be changed for applications (I believe some things like text will adjust immediately, but some applications such as Steam will need a reboot to adjust the scaling)

(Source)
If this doesn't help, try this solution one user posted on a Steam forum:

To fix it you go to the programs(x86) folder -> Steam -> find the .exe file -> right click and open properties -> compatibility tab -> Check Disable display scaling on high DPI settings -> Apply -> restart your computer and it's fixed. You can do this for any program that has the same issue. Just find the exe file in programs(x86) and do the same thing you did with the Steam.exe.

A: Adding to @Timmy Jim's answer.
This issue affects older Windows operating systems as well, and won't go away until Valve adds HighDPI support to Steam.
Setting Display Scaling to 100% will fix Steam's problem, but in turn will affect every other app on your PC, regardless of whether they support HighDPI or not. Specifically, text and other UI elements will be rendered at an extremely small size, which can adversely affect your productivity.
The better solution is to tell Windows not to scale Steam, and only Steam (and any other app stuck in 2009 that doesn't support HighDPI). @Timmy Jim's alternate solution does just that, so you should try that instead of setting system-wide Display Scaling.
You can also add an exception to the registry. Simply copy the following code...
Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers]
"C:\\Program Files (x86)\\Steam\\steam.exe"="HIGHDPIAWARE"

... into a regular text file and change the text file's extension from .txt to .reg, then double-click the file to execute it. You might need to accept and provide elevated privileges.

You might find that some games won't let you use your screen's native resolution, such as Borderlands 2. The reason for that is the same as with Steam, and the solution is the same.
The beauty about the registry solution, is that you can use it to quickly "fix" multiple apps on multiple PCs. Simply add all the paths you need in the registry file, like this:
Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers]
"C:\\Program Files (x86)\\Steam\\steam.exe"="HIGHDPIAWARE"
"C:\\Program Files (x86)\\Steam\\SteamApps\\common\\Borderlands 2\\Binaries\\Win32\\Borderlands2.exe"="HIGHDPIAWARE"

redpajama_set_name: RedPajamaStackExchange


The fastest and easiest way to schedule an appointment and begin feeling better is to simply call the office at: (559) 230-1102.
One of our staff will promptly schedule you a convenient time. For our location and directions simply refer to the MAP AND DIRECTIONS section and print a copy.
Don't wait any longer to feel better. Many health conditions tend to worsen or reoccur without proper care for them to resolve.


text:
EquityGateway
EquityAdmin
BI Reporting Tool
Tax & Mobility
Financial Reporting Software Solutions
Mobility & Tracking
Public Company
Share Plan Administration
Employee Share Plan Implementation
Employee Support
Equity Training
Communicating your Share Plan
Our success would not be possible without the guidance and leadership of some of the sharpest minds and experienced compensation professionals.
Meet our management team of equity experts.
TIM HOUSTOUN, CEO
Tim joined Global Shares in 2009 and was appointed CEO of Global Shares in 2012. Profit conscious and highly numerate, he has successfully developed businesses through organic growth and acquisition, and has a reputation as a strategic and innovative thinker. Tim's directorships include Irish Atlantic Salt Ltd and Houstoun Capital Partners Ltd. Tim is also a board member of the American Coalition of Stock Plan Administrators (ACSPA). The other board members of ACSPA include senior representatives from Morgan Stanley, Merrill Lynch, Solium and Accurate Equity. Tim helped set up Bespoke Distribution Aviation Ltd, a successful and profitable Irish air cargo company. Prior to joining Global Shares, Tim worked primarily in the service sector and has twenty years' experience at a senior management level. Tim was the CEO of Business Direct Group Plc. a listed company and Chairman of Special Mail Services Plc. which was awarded the Fast Track 100 status for one of the fastest growing private companies in the UK. Tim graduated from University of Manchester (UK) with a BA in Economics and Statistics. He trained at BDO, London and is a Fellow of the Institute of Chartered Accountants.
JOHN MEEHAN, MANAGING DIRECTOR & HEAD OF BUSINESS DEVELOPMENT TEAM
John joined Global Shares as Managing Director in January 2015 at an exciting and progressive time in the Company. He will lead the new Business Development Team responsible for advancing international business in Europe and in all regions outside of North America. John is based in our new Global Shares offices in St. Pauls in London which is in close proximity to the London Stock Exchange. Having spent over 15 years in the equity compensation industry John has held a number of Senior Client Management and Business Development positions working with many of the largest companies in the world. Before joining Global Shares, John worked for Computershare and was responsible for their Executive Investment Services business and also new business development for companies conducting IPOs. Prior to this, John was Head of Client Management for Morgan Stanley's International Stock Plans business.
MARK PURCELL, CHIEF OPERATING OFFICER
Mark is Client Solutions Director at Global Shares and is responsible for ensuring that the business logic behind our equity plans is effectively incorporated into Global Shares' innovative IT products. Mark is also involved in business development for Global Shares; designing, implementing and planning solutions for new and existing clients as well as inputting into the marketing of those solutions. Mark holds a full Certified Equity Professional (CEP) qualification which focuses on the core disciplines of equity compensation: Accounting, Equity Plan Design, Analysis and Administration, Corporate and Securities Law and Taxation. Graduating from University College Cork, Mark has an honours master's degree in Business Economics, an undergraduate honours degree in Economics and French and attended Clongowes Wood College secondary school. Prior to his existing role, Mark managed a team of share plan analysts with Global Shares who were responsible for the implementation and on-going administration of clients' equity plans.
RICHARD O'SULLIVAN, GENERAL COUNSEL
Richard is a highly experienced General Counsel, with expertise in regulation, corporate and commercial law. He has been recognised by Legal 500 as one of Ireland's leading in-house lawyers. Prior to Global Shares, Richard was the Head of Legal for a national regulator. Previous roles include senior lawyer with one of Ireland's Top 5 law firms and in-house Legal Advisor for one of the world's largest pharmaceutical companies. Richard is a regular lecturer for the Law Society of Ireland and holds postgraduate qualifications in European Law and White-Collar and Corporate Crime as well as a Masters in Regulatory Law.
MIKE BAKER, HEAD OF BUSINESS DEVELOPMENT, EMEA
Mike joined Global Shares in June 2016 as the Head of Business Development, EMEA. Prior to this position Mike served as Director EMEA, Sales at Solium Capital UK Ltd, where he advised companies on implementation and ongoing management of employee share plans, as well as providing guidance in
compensation strategy and best practice. Mike's depth of experience will play a key role in accelerating Global Shares' business development for the EMEA region. With over 25 years of experience in the implementation, management and administration of equity compensation plans to the role, Mike will be based in the London office and will Head Business Development for the EMEA region.
LEE TAYLOR, HEAD OF CLIENT MANAGEMENT, EMEA
Lee joined Global Shares in January 2016 as Head of Client Management, EMEA. Prior to his position with Global Shares, Lee spent 9 years with Xerox acting as a Client Relationship Manager, dealing with Share Plans and Flexible Benefits. As well as this, Lee also worked with Computershare Investor Services as a Senior Relationship Manager for over 5 years. Lee brings with him many years of professional experience and a distinguished reputation in the client management field. His view as a Client Manager is to essentially partner with a client, becoming their voice within Global Shares. Lee is based in our London office.
JAMES MCENERY, HEAD OF IT
James joined Global Shares in 2010 as a Senior Software Developer. Currently as Chief Architect he manages the software development teams and leads the design and implementation of all Global Shares' enterprise applications. Prior to joining Global Shares, James lectured part-time in Cork Institute of Technology for a number of years and more recently has focused on the design and implementation of software using high-level object-oriented programming languages such as C# and Java. James worked as a Development Engineer with Documatics Limited developing market-leading document management software on the .Net framework. Graduating with an Honors Bachelor's Degree in Software Development from Cork Institute of Technology in 2005, James has since been involved in a number of research projects in University College Cork and has authored a number of internationally published papers. In his spare time James enjoys playing football, travelling and has a keen interest in the latest technology and gadgets.
NOREEN O'LOUGHLIN, EUROPEAN SHARE PLAN DIRECTOR
Noreen started working for Global Shares in June 2007 as a Share Plan Analyst and since then has progressed to European Share Plan Director. Noreen's team of Share Plan Analysts support a very wide and varied selection of European Share Plan and Fund Management clients. Noreen has also attained the full CEP qualification from the Certified Equity Professional Institute in the University of Santa Clara. Before joining Global Shares, Noreen worked within senior management for the Tourism and Hospitality Industry, with specific achievements in Hotel Business Management, Operations, Organisation and Event Management. During this time she operated at the highest levels for some of the most well known Irish hotels bringing her enthusiasm and dynamism to each establishment. In her spare time, Noreen enjoys walking, going to the gym, travelling and spending time with family and friends.
MARY MURPHY, HEAD OF FINANCIAL REPORTING
Mary is Head of Financial Reporting and has been with Global Shares since its inception. Initially involved in developing company and operational policies and building analyst teams to support the implementation and ongoing administration of equity compensation plans, as Head of Operations Mary managed the operations teams for several years. She now has responsibility for producing system generated equity compensation financial reporting requirements under both US GAAP and International Financial Accounting Standards.
MIRIAM O'MAHONY, FINANCIAL ACCOUNTANT
Miriam, a qualified Certified Public Accountant, is the financial accountant for Global Shares based at the company's Headquarters. Miriam graduated with honours from Cork Institute of Technology with a Bachelor of Business Studies, specialising in accounting, in 2005. After finishing college, she worked in a hotel management company, where she was Accounts and Administration supervisor.
AISLING RIORDAN, MARKETING MANAGER
Aisling qualified with a degree in International Marketing & Languages and spent 8 years working in the UK & number of Europe markets where she gained extensive experience in international business development. Prior to joining Global Shares she was Pan European Business Manager at the Irish airline Aer Lingus, with responsibility for sales, account management, promotions, communication & niche markets. Aisling is a strategic, results-focused, multi-lingual marketing professional who joined Global Shares in 2014 at an exciting time in the company's expansion. She is responsible for lead generation, SEO & web development, corporate branding, communication, promotions, publicity & PR.
Global Shares' Mission Statement
"Global Shares is committed to providing world-class independent global employee share plan administration and consulting services to companies around the globe.
By leveraging our team of industry experts that focus on excellence, relationship and efficiencies, and through the use of our innovative technical products, we provide services and solutions known for high quality, flexibility and reliability.
Whether you are considering a relationship with Global Shares as a customer, a partner or a team member, we invite you to get to know us – watch our videos, read our blog and follow our social media sites."
– Tim Houstoun, CEO
Have questions for our team?
Our experts would be delighted to discuss your share plan requirements.
1 Min Video
Private Company Shares
Share Plan Services
HR, Payroll, Legal & Broker Integration Solutions
Legal, Privacy, Cookies
© 2019 by Global Shares. All rights reserved.
Most websites you visit will use cookies in order to improve your user experience by enabling that website to 'remember' you.
Cookies do lots of different jobs, like letting you navigate between pages efficiently, storing your preferences, and generally improving your experience of a website. Cookies make the interaction between you and the website faster and easier. If a website doesn't use cookies, it will think you are a new visitor every time you move to a new page on the site – for example, when you enter your login details and move to another page it won't recognise you and it won't be able to keep you logged in.
Some websites will also use cookies to enable them to target their advertising or marketing messages based for example, on your location and/or browsing habits.
Cookies may be set by the website you are visiting ('first party cookies') or they may be set by other websites who run content on the page you are viewing ('third party cookies').
What is in a cookie?
A cookie is a simple text file that is stored on your computer or mobile device by a website's server and only that server will be able to retrieve or read the contents of that cookie. Each cookie is unique to your web browser. It will contain some anonymous information such as a unique identifier and the site name and some digits and numbers. It allows a website to remember things like your preferences or what's in your shopping basket.
What to do if you don't want cookies to be set
Some people find the idea of a website storing information on their computer or mobile device a bit intrusive, particularly when this information is stored and used by a third party without them knowing. Although this is generally quite harmless you may not, for example, want to see advertising that has been targeted to your interests. If you prefer, it is possible to block some or all cookies, or even to delete cookies that have already been set; but you need to be aware that you might lose some functions of that website.
Wanted Cookies policy
This website uses cookies to improve your experience. We\'ll assume you\'re ok with this, but you can opt-out if you wish.

redpajama_set_name: RedPajamaCommonCrawl


Editorial urging Maine voters to approve Question 5 on the Nov. 2 statewide referendum ballot, which would authorize a $9.4 million bond issue to allow Maine Public Television to convert all its transmitters to digital technology.
Rooks, Douglas, "Editorial urging Maine voters to approve Question 5 on the Nov. 2 statewide refe" (1999). Maine News Index – Maine Times. 3893.


Landmark-based navigation systems have proven benefits relative to traditional turn-by-turn systems that use street names and distances. However, one obstacle to the implementation of landmark-based navigation systems is the complex challenge of selecting salient local landmarks at each decision point for each user. In this paper, we present Pharos, a novel system that extends turn-by-turn navigation instructions using a single global landmark (e.g. the Eiffel Tower, the Burj Khalifa, municipal TV towers) rather than multiple, hard-to-select local landmarks. We first show that our approach is feasible in a large number of cities around the world through the use of computer vision to select global landmarks. We then present the results of a study demonstrating that by including global landmarks in navigation instructions, users navigate more confidently and build a more accurate mental map of the navigated area than using turn-by-turn instructions.


Home FX branding What the Heck Is Ad Viewability?
Do you know exactly how many people are viewing your online ads? No? Well it's sad to say that it's probably a lot less people than you think. In fact, a study by Google found that more than half (56.1%) of online display ad impressions are notseen by consumers. This means that you may have effectively been throwing your digital ad money away.
Advertisers have traditionally used impressions as a metric to measure ad performance. Yet many of these impressions result from page visits in which the visitor never actually sees the ads, either because they're displayed too low, or worse — the impression is down to a bot.
The way around this is to embrace ad viewability – which looks at whether an ad is actually in-view to readers on publishers' websites. Advertisers that embrace ad viewability over impressions will learn which placements are worth the investment.
Above-the-fold (ATF) impressions, for example, do not promise ad viewability. In fact, less than half of ATF impressions are actually viewable, due to the fact that: Many visitors start scrolling down as soon as they visit a page and see top ads for less than a second and ad vendors self-categorize what constitutes "above" and "below" the fold, which can persuade clients into over-paying for a less-than-suitable placement.
Next articleStop paying for advertising fraud!


Cookbook author and accidental food-community builder Hetty McKinnon has a secret kitchen hack. Actually, I'm pretty sure that she's got more than one. But when I caught up with her for the 9Honey Kitchen foodie podcast 'What the F is for Dinner' she had one that she was willing to share. And it's a good one, so get ready.
Take a listen to the fifteen-minute dinner hack podcast 'What the F is for Dinner' as Jane de Graaff chats to Arthur Street Kitchen's Hetty McKinnon about the miracle uses of pasta water and how it will change your sauces tonight.
"It's just a litre of water and one packet of pasta," Hetty tells me as we discuss her latest cookbook Family: New Vegetarian Classics to Comfort and Nourish. Apparently, this is all it takes to start the magic. "Just cook it until you've got a little bit of water left. Starchy water." But just you wait.
Hetty is in Sydney on a flying trip from her current hometown of Brooklyn in New York, and I'll be honest, I was thrilled to see her.
I've been a fan of Hetty's since she started Arthur Street Kitchen back in 2011, a Surry Hills lunch delivery service where she hand-delivered her vegetarian creations (where you don't miss the meat)—by bike—to her office-bound customers, getting to know locals and loyal fans in a way more akin to friendship than business dealings. It was a model that plenty of people tried to replicate, but it takes a certain kind of person to really make friends with salad… and Hetty is that person.
The business became so popular that she released her first cookbook Community: Recipes from Arthur Street Kitchen in 2013.
Things were sweet. In her own quiet way, Hetty was bringing meat-free and plant-based dishes to the hungry hoards and she was well ahead of the plant-based upswing of the last two years.
Then, just when it was all going so well, she was thrown the extraordinary opportunity to move her young family not just to the U.S., but to New York.
Anyone else would have seen the risks and wondered if they were too great.
But for Hetty, it was her food that gave her courage. She'd created a loving community brought together by food in Sydney, and by god the principles of Arthur Street Kitchen were bound to be transferable to the other side of the world. Weren't they? So off she went.
As her website states: No matter where you live in the world, it is the daily rituals of food that bind and connect us.
Five years later, the current iteration of Arthur Street Kitchen has produced two more cookbooks (first Neighbourhood: Salads, Sweets and Stories from Home and Abroad, and now Family), along with a whole new community for Hetty and her family.
Take a listen to how it all went down in the podcast here, and get ready to hear the clever part that pasta water plays. Because her ultimate sauce secret is this; pasta cooking water is the stuff of magic and it makes every sauce better.
If you know what you're doing, then you can use it to enhance your sauces, replace cream, or turn cheese into silk in everything from this amazing mac'n'cheese recipe to carbonara, bechamel and more.
Yeah, you had me at silky.
If you've been tipping it all down the sink as you drain your pasta for bolognese, then you've been missing out on one of the cooking world's greatest thickening and enriching agents.
Take a listen to the podcast, download the recipe and try it for yourself tonight.
You'll cut the calories in plenty of cream driven sauces, without compromising on texture or flavour. The secret is out.
RELATED: Hetty's food trends heading our way from the U.S.


It's been a little over a week since we were marooned. After four days at sea on the Imua, and four more nights sleeping on the docked vessel we finally moved ourselves from ship to shore and waved goodbye to our setup crew last Friday. Second thoughts be damned, we are stuck here for up to eight months with no hope of escape. Though this might sound dramatic, the feeling would have been mutual had you been standing on a deserted wharf as your one link to society slowly pulled away. Barring health or weather emergencies, we expect to be here until around the end of June. No return trip is currently planned however as it will depend on scheduling and boat/crew availability. It is never expected that a strike team will be on Johnston for longer than eight months though.
Our first week has consisted mainly of revitalizing camp and clearing routes for our upcoming monitoring of the ecological health of the island. Camp itself is shockingly comfortable by my standards. Life centers around the Ant Cave, a kitchen, library, lounge, and meeting place all-in-one housed in military bunker designed with nuclear blasts in mind. This means no windows—hence "cave." It was also highly cluttered when we arrived; filled to the brim with old food, files, gadgets, and mystery boxes and buckets from past crews. Despite this, the Ant Cave maintains a certain charm. The large bunker doors are never closed, so light and fresh air (and, admittedly, pests) filter in at nature's discretion. This gives a sense of being outside even while in a dark, high-ceilinged dome. There is a medium-sized array of solar panels that provide us with enough juice to consistently light and power electronics in the ant cave. Stove and refrigerators are powered by propane. There is no plumbing, but we have a makeshift sink rig as well as composting toilettes. The front and back areas of the Ant Cave are covered with large tarps to provide additional shade for eating and relaxing.
Beyond our giant outdoor dining room table lie our personal tents. Each of the five of us has been graced with more personal space than most field camps could dream of. A nine-person camping tent shaded with a large tarp set in a clearing of iron woods. Each setup is a comfortable distance from the next, and only one of the dwellings is even visible from the Ant Cave. I set to work personalizing my own space pretty quickly, and my "yard" is almost too endearing (I sometimes don't want to leave).
Johnston as a whole is a bizarre mix of beauty and decay. Having been built up as a military base, the substrate in most areas is concrete. There are crumbling bunkers scattered around and areas that bare indicators of residential use. At one point, over a thousand people lived on Johnston. Undeterred by the seemingly inhospitable conditions, vegetation pushes through the cracks and has overtaken most of the abandoned island. There is no shortage of trees and bushes for seabirds to nest in. Only the runway and main thoroughfares for bicycles and gators remain clear.
Most of Johnston is enclosed in sea wall. Thus, there aren't many spots to walk directly into the crystal-clear aquamarine water. But getting over the sea wall in most areas requires nothing more than hopping a small concrete border and descending a sloping embankment. About a dozen feet or so beyond the divide, giant table coral heads teeming with fish cluster just a few feet below the surface. Sometimes the ocean comes to great you in full force at this dramatic separation between island and water. I was scrubbing my tent's rug at the sea wall one afternoon when a four-foot giant moray swam casually between my legs. It took me fully by surprise since the otherwise striking silhouette of its undulating body was hidden beneath the rug until it was almost touching me. My pre-programmed reaction was to leap onto the sea wall. Though I know morays aren't looking at people as a source of food, their snake-like appearance doesn't fail to trigger the amygdala. Once I was out of reach though, I watched in stunned silence as the green-brown predator continued away from the sea wall, likely in search of something more edible than a welcome mat.
The most powerful emotion I've experienced upon being left at Johnston has been relief. A month living in Honolulu did plenty to inflame the anxieties that had somewhat subsided since leaving DC, and the lack of personal space on a merchant vessel didn't offer much reprieve. The sigh of relief I breathed upon entering my tent the first night felt like a long-delayed exhale to an inhale that had possessed me since my last re-entrance to society from remote living almost five years ago. Subsequently, the moments that have really taken me aback so far have been steeped in solitude. Peering through my tent window at the several stars visible from my pillow. Coming up a hill into a field as the sun rises, flanked on either side by nesting boobies but not a human in sight. Swimming naked off one of the tiny "corner beaches" with only fish for company. Sitting on the sea wall watching the sun and birds return to their respective hiding places. Of course I haven't forgotten about my crew. I recognize that I live in a small village, not a private retreat. We all have strengths, weaknesses, and quirks and there will be difficulties in maintaining a functioning living space together. But a one square mile island provides quite a bit of room for five people. Obviously, I already miss my loved ones at home. But I will be interested to see if my introversion eventually expires, and I start hungering for some novel human interaction. Only time will tell.


Dulles Corridor Metrorail Project crews continue construction activities for the Metrorail Silver Line, Phase 2, including lane, shoulder, road, and ramp closures at locations along the Dulles Toll Road (DTR), Dulles International Airport Access Highway (DIAAH), Dulles Greenway, Herndon Parkway, Sunrise Valley Drive, Old Ox Road, and Moran/Lockridge Roads during the week of Mar. 11 - Mar. 17. In addition, Silver Line Phase 1 lane closures are planned Monday, March 12, through Friday, March 16, along eastbound and westbound Route 7 in Tysons near the Silver Line Metro stations to make manhole repairs.
When: Monday, Mar. 12 - Friday, Mar. 16, 10 a.m. to 3:30 p.m. and 9 p.m. to 5 a.m.
Saturday, Mar. 17, 10 a.m. to 3:30 p.m. and 8 p.m. to 5 a.m.
When: Monday, Mar. 12 - Friday, Mar. 16, 9:30 a.m. to 3 p.m. and 8 p.m. to 5 a.m.
When: Monday, Mar. 12 - Friday, Mar. 16, 8:30 a.m. to 3 p.m. and 6 p.m. to 5 a.m.
Saturday, Mar.17, 5 a.m. to 2 p.m. and 6 p.m. to 5 a.m.
Saturday, Mar. 17, 5 a.m. to 2 p.m. and 8 p.m. to 5 a.m.
When: Monday, Mar. 12 - Friday, Mar. 16, 10 a.m. to 6 p.m. and 6 p.m. to 5 a.m.
Saturday, Mar. 17, 6 a.m. to 6 p.m.
Where: Lane closures will be between mile marker 7.6 and 12.2 (from Broadlands Boulevard to the end of the ramp to the eastbound Dulles Greenway MainToll Plaza), short lane closures of varying lengths will occur.
When: Monday, Mar. 12 - Friday, Mar. 16, 6 a.m. to 3 p.m., 8 p.m. to 6 a.m.
When: Monday, Mar. 12 - Thursday, Mar. 15, 9:30 a.m. to 3:30 p.m.
When: Monday, March 12, 9:30 a.m. to 3:30 p.m.
When: Tuesday, Dec. 13, 9:30 a.m. to 3:30 p.m.
When: Wednesday, Dec. 14, 9:30 a.m. to 3:30 p.m.
When: Thursday, Dec. 15, 9:30 a.m. to 3:30 p.m.
When: Friday, March 16, 9:30 a.m. to 12 p.m.


Is poetry enough to deflect war rhetoric?
"…Yer warship you worship, Yer worship yer warship, Yer warship yer worship, Yuh worship a warship, yuh worship a warship …" Toronto writer and performer Paul Dutton belts out — almost out of breath — the chanting climax of his poem, "Eighth Sea," at an anti-war poetry reading last week at a restaurant in the Annex.
The readings were an opportunity for a group of Toronto writers, Writers Against the War, to give a different perspective than what the media and politicians are offering on the looming war on Iraq.
An audience of more than a hundred people gathered in the Plaza Flamingo Restaurant on College Street W. for a reading called Words Over War, an event to commemorate March 5 as International Day of Poetry Against the War.
"If people have come here they have some notion of what's happening and we're hopeful we can look at what [the possibility of a war] means for an individual," says Toronto writer Maggie Helwig.
John Oughton, a literary journalist and professor of literature at Centennial College, read his poetry and hoped the gathering would change how people think about the media messages they consume.
Oughton, who lived in Iraq for more than a year as a teenager, says that creative writing is a way to establish a personal connection with what's going on in the world — a way of synthesizing what's going on in the outside world with a person's emotions.
"People are so poor in Iraq," he says. "People became blind because they had no medicine for their eyes and many lived in mud huts. We take things for granted here and don't know these things until we travel," he says.
Like Oughton, writer Helwig believes the mainstream media oversimplify the issues surrounding the looming war on Iraq. She's been involved in politics all her adult life and says that she can detect when the news smells bad.
She says that these poets write about the struggles of people and this, on a larger scale, engages with politics. But she says it's not political poetry. "Saying it's political poetry is oversimplifying it," she says.
"Writers have a power that we have to take seriously," says Helwig. The writers, artists and playwrights who shared their words had their unique reasons for being against the war.
WAW is a Web-based collective of people that welcomes anyone, "as long as you call yourself a writer," says Helwig, who initiated the Toronto chapter of the group early this year, after an e-mail she read about the group forming in Vancouver at the behest of author John Gilmore. The list of writers on the group's roster grew after Laura Bush cancelled a major literary symposium at the White House after she got word that anti-war writing would be read there.
In response, poets across the continent put together anti-war poetry anthologies and held peace readings and letter-writing campaigns to international governments. About 20 writers with WAW marched on February 15, where peace rallies were held around the world.
Christakos organized the night in a week and says similar events are on the agenda in the near future. Despite the short notice, the event was taped for CBC radio and CIUT 89.5 HM and filmed for CBC Newsworld so audiences elsewhere can experience Words Over War, she says.


Spring is my favorite time of year! The sun is shining, the days get longer and warmer, birds are singing, flowers blooming, and there is new life all around us. It is truly a glorious time of year. However – lest we forget – it is the storms and the rain that nourish this new growth. It is all that has died that feeds and makes room for new life.
Easter Sunday is by far the most glorious celebration of the Christian year. This is the day we celebrate the empty tomb. This is the day we celebrate the resurrection and new life. This is the day that all things are made new and we celebrate life eternal where there once was death. On this day churches around the world experience the greatest turn out and the highest attendance by far of any other day. Why? Because people like to celebrate life, hope, love, and joy.
However – lest we forget – you must pass through Christ's suffering and death in order to experience the resurrection and new life! It's the April showers that bring the Easter flowers. You can't have one without the other.
On Thursday, April 18th we will celebrate Maundy Thursday (Holy Thursday). The word "Maundy" comes from the Latin word that means "commandment". In John 13:34 Jesus tells his disciples "I give you a new commandment, that you love one another. Just as I have loved you, you also should love one another." On this day our Lord and Savior sat with his 12 closest friends and celebrated his last supper and told them of his sacrifice for them and us. During this meal he also demonstrated that to be a true leader you must first serve. He did this by washing his disciples' feet.
On Friday, April 19th we will celebrate Good Friday. It seems strange to celebrate the torture, suffering, and death of our Lord and Savior and call that day "Good". The reason it is "Good Friday" is because only through his sacrifice are we given life – eternal life. 1 Peter 2:24 tells us "He himself bore our sins in his body on the cross, so that, free from sins, we might live for righteousness; by his wounds you have been healed". So, we gather and say thank you to God for his sacrifice for us.
Don't forget to also honor and celebrate Holy Saturday. This is the day we honor and keep God's commandment by observing the Sabbath. This is what Jesus' followers did to honor God's commandment even though they had just lost their Lord and Savior. This demonstrates how vital it is to always follow the will of God, even in times of distress and heartache.
So, let us all celebrate Easter with our family, friends, and neighbors but don't skip all that leads up to this glorious day. It's the storms that make the SUN even more glorious!


text:
namespace functions {

namespace {

// Corresponds to the various values of "what" in the function call.
enum What {
  WHAT_FILE,
  WHAT_NAME,
  WHAT_EXTENSION,
  WHAT_DIR,
  WHAT_ABSPATH,
  WHAT_GEN_DIR,
  WHAT_OUT_DIR,
};

// Returns the directory containing the input (resolving it against the
// |current_dir|), regardless of whether the input is a directory or a file.
SourceDir DirForInput(const Settings* settings,
                      const SourceDir& current_dir,
                      const std::string& input_string) {
  if (!input_string.empty() && input_string[input_string.size() - 1] == '/') {
    // Input is a directory.
    return current_dir.ResolveRelativeDir(input_string,
        settings->build_settings()->root_path_utf8());
  }

  // Input is a directory.
  return current_dir.ResolveRelativeFile(input_string,
      settings->build_settings()->root_path_utf8()).GetDir();
}

std::string GetOnePathInfo(const Settings* settings,
                           const SourceDir& current_dir,
                           What what,
                           const Value& input,
                           Err* err) {
  if (!input.VerifyTypeIs(Value::STRING, err))
    return std::string();
  const std::string& input_string = input.string_value();
  if (input_string.empty()) {
    *err = Err(input, "Calling get_path_info on an empty string.");
    return std::string();
  }

  switch (what) {
    case WHAT_FILE: {
      return FindFilename(&input_string).as_string();
    }
    case WHAT_NAME: {
      std::string file = FindFilename(&input_string).as_string();
      size_t extension_offset = FindExtensionOffset(file);
      if (extension_offset == std::string::npos)
        return file;
      // Trim extension and dot.
      return file.substr(0, extension_offset - 1);
    }
    case WHAT_EXTENSION: {
      return FindExtension(&input_string).as_string();
    }
    case WHAT_DIR: {
      base::StringPiece dir_incl_slash = FindDir(&input_string);
      if (dir_incl_slash.empty())
        return std::string(".");
      // Trim slash since this function doesn't return trailing slashes. The
      // times we don't do this are if the result is "/" and "//" since those
      // slashes can't be trimmed.
      if (dir_incl_slash == "/")
        return std::string("/.");
      if (dir_incl_slash == "//")
        return std::string("//.");
      return dir_incl_slash.substr(0, dir_incl_slash.size() - 1).as_string();
    }
    case WHAT_GEN_DIR: {
      return DirectoryWithNoLastSlash(
          GetGenDirForSourceDir(settings,
                                DirForInput(settings, current_dir,
                                            input_string)));
    }
    case WHAT_OUT_DIR: {
      return DirectoryWithNoLastSlash(
          GetOutputDirForSourceDir(settings,
                                   DirForInput(settings, current_dir,
                                               input_string)));
    }
    case WHAT_ABSPATH: {
      if (!input_string.empty() &&
          input_string[input_string.size() - 1] == '/') {
        return current_dir.ResolveRelativeDir(input_string,
            settings->build_settings()->root_path_utf8()).value();
      } else {
        return current_dir.ResolveRelativeFile(input_string,
            settings->build_settings()->root_path_utf8()).value();
      }
    }
    default:
      NOTREACHED();
      return std::string();
  }
}

}  // namespace

const char kGetPathInfo[] = "get_path_info";
const char kGetPathInfo_HelpShort[] =
    "get_path_info: Extract parts of a file or directory name.";
const char kGetPathInfo_Help[] =
    "get_path_info: Extract parts of a file or directory name.\n"
    "\n"
    "  get_path_info(input, what)\n"
    "\n"
    "  The first argument is either a string representing a file or\n"
    "  directory name, or a list of such strings. If the input is a list\n"
    "  the return value will be a list containing the result of applying the\n"
    "  rule to each item in the input.\n"
    "\n"
    "Possible values for the \"what\" parameter\n"
    "\n"
    "  \"file\"\n"
    "      The substring after the last slash in the path, including the name\n"
    "      and extension. If the input ends in a slash, the empty string will\n"
    "      be returned.\n"
    "        \"foo/bar.txt\" => \"bar.txt\"\n"
    "        \"bar.txt\" => \"bar.txt\"\n"
    "        \"foo/\" => \"\"\n"
    "        \"\" => \"\"\n"
    "\n"
    "  \"name\"\n"
    "     The substring of the file name not including the extension.\n"
    "        \"foo/bar.txt\" => \"bar\"\n"
    "        \"foo/bar\" => \"bar\"\n"
    "        \"foo/\" => \"\"\n"
    "\n"
    "  \"extension\"\n"
    "      The substring following the last period following the last slash,\n"
    "      or the empty string if not found. The period is not included.\n"
    "        \"foo/bar.txt\" => \"txt\"\n"
    "        \"foo/bar\" => \"\"\n"
    "\n"
    "  \"dir\"\n"
    "      The directory portion of the name, not including the slash.\n"
    "        \"foo/bar.txt\" => \"foo\"\n"
    "        \"//foo/bar\" => \"//foo\"\n"
    "        \"foo\" => \".\"\n"
    "\n"
    "      The result will never end in a slash, so if the resulting\n"
    "      is empty, the system (\"/\") or source (\"//\") roots, a \".\"\n"
    "      will be appended such that it is always legal to append a slash\n"
    "      and a filename and get a valid path.\n"
    "\n"
    "  \"out_dir\"\n"
    "      The output file directory corresponding to the path of the\n"
    "      given file, not including a trailing slash.\n"
    "        \"//foo/bar/baz.txt\" => \"//out/Default/obj/foo/bar\"\n"

    "  \"gen_dir\"\n"
    "      The generated file directory corresponding to the path of the\n"
    "      given file, not including a trailing slash.\n"
    "        \"//foo/bar/baz.txt\" => \"//out/Default/gen/foo/bar\"\n"
    "\n"
    "  \"abspath\"\n"
    "      The full absolute path name to the file or directory. It will be\n"
    "      resolved relative to the currebt directory, and then the source-\n"
    "      absolute version will be returned. If the input is system-\n"
    "      absolute, the same input will be returned.\n"
    "        \"foo/bar.txt\" => \"//mydir/foo/bar.txt\"\n"
    "        \"foo/\" => \"//mydir/foo/\"\n"
    "        \"//foo/bar\" => \"//foo/bar\"  (already absolute)\n"
    "        \"/usr/include\" => \"/usr/include\"  (already absolute)\n"
    "\n"
    "      If you want to make the path relative to another directory, or to\n"
    "      be system-absolute, see rebase_path().\n"
    "\n"
    "Examples\n"
    "  sources = [ \"foo.cc\", \"foo.h\" ]\n"
    "  result = get_path_info(source, \"abspath\")\n"
    "  # result will be [ \"//mydir/foo.cc\", \"//mydir/foo.h\" ]\n"
    "\n"
    "  result = get_path_info(\"//foo/bar/baz.cc\", \"dir\")\n"
    "  # result will be \"//foo/bar\"\n"
    "\n"
    "  # Extract the source-absolute directory name,\n"
    "  result = get_path_info(get_path_info(path, \"dir\"), \"abspath\")\n";

Value RunGetPathInfo(Scope* scope,
                     const FunctionCallNode* function,
                     const std::vector<Value>& args,
                     Err* err) {
  if (args.size() != 2) {
    *err = Err(function, "Expecting two arguments to get_path_info.");
    return Value();
  }

  // Extract the "what".
  if (!args[1].VerifyTypeIs(Value::STRING, err))
    return Value();
  What what;
  if (args[1].string_value() == "file") {
    what = WHAT_FILE;
  } else if (args[1].string_value() == "name") {
    what = WHAT_NAME;
  } else if (args[1].string_value() == "extension") {
    what = WHAT_EXTENSION;
  } else if (args[1].string_value() == "dir") {
    what = WHAT_DIR;
  } else if (args[1].string_value() == "out_dir") {
    what = WHAT_OUT_DIR;
  } else if (args[1].string_value() == "gen_dir") {
    what = WHAT_GEN_DIR;
  } else if (args[1].string_value() == "abspath") {
    what = WHAT_ABSPATH;
  } else {
    *err = Err(args[1], "Unknown value for 'what'.");
    return Value();
  }

  const SourceDir& current_dir = scope->GetSourceDir();
  if (args[0].type() == Value::STRING) {
    return Value(function, GetOnePathInfo(scope->settings(), current_dir, what,
                                          args[0], err));
  } else if (args[0].type() == Value::LIST) {
    const std::vector<Value>& input_list = args[0].list_value();
    Value result(function, Value::LIST);
    for (const auto& cur : input_list) {
      result.list_value().push_back(Value(function,
          GetOnePathInfo(scope->settings(), current_dir, what, cur, err)));
      if (err->has_error())
        return Value();
    }
    return result;
  }

  *err = Err(args[0], "Path must be a string or a list of strings.");
  return Value();
}

}  // namespace functions

redpajama_set_name: RedPajamaGithub


text:
Q: htaccess rewrite replace space with - I am really stuck on a rewrite rule and wonder if anyone can help.
I am pulling data from a database, and as an example the field "name" i use sometimes has 2 words in with a space between. I use this alot on the site but in the url i want to replace the space with a - as i use this field as a variable to determine the record i want to pull.
so i need to turn clubs/premier league/manchester city/
into
clubs/premier-league/manchester-city/
thanks in advance
richard

A: Can you try this rule in your .htaccess:
RewriteEngine on
RewriteRule ^clubs/([^\s]+)\s([^\s]+)/([^\s]+)\s([^\s]+)/$ /clubs/$1-$2/$3-$4/ [R=302,NC,L]


text:
"Adequate" Disclosure In A Trust Disclosure Document
PROBATE CORNER
By: David M. Garten, Esq.
ARTICLE: "Adequate" Disclosure In A Trust Disclosure Document
Section 736.1008(2), F.S. reads: "Unless sooner barred by adjudication, consent, or limitations, a beneficiary is barred from bringing an action against a trustee for breach of trust with respect to a matter that was adequately disclosed in a trust disclosure document unless a proceeding to assert the claim is commenced within 6 months after receipt from the trustee of the trust disclosure document or a limitation notice that applies to that disclosure document, whichever is received later." [Emphasis added]
What is an "adequate" disclosure? Pursuant to §736.1008(4)(a), F.S., a matter is adequately disclosed "if the document provides sufficient information so that a beneficiary knows of a claim or reasonably should have inquired into the existence of a claim with respect to that matter." Or, as stated in the negative, a disclosure is inadequate if there is insufficient information provided to a beneficiary about a claim or a potential claim against a trustee for breach of trust.
For example, in Turkish v. Brody, 2016 Fla. App. LEXIS 17684 (Fla. 3rd DCA 11/30/16), the court found that the limitation notice was not applicable because the co-trustees failed to adequately disclose a matter in a trust disclosure document.
In Turkish, the Settlor created two trusts: Trust Number One and Trust Number Two. The sole residuary beneficiaries of both trusts were the Settlor's son and daughter, Arthur Turkish ("Arthur") and Carole. Arthur and his daughter, Shari Turkish ("Shari") were the co-trustees of both trusts.
In 2008, the Settlor settled an outstanding $3M gift tax dispute with the IRS and requested that Arthur obtain the money to pay the IRS settlement from Trust Number One, transfer the money to himself, and then personally loan her the money. After the Settlor paid the IRS, she executed an unsecured promissory note evidencing the indebtedness to Arthur, individually. Carole objected to the IRS transaction asserting that the transaction was a breach of the co-trustees' responsibility because the effect was to give over $1 million to Arthur from Trust Number One which was intended to benefit both Arthur and Carole.
In 2009, Carole received a revised trust accounting for the time period 2005-2007, a Receipt and Release Agreement ("RRA"), and a 6-month limitation notice. In response to Carole's objections to the IRS transaction, the co-trustees and Carole executed a Supplemental Release Agreement ("SRA"), which provides that the SRA was supplementing the RRA for the 2005-2007 accountings. The SRA provides that the parties were settling all claims arising out of the IRS transaction. The SRA accurately reflects the IRS transaction and Carole's objections to the IRS transaction. Specifically, the SRA provides that Arthur, individually, was willing to "assign the Note to Trust Number One in satisfaction of any and all claims against him by all beneficiaries of Trust Number One" arising out of the IRS transaction, and that "each interested party . . . waives any right he or she has, might have or has had to object to any action or omission of Arthur Turkish and/or Shari Turkish, individually, or of Arthur Turkish and/or Shari Turkish, as Trustees of Trust Number One."
The Settlor died on June 2, 2010. On July 7, 2010, Carole received the 2008 accountings for both Trusts, a RRA, a 6-month limitation notice, and a Summary of Assets which adequately disclosed the value of assets in both Trusts.
On Aril 6, 2011 (more than 6 months after Carole's receipt of the 2008 accounting), Carole sued Arthur and Shari for breach of fiduciary duty and unjust enrichment. The co-trustees defended, in part, on the basis that Carole's claims for breach of trust relating to the IRS transaction are barred by Florida's 6-month statute of limitations because the 2008 accounting adequately disclosed the IRS transaction.
The court conducted an evidentiary hearing on the issues pertaining to the 2005-2007 accountings, the RRA for those accountings, and the SRA pertaining to the IRS transaction. The court found that Arthur, as a co-trustee, failed to disclose to Carole, a beneficiary, material facts pertaining to the matter being settled in the SRA. Specifically, Arthur failed to disclose to Carole that she was agreeing to settle all claims against Arthur and Shari, individually and as co-trustees, relating to the IRS transaction based upon Arthur's agreement to "contribute" the promissory note executed by Mrs. Trask, which was virtually a worthless piece of paper, to Trust Number One. Prior to Carole's execution of the SRA, not only did Arthur know that Mrs. Trask had very few personal assets, he also knew, but failed to disclose, that the Bal Harbour condominium Mrs. Trask lived in was owned by the 1980 Trust, not Mrs. Trask; Arthur was the sole beneficiary of the 1980 Trust upon Mrs. Trask's death; and the Bal Harbour condominium would not become an Estate asset upon Mrs. Trask's death, but instead would pass directly to Arthur.
In response, the co-trustees argued that even if the SRA was voidable based on Arthur's failure to disclose material facts to Carole before she signed the SRA, Carole's claims for breach of trust relating to the IRS transaction are barred by Florida's 6 month statute of limitations because the 2008 trust disclosure documents, including the 2008 accounting, adequately disclosed the IRS transaction.
The appellate court disagreed. The court reasoned that "Carole's claim against the Co-Trustees for breach of fiduciary duty was not based solely on the IRS transaction itself, but also on Arthur's agreement to resolve Carole's objections to the IRS transaction by "contributing" the promissory note executed by Mrs. Trask to Trust Number One without disclosing that he knew that the promissory note was virtually worthless." The court held that the 6-month limitation notice didn't apply because the 2008 trust accounting failed to disclose that the Note assigned to Trust Number One was essentially worthless because there are no assets in Mrs. Trask's name.
PRACTICE POINTER: If you want to take advantage of the 6 month statute of limitations for breach of trust, DISCLOSE, DISCLOSE, DISCLOSE!!!