text:
\section{Introduction } \label{Sym_Introduction}

The geometry of the visual system has been widely studied over years, starting from the first celebrated descriptions given by D. H. Hubel and T. N. Wiesel \citep{HW,hubel} and advancing with a number of more recent geometrical models of the early stages of the visual pathway, describing the functional architectures in terms of group invariances \citep{hoffman,petitot,cs06}. Some works have also focused on reproducing processing mechanisms taking place in the visual system using these models -- e.g. detection of perceptual units in \citet{perceptual}, image completion in \citet{Sanguinetti2008}.

On the other hand, relations between Convolutional Neural Networks (CNNs) and the human visual system have been proposed and studied, in order to make CNNs even more efficient in specific tasks \citep[see e.g.][]{Poggio2007}. For instance, in \cite{Yamins2015} and \cite{Yamins2016} the authors were able to study several cortical layers by focusing on the encoding and decoding ability of the visual system, whereas in \citet{Poggio1995,Anselmi2014,Poggio2016} the authors studied some invariance properties of CNNs. A parallel between horizontal connectivity in the visual cortex and lateral connections in neural networks has also been proposed in some works \citep[see e.g.][]{liang,spoerer,Sherstinsky}. Recently, other biologically-inspired modifications of the classical CNN architectures have been introduced \citep[][]{Montobbio,Bertoni}.

 In this paper, we combine the viewpoints of these strands of research by studying the emergence of geometrical symmetries in the early layers of a biologically inspired CNN architecture. We will focus on drawing a parallel between the patterns learned from natural images by specific computational blocks of the network, and the symmetries arising in the functional architecture of the Lateral Geniculate Nucleus (LGN) and the primary visual cortex (V1).

\section{Group symmetries in the early visual pathway} \label{Sym_Visual_System}

Over the years, the functional architecture of the early visual pathway has often been modelled in terms of geometric invariances arising in its organization, e.g. in the spatial arrangement of cell tuning across retinal locations, or in the local configuration of single neuron selectivity.
Certain classes of visual cells are shown to act, to a first approximation, as linear filters on an optic signal: the response of one such cell to a visual stimulus $I$, defined as a function on the retina, is given by the integral of $I$ against a function $\psi$, called the \emph{receptive profile} (RP) of the neuron:
\begin{equation}\label{linfilt}
z := \int I(x,y)\psi(x,y)dxdy.
\end{equation}
This is the case for cells in the Lateral Geniculate Nucleus (LGN) and for simple cells in the primary visual cortex (V1) \citep[see e.g. ][]{petitot,cs06}. Both types of cells are characterized by locally supported RPs, i.e. they only react to stimuli situated in a specific retinal region. Each localized area of the retina is known to be associated with a bank of similarly tuned cells \citep[see e.g.][]{HubelWiesel,perceptual}, yielding an approximate invariance of their RPs under translations.

The set of RPs of cells is typically represented by a bank of linear filters $\{\psi_p\}_{p \in \mathcal{G}} \subseteq L^2(\mathbb{R}^2)$ \citep[for some references see e.g.][]{petitot, cs06,symplectic}. The feature space $\mathcal{G}$ is typically specified as a group of transformations of the plane $\{T_p, \;p \in \mathcal{G}\}$ under which the whole filter bank is invariant: each profile $\psi_p$ can be obtained from any other profile $\psi_q$ through the transformation $T_{p-q}$. The group $\mathcal{G}$ often has the product form $\mathbb{R}^2\times\mathcal{F}$, where the parameters $(x_0,y_0) \in\mathbb{R}^2$ determine the retinal location where each RP is centered, while $f\in\mathcal{F}$ encodes the selectivity of the neurons to other local features of the image, such as orientation and scale.

\subsection{Rotational symmetry in the LGN}

A crucial elaboration step for human contrast perception is represented by the processing of retinal inputs via the radially symmetric families of cells present in the LGN \citep{HubelWiesel,hubel}. The RPs of such cells can be approximated by a Laplacian of Gaussian (LoG):
\begin{equation}
\label{LoG}
\psi_{LoG}(x,y) = - \frac{1}{\pi \sigma^4} \left[ 1 - \frac{x^2 + y^2}{2\sigma^2} \right] e^{-\frac{x^2 + y^2}{2\sigma^2}},
\end{equation}
where $\sigma$ denotes the standard deviation of the Gaussian function \citep[see e.g.][]{petitot}.

 \subsection{Roto-translation symmetries in V1 and the lateral connectivity}\label{v1}

The invariances in the functional architecture of V1 have been described through a variety of mathematical models. The sharp orientation tuning of simple cells is the starting point of most descriptions. This selectivity is not only found in the response of each neuron to feedforward inputs, but is also reflected in the \emph{horizontal} connections taking place between neurons of V1. These connections show facilitatory influences for cells that are similarly oriented; moreover, the connections departing from each neuron spread anisotropically, concentrating along the axis of its preferred orientation \cite[see e.g.][]{bosking}.

 An established model for V1 simple cells is represented by a bank of Gabor filters $\{\psi_{x_0,y_0,\theta,\sigma}\}_{(x_0,y_0,\theta,\sigma) \in \mathbb{R}^2\times S^1\times\mathbb{R}^2_+}$ built by translations $T_{(x_0,y_0)}$, rotations $R_\theta$ and dilations $D_{\sigma_x, \sigma_y}$ of the filter
 \begin{equation}
 \label{eq:Gabor}
     \psi_{0,0,0,1}(x,y) = A e^{-  \frac{x^2 + y^2}{2}  }   \cos (2 \pi f x + \phi),
 \end{equation}
 where $A$ is the amplitude and $f$ is the frequency of the filter and $\phi$ is the phase which indicates if the Gabor filter is even or odd. See e.g. \citet{daug} and \citet{lee}.

 The evolution in time $t\mapsto a(p,t)$ of the activity of the neural population at $p \in \mathbb{R}^2\times \mathcal{F}$ is assumed in \citet{bresscow03} to satisfy a Wilson-Cowan equation \citep{wilcow}:
 \begin{equation}\label{meanfield}
  \partial_t  a(p,t) = -\alpha \: a(p,t) \\
  +\: s\left(\int K(p,p')a(p',t)dp' + z(p,t)\right).
 \end{equation}
 Here, $s$ is a nonlinear activation function; $\alpha$ is a decay rate; $z$ is the feedforward input corresponding to the response of the simple cells in presence of a visual stimulus, as in Eq. (\ref{linfilt}); and the kernel $K$ weights the strength of horizontal connections between $p$ and $p'$. The form of this connectivity kernel has been investigated in a number of studies employing differential geometry tools. A breakthrough idea in this direction has been that of viewing the feature space as a fiber bundle with basis $\mathbb{R}^2$ and fiber $\mathcal{F}$. This approach first appeared in the works of \citet{koenderink} and \citet{hoffman}. It was then further developed by \citet{petitond} and \citet{cs06}. In the latter work, the model is specified as a sub-Riemannian structure on the Lie group $\mathbb{R}^2 \times S^1$ by requiring the invariance under roto-translations. Other works extended this approach by inserting further variables such as scale, curvature, velocity \cite[see e.g.][]{symplectic,abbfav,bccs}.

 The long-range horizontal connections of V1 are believed to constitute the neural implementation of contour completion, i.e. the ability to group local edge items into extended curves. This perceptual phenomenon has been described through \emph{association fields} \citep{field}, characterizing the geometry of the mutual influences between oriented local elements. See Figure \ref{fig:Visual_System}A from the experiment of Field, Heyes and Hess. Association fields have been characterized in \citet{cs06} as families of integral curves of the two vector fields
 \begin{equation} \label{X1X2}
    \Vec{X_1} = (\cos \theta, \sin \theta, 0), \;\;\;\; \Vec{X_2} = (0,0,1)
\end{equation}
generating the sub-Riemannian structure on $\mathbb{R}^2 \times S^1$. Figure \ref{fig:Visual_System}B  shows the 3-D constant coefficients integral curves of  the vector fields (\ref{X1X2}) and Figure \ref{fig:Visual_System}C their 2-D projection.
 These integral curves are the solution of the following ordinary differential equation:
\begin{equation*}
    \gamma'(t) = X_1 (\gamma(t)) + k X_2(\gamma(t)).
\end{equation*}
The curves starting from  $(0,0,0)$  can be rewritten explicitly in the following way:
\begin{equation}
    \begin{split}
x = \frac{1}{k} sin(kt), \;\;\;\;\;\;\;
y =  \frac{1}{k} (1-cos(kt)), \;\;\;\;\;\;\;
\theta  =  kt.
    \end{split}
    \label{SanguinettiCurves}
\end{equation}
while integral curves starting from a general point $(x_0,y_0,\theta_0)$ can be generated from equations (\ref{SanguinettiCurves}) by translations $T_{(x_0,y_0)}$ and rotations $R_\theta$.

The probability of reaching a point $(x,y,\theta)$ starting from the origin and moving along the stochastic counterpart of these curves can be described as the fundamental solution of a second order differential operator expressed in terms of the vector fields $\Vec{X_1} $, $\Vec{X_2} $. This is why the fundamental solution of the sub-Riemannian heat kernel or Fokker Planck (FP) kernel have been proposed as alternative models of the cortical connectivity. This perspective based on connectivity kernels was further exploited in  \cite{Montobbio2020}: the model of the cortex was rephrased in terms of metric spaces, and the long range connectivity kernel directly expressed in terms of the cells RPs: in this way a strong link was established between the geometry of long range and feedforward cortical connectivity.
Finally, in \citet{edge-stat} a strong relation between these models of cortical connectivity and statistics of edge co-occurrence in natural images was proved: the FP fundamental solution is indeed a good model also for the natural image statistics.
In addition, starting from a connectivity kernel parameterized in terms of position and orientation, in \citet{edge-stat} they obtained  the 2-D vector field represented in red in  Figure \ref{fig:Visual_System}D , whose integral curves (depicted in blue) provide an alternative  model of association fields, learned from images.

\begin{figure}
\begin{center}
\includegraphics[width=.8\textwidth]{Visual_System.jpg}
\end{center}
\caption{\textbf{(A)} Association fields from the experiment of Field, Hayes and Hess \citep{field}. \textbf{(B)} 3D representation of the association field with contact planes of integral curves of the fields (\ref{X1X2}) with varying values of the parameter $k$, from \citep{cs06}. \textbf{(C)} Integral curves of the fields (\ref{X1X2}) with varying $k$, from \citep{cs06}. \textbf{(D)} The vector field of unitary vectors oriented with the maximal edge co-occurrence probability (red) with superimposed its integral curves (blue), from \citep{edge-stat}.}\label{fig:Visual_System}
\end{figure}

\section{The underlying structure: a convolutional neural network architecture }\label{Sym_CNN}

In this section we introduce the network model that will constitute the fundamental structure at the basis of all subsequent analyses. The main architecture consists of a typical Convolutional Neural Network (CNN) for image classification \citep[see e.g.][]{Lawrence,Lecun1998}. CNNs were originally designed in analogy with information processing in biological visual systems. In addition to the hierarchical organization typical of deep architectures, translation invariance is enforced in CNNs by local convolutional windows shifting over the spatial domain. This structure was inspired by the localized receptive profiles of neurons in the early visual areas, and by the approximate translation invariance in their tuning. We inserted two main modifications to the standard model. First, we added a pre-filtering step that mimics the behavior of the LGN cells prior to the cortical processing. Second, we equipped the first convolutional layer with lateral connections defined by a diffusion law via a learned transition kernel, in analogy with the horizontal connectivity of V1. We focused on the CIFAR-10 dataset \citep[][]{Krizhevsky}, since it contains natural images with a large statistics of orientations and shapes \citep[see e.g.][]{Ernst}. We expect to find a strict similarity between the connectivity associated to this transition kernel and one observed by \citep{edge-stat} since they are both learned from natural images.

\subsection{LGN in a CNN}

As described in \cite{Bertoni}, since the LGN pre-processes the visual stimulus before it reaches V1, we aim to introduce a ``layer 0'' that mimics this behavior. To this end, a convolutional layer $\ell^0$  composed by a single filter $\Psi^0$ of size $s^0 \times s^0$, a ReLU function and a batch normalization step is added at the beginning of the CNN architecture. If $\ell^0$ behaves similarly to the LGN, then $\Psi^0$ should eventually attain a rotational invariant pattern, approximating the classical Laplacian-of-Gaussian (LoG) model for the RPs of LGN cells. In such a scenario, the rotational symmetry should emerge spontaneously during the learning process induced by the statistics of natural images, in analogy with the plasticity of the brain. In Section \ref{Sym_Lay1} we will display the filter $\Psi^0$ obtained after the training of the network and test its invariance under rotations.

\subsection{Horizontal connectivity of V1 in a CNN}

Although the analogy with biological vision is strong, the feedforward mechanism implemented in CNNs is a simplified one, overlooking many of the processes contributing towards the interpretation of a visual scene. Our aim is to insert a simple mechanism of horizontal propagation defined by entirely learned connectivity kernels, and to analyze the invariance patterns, if any, arising as a result of learning from natural images.

Horizontal connections of convolutional type have been introduced in previous work through a recurrent formula analogous to (\ref{meanfield}), describing an evolution in time \citep{liang,spoerer}. However, the lateral kernels employed in these works are very localized, so that the connectivity kernel applied at each step only captures the connections between neurons very close-by in space.
Here we propose a two-step version of this model, where the output of the first layer is first mapped to the corresponding feature space through the feedforward stream, yielding an activation pattern $h^1 = ReLU(z^1)$, and then updated through convolution with a connectivity kernel $K^1$ with a wider support. The new output $\tilde{h}^1$ is defined by averaging between this propagated activation $K^1 \ast h^1$ and the original activation $h^1$, so that our update rule reads:
   \begin{equation}\label{update} \tilde{h}^1 = \frac{1}{2}\Big(K^1 \ast h^1 \:+\: h^1 \Big).\end{equation}
The connectivity kernel $K^1$ is a 4-dimensional tensor parameterized by 2-D spatial coordinates $(i,j)$ and by the indices $(f,g)$ corresponding to all pairs of $\ell^1$ filters. For fixed $f$ and $g$, the function
\begin{equation}\label{fgkernel}
    (i,j) \mapsto K^1(i,j,f,g)
\end{equation}
represents the strength of connectivity between the filters $\Psi_f$ and $\Psi_g$, where the spatial coordinates indicate the displacement in space between the two filters. The intuitive idea is that $K^1$ behaves like a ``transition kernel'' on the feature space of the first layer, modifying the feedforward output according to the learned connectivity between filters: the activation of a filter encourages the activation of other filters strongly connected with it.
Also note that the lateral connections take the form of a linear propagation applied on top of the nonlinear activation function of the first layer. As a consequence, an even wider connectivity may be modelled by iterating the process, while still allowing to recover the resulting long-range kernel via ``self-replication'' through convolution against itself:
\begin{equation*}
\frac{1}{2} \Big(K^1 \ast \tilde{h}^1 \:+\: \tilde{h}^1 \Big)
= \frac{1}{4} \Big(K^1 \ast K^1 \ast h^1 \:+\: 2 K^1 \ast h^1 \:+\: h^1 \Big).
\end{equation*}

\subsection{Description of the architecture and training parameters} \label{CNN_architecture}

In this section we shall give a detailed overview of our CNN architecture, as well as the training scheme employed.

Since we wanted a gray scale image to be the input of our neural network, we transformed the CIFAR-10 dataset into gray scale images with mean equal to 0.1307 and standard deviation equal to 0.3081. We split the entire dataset composed by 60000 images in a training set, validation set and test set (40000, 10000 and 10000 images respectively).

The architecture is composed by 11 convolutional layers, each one followed by a ReLU function and a batch normalization layer, and by 3 fully-connected layers. For simplicity we omit the ReLU function and the batch normalization layer in the architecture description. A zero padding was applied in order to keep the spatial dimensions unchanged after each convolutional layer. The architecture was defined as follows:

\begin{itemize}
    \item LGN layer: convolutional layer $\ell^0$ containing a single filter $\Psi^0$ of size $11 \times 11$;
    \item $\ell^1$ convolutional layer: 64 filters of size $7 \times 7$;
    \item First layer lateral connections: connectivity kernel $K^1$ of size $13 \times 13 \times 64 \times 64$;
    \item Max pooling of square size 2;
    \item $\ell^2$, $\ell^3$ and $\ell^4$ convolutional layers: $\ell^2$ contains 64 filters of size $5 \times 5 \times 64$, $\ell^3$ and $\ell^4$ contain 64 filters of size $3 \times 3 \times 64$;
    \item Max pooling of square size 2;
    \item $\ell^5$, $\ell^6$ and $\ell^7$ convolutional layers: $\ell^5$ and $\ell^6$ contain 64 filters of size $3 \times 3 \times 64$, whereas $\ell^7$ contain 128 filters of the same size;
    \item Max pooling of square size 2;
    \item $\ell^8$, $\ell^9$ and $\ell^{10}$ convolutional layers: each one contains 128 filters of size $3 \times 3 \times 128$;
    \item Max pooling of square size 2;
    \item 3 fully-connected layers with 1000, 200 and 10 output units respectively.
\end{itemize}

The neural network was trained using the cross entropy loss function, optimizing it via Stochastic Gradient Descent (SGD) with batch size equal to 64, where the $L^2$ regularization parameter $\lambda$ and the momentum were set to 0.001 and 0.9 respectively.
The learning rate was 0.01 and was decreased over epochs by a factor 10 if the performance of the network on the validation set had not increased in the 10 previous epochs. The training of the neural network was performed in 2 steps: we first trained the feedforward part of the architecture, i.e. excluding the lateral connections of $\ell^1$; we then inserted them and trained the connectivity kernel $K^1$ keeping the rest of the weights fixed.

In order to increase the performance avoid overfitting, along with the weight regularization and the batch normalization layers, we applied dropout with dropping probability equal to 0.5 in the feedforward training after convolutional layer $\ell^{10}$, and 0.2 in the second training step after applying the kernel $K^1$. We also used an early stopping approach by terminating the optimization algorithm as soon as the performance on the validation set failed to increase for 50 consecutive epochs. The maximum number of epochs was set to 400.
The network architecture and optimization procedure were coded using Pytorch \citep[][]{Pytorch}.

We want to outline that, since we are interested in the emergence of symmetries, we did not focus on reaching state-of-the-art performances on classifying the CIFAR-10 dataset. However, our architecture reaches fair performances that can be increased by adding further convolutional layers and/or increasing the number of units. We trained several CNNs varying the numbers of layers and features.

Figure \ref{Fig:Mean_acc_CNNs} shows the mean performances on the test set over 20 such models with and without the lateral connectivity. As expected, increasing the number of convolutional layers and adding the lateral connection (and also the number of units) led to better performance. For the analyses described in the following, we chose the architecture that reached the best performances (79.04 \% over 20 models with Horizontal connectivity), i.e. the one with 11 convolutional layers described above.
However, we stress that all the architectures examined showed a comparable behavior as regards the invariance properties of the convolutional layers $\ell^0$ and $\ell^1$ and the connectivity kernel $K^1$. Therefore, it would be reasonable to expect a similar behavior also when further increasing the complexity of the model.

\begin{figure}
\centering
 \includegraphics[width=.5\linewidth]{Mean_acc_CNNs_bar.jpg}
  \caption{Mean accuracy of CNNs with varying number of convolutional layers, with and without lateral connections in the first layer. Error bars represent the standard error of the mean.}
  \label{Fig:Mean_acc_CNNs}
\end{figure}

\section{Emergence of rotational symmetry in the LGN layer} \label{Sym_LGN}

As described in \citep{Bertoni} the introduction of a convolutional layer $\ell^0$ containing a single filter $\Psi^0$ mimics the role of the LGN that pre-filters the input visual stimulus before it reaches the V1 cells.  The authors have shown that a rotational invariant pattern is attained by $\Psi^0$  for a specific architecture, suggesting that it should happen also for deeper and more complex architectures.

Figure \ref{Fig:LoG_approx}A shows the filter $\Psi^0$ obtained after the training phase.  As expected it has a radially symmetric pattern and its maximum absolute value is attained in the center.  Thus it can be approximated by the classical LoG model for the RP of an LGN cell by finding the optimal value for the parameter $\sigma$ in Eq. (\ref{LoG}). We used the built-in function \textit{optimize.curve\_fit} from the Python library SciPy.  Figure \ref{Fig:LoG_approx}B shows this approximation with $\sigma = 0.184$.  Applying the built-in function \textit{corrcoef} from the Python library NumPy, it turns out that the two functions have a high correlation of 93.67\%.

These results show that $\Psi^0$ spontaneously evolves into a radially symmetric pattern during the training phase, and more specifically its shape approximates the typical geometry of the RPs of LGN cells.

\begin{figure}
\centering
 \includegraphics[width=.47\linewidth]{LoG_approx.jpg}
  \caption{\textbf{(A)} The learned filter $\Psi^0$ of the current architecture. \textbf{(B)} Its approximation as a LoG, with optimal $\sigma = 0.184$, yielding a correlation of 93.67\% with the learned filter.}
  \label{Fig:LoG_approx}

\end{figure}

\section{Emergence of Gabor-like filters in the first layer} \label{Sym_Lay1}

As introduced in Section \ref{v1}, the RPs of V1 simple cells can be modeled as Gabor functions by Eq. (\ref{eq:Gabor}).  Moreover, the first convolutional layer of a CNN architecture usually shows Gabor-like filters \citep[see e.g.][]{Poggio2007}, assuming a role analogous to V1 orientation-selective cells.  In this section, we first approximate the filters of $\ell^1$ as a bank of Gabor filters, in order to obtain a parameterization in terms of position $(x_0,y_0)$ and orientation $\theta$. This will provide a suitable set of coordinates for studying the corresponding lateral kernel in the $\ensuremath{\mathbb{R}}^2 \times S^1$ domain, see Section \ref{Sym_Kernel}.

\subsection{Approximation of the filters as Gabor functions} \label{subs:Appr_Gabor_L1}

After the training phase, Gabor-like filters emerge in $\ell^1$ as expected (see Figure \ref{Fig:L1_NoLGN}A). Moreover, thanks to the introduction of the pre-filtering $\ell^0$, our layer $\ell^1$ only contains filters sharply tuned for orientation, with no Gaussian-like filters. Indeed, by removing $\ell^0$, the two types of filters are mixed up in the same layer. See Figure \ref{Fig:L1_NoLGN}B, showing the $\ell^1$ filters of a trained CNN with the same architecture, but without $\ell^0$.

However we can note from Figure \ref{Fig:L1_NoLGN}A that some filters have more complex shapes that are neither Gaussian-, nor Gabor-like; indeed, since we have not introduced other geometric structures on following layers, it is reasonable to observe the emergence of more complex patterns.
For the subsequent analyses, we considered the 48 filters with highest correlation with the approximating Gabor functions.

\begin{figure}
\centering
\;\; \includegraphics[width=.8\linewidth]{filters.jpg}
  \caption{\textbf{(A)} Learned filters of $\ell^1$ of our CNN architecture.
\textbf{(B)} Learned filters of $\ell^1$ of the same CNN architecture, but without $\ell^0$.}
  \label{Fig:L1_NoLGN}
\end{figure}

The filters in $\ell^1$ were approximated by the Gabor function in Eq. (\ref{eq:Gabor}), where all the parameters were found using the built-in function \textit{optimize.curve\_fit} from the Python library SciPy. The mean correlation between the selected filters and their Gabor approximations obtained using the built-in function \textit{corrcoef} from the Python library NumPy is 92.61\%.

We then split the filter bank w.r.t. the parity of their approximation, indicated by the parameter $\phi$, that was forced to be between $-\pi$ and $\pi$. Specifically, we labelled a filter as odd if $\frac{\pi}{4} < | \phi | < \frac{3\pi}{4}$, as even if $0<| \phi | < \frac{\pi}{4}$ or $\frac{3\pi}{4} < |\phi| < \pi$.

Figure \ref{Fig:Filters_approximation_Odd} shows the odd filters and their Gabor approximations, rearranged w.r.t. the orientation $\theta$. In this case the orientation $\theta$ spans across the range $[0^\circ, 360^\circ[$, in order to correctly code for filters sharing the same direction but with opposite positive and negative lobes -- and therefore having orientations differing by $180^\circ$.

Figure \ref{Fig:Filters_approximation_Even} shows the even filters and their Gabor approximations, rearranged w.r.t. the orientation $\theta$. In this case, the orientation $\theta$ spans across the range $[0^\circ, 180^\circ[$. For the sake of visualization, those filters whose central lobe had negative values were multiplied by -1.

In both scenarios, the orientation values are quite evenly sampled, allowing the neural network to detect even small orientation differences. Most of the filters have high frequencies, allowing them to detect thin boundaries, but some low-frequency filters are still present.

\begin{figure}
\centering
 \includegraphics[width=\linewidth]{Filters_appr_Odd.jpg}
  \caption{\textbf{(A)}: the learned filters of $\ell^1$ with odd parity, ordered w.r.t. the orientation $\theta$ obtained from the Gabor approximation. \textbf{(B)}: the approximating odd Gabor filters, labelled by their orientation.}
  \label{Fig:Filters_approximation_Odd}

\end{figure}

\begin{figure}
\centering
 \includegraphics[width=\linewidth]{Filters_appr_Even.jpg}
  \caption{
  \textbf{(A)}: the learned filters of $\ell^1$ with even parity, ordered w.r.t. the orientation $\theta$ obtained from the Gabor approximation. \textbf{(B)}: the approximating even Gabor filters, labelled by their orientation.}
  \label{Fig:Filters_approximation_Even}

\end{figure}

\section{Emergence of horizontal connectivity in the transition kernel} \label{Sym_Kernel}

In this section, we shall examine the learned transition kernel $K^1$, to investigate whether it shows any invariances compatible with the known properties of the lateral connectivity of V1.

\subsection{Re-parameterization of the connectivity kernel using the first layer approximation}

In order to study the selectivity of the connectivity kernel to the properties of $\ell^1$ filters, we first rearranged it based on the set of coordinates in $\mathbb{R}^2\times S^1$ induced by the Gabor approximation of the filters.

We first split the kernel w.r.t. the parity of $\ell^1$ filters, resulting in two separate connectivity kernels for even and odd filters. We then adjusted the spatial coordinates of each kernel using the estimated Gabor filter centers $(x_0, y_0)$. Specifically, for each $f,g$ in $\{1,\ldots,n\}$, we shifted the kernel $K^1(\cdot,\cdot,f,g)$ of Eq. (\ref{fgkernel}) so that a displacement of $(i,j)=(0,0)$ corresponds to the situation where the centers of the filters $\Psi_f$ and $\Psi_g$ coincide. Finally, the original ordering of $f,g$ in $\{1,\ldots,n\}$ has no geometric meaning. However, each filter $\Psi_f$ is now associated with an orientation $\theta_f$ obtained from the Gabor approximation. Therefore, we rearranged the slices of $K^1$ so that the $f$ and $g$ coordinates were ordered by the corresponding orientations $\theta_f$ and $\theta_g$.
By fixing one filter $\Psi_f$, we then obtained a 3-D kernel
\begin{equation}\label{3dkernel}
    (i,j,g) \mapsto K^1(i,j,f,g)
\end{equation}
defined on $\ensuremath{\mathbb{R}}^2 \times S^1$, describing the connectivity between $\Psi_f$ and all the other $\ell^1$ filters with the same parity properties, each shifted by a set of local displacements $(i,j)\in\{-6,\ldots,6\}\times\{-6,\ldots,6\}$.

\subsection{Association fields induced by the connectivity kernel}
\label{subs:AF}

Starting from the re-parameterized kernel centered around a filter $\Psi_f$ as in Eq. (\ref{3dkernel}), we used the $\theta$-coordinates to construct a 2-D association field as in \cite{edge-stat}. We first defined a 2-D vector field by projecting down the orientation coordinates weighted by the kernel values. Specifically, for each spatial location $(i,j)$, we defined
\begin{equation}
    V(i,j) := \max_g K^1(i,j,f,g) \:\cdot\:\frac{\sum_{g=1}^n K^1(i,j,f,g) v_g}{\|\sum_{g=1}^n K^1(i,j,f,g) v_g\|},
\end{equation}
where $v_g \in \mathbb{R}^2$ is a unitary vector with orientation $\theta_g$. This yields for each point $(i,j)$ a vector whose orientation is essentially determined by the leading $\theta$ values in the fiber, i.e. the ones were the kernel has the highest values. The norm of the vector is determined by the maximum kernel value over $(i,j)$. Finally, we defined the association field as the integral curves of the so-obtained vector field $V$ starting from points along the trans-axial direction in a neighborhood of $(0,0)$.

Figure \ref{Fig:AF_kernel_Sanguinetti}B shows the association field obtained from the kernel computed around the even filter $\Psi_f$ in Figure \ref{Fig:AF_kernel_Sanguinetti}A, with orientation $\theta_f=138^\circ$.
The vector field $V$ was plotted using the Matlab function \textit{quiver}, and the integral curves were computed using the Matlab function \textit{streamline}. The vectors and curves are plotted over a 2-D projection of the kernel obtained as follows. The kernel was first resized by a factor of 10 using the built-in Matlab function \textit{imresize} for better visualization, and then projected down on the spatial coordinates by taking the maximum over $g$. Note that around $(0,0)$ the field is aligned with the orientation of the starting filter $\Psi_f$, while it starts to rotate when it moves away from the center -- consistently with the typical shape of psychophysical association fields, see Section \ref{v1}.

We also outline the similarity with the integral curves of \cite{edge-stat}, see Figure \ref{fig:Visual_System}D. However, in our case the rotation is less evident since the spatial displacement encoded in the kernel $K^1$ is more localized than the edge co-occurrence kernel constructed in \cite{edge-stat}.

Figure \ref{Fig:AF_kernel_Sanguinetti}C shows in red the approximation of each integral curve as a circular arc, obtained by fitting the parameter $k$ of Eq. (\ref{SanguinettiCurves}) to minimize the distance between the two curves. The empirical curves induced by the learned connectivity kernel were very close to the theoretical curves, with a mean Euclidean distance of $0.0099$.

\begin{figure}
\centering
\includegraphics[width=1\linewidth]{AF_comp.jpg}
  \caption{\textbf{(A)} The $7 \times 7$ even filter $\Psi_f$, with orientation $\theta_f=138^\circ$.
  \textbf{(B)} The vector field $V$ and its integral curves obtained from the kernel of even filters computed around $\Psi_f$, with $\theta_f=138^\circ$.
\textbf{(C)} The association field of the transition kernel of even filters (blue), and its approximation using the integral curves defined in \eqref{SanguinettiCurves} (red).
For better visualization the kernel has been resized by a factor of 10 using the built-in Matlab function \textit{imresize}.}
  \label{Fig:AF_kernel_Sanguinetti}
\end{figure}

\subsection{Comparison of  transition kernel with the solution of heat equation}

In section 2.2 we recalled the relationship  between connectivity kernel and the fundamental solution of Sub-Riemannian operators. In analogy with this remark, we compare
 the learned transition kernel $K^1$ with the fundamental solution of the sub-Riemannian heat equation in $\mathbb{R}^2\times S^1$
\begin{equation}
\label{eq:Heat}
    \frac{\partial u}{\partial t} = -\alpha \Delta_{X_1,X_2} u = -\alpha \left(X_1^2 u + X_2^2u\right),
\end{equation}
where the sub-Laplacian operator is generated by the vector fields introduced in \cite{cs06} and defined by Eq. (\ref{X1X2}).
To this end, we fitted the parameter $\alpha$ by comparing the vector field $V$ generated from the kernel $K^1$ with the 2-D vector field obtained with the same procedure from the fundamental solution of (\ref{eq:Heat}).
More precisely, the optimal parameter $\alpha$ was chosen as the one minimizing the mean angular difference between the two vector fields. We obtained an optimal value $\alpha = 2.74$, with a mean angular difference of $0.0154$. Figure \ref{Fig:Kernel_selection}A shows the vector field $V$ in blue, and the sub-Riemannian vector field with optimal $\alpha$ in red.
As remarked above, the kernel $K^1$ captures the connections over a localized spatial area. Figure \ref{Fig:Kernel_selection}B shows in green the sub-Riemannian vector field over a wider spatial region, with the local area that best fits the vector field $V$ highlighted in red.

The 3-D counterpart of this visualization is shown in Figure \ref{fig:Isos_kernel}A, displaying two isosurfaces of the sub-Riemannian kernel, whereas the Figure \ref{fig:Isos_kernel}B shows an isosurface of $K^1$. The geometry of the learned kernel $K^1$ is qualitatively similar to the local behavior of the theoretical kernel, shown by the red isosurface in Figure \ref{fig:Isos_kernel}A.

\begin{figure}
\centering

   \includegraphics[width=.6\linewidth]{VF_comparison.jpg}
  \caption{\textbf{(A)} In blue: the vector field of the transition kernel of even filters around $\Psi_f$. In red: the vector field of the best-fitting fundamental solution of the sub-Riemannian heat equation, with $\alpha = 2.74$.
  \textbf{(B)}  In green: the vector field of the best-fitting fundamental solution of the sub-Riemannian heat equation over a wider spatial region. In red: the local vector field fitted to the learned kernel.}
  \label{Fig:Kernel_selection}

\end{figure}

\begin{figure}
\centering
  \includegraphics[width=.8\linewidth]{Isos.jpg}
    \caption{ \textbf{(A)} Isosurface of the transition kernel $K^1$.
    \textbf{(B)} Isosurfaces of heat equation solution. In green: isosurface of the entire solution. In red: isosurface of the local solution.
    As expected  the transition kernel is closer to this local isosurface.}
  \label{fig:Isos_kernel}
\end{figure}

\section{Discussion } \label{Sym_Discussion}

In this work, we showed how approximate group invariances arise in the early layers of a biologically inspired CNN architecture during learning on natural images, and we established a parallel with the architecture and plasticity of the early visual pathway. First, the LoG-shaped filter emerging in the pre-filtering stage $\ell^0$ closely resembles the typical LGN receptive profile exhibiting a rotational symmetry. The presence of $\ell^0$ also enhanced the orientation tuning of first-layer filters, thus separating the first image elaboration into two steps that may be roughly associated with sub-cortical and early cortical processing. Moreover, the introduction of lateral connections in the first network layer allowed us to investigate the relationship between the geometry of the feedforward filters and the selectivity of the learned connectivity kernel $K^1$. Indeed, the Gabor approximation of first layer filters provided us with a set of coordinates to re-map the kernel $K^1$ into the $\mathbb{R}^2\times S^1$ feature space, thus allowing to express the connectivity strength in terms of relative positions and orientations of the filters. Strikingly, the association fields induced by the learned connectivity bear a close resemblance to those obtained from edge co-occurrence in natural images by \cite{edge-stat}, as well as to the flow of neural activity described by a sub-Riemannian heat equation in the Lie group setting introduced by \cite{cs06}.

We stress that such geometric properties arose spontaneously during the training of the CNN architecture on a dataset of natural images, the only constraint being the translation-invariance imposed by the convolutional structure of the network.

As future perspectives, we would like to extend our study by considering a wider range of features -- possibly leading to a finer characterization of the geometry of first layer filters, including more complex types of receptive profiles. Moreover, considering a larger images dataset would make it possible to examine horizontal connectivity patterns spread over a wider spatial region. Finally, another direction could be to extend our model by comparing the properties of deeper network layers to the processing in higher cortices of the visual system.

\bibliographystyle{apalike}

redpajama_set_name: RedPajamaArXiv


text:
Methodist Hospice Team Helps Ease the End-of-Life Journey
A focus on choice and comfort
"We get one shot to make a bad situation as good as it can be, so the earlier we start and the better we get to know people, the more we can help," said Eileen Heitman, BSN, RN, CHPN. "The illness is just a little piece of who this person is. I love getting to know my patients and hearing their stories."
Eileen has been a hospice nurse for the past nine years with Methodist Home Health and Hospice. She began her second career as a nurse after leaving US West, formerly Northwestern Bell, a job she had been at for over 18 years. "I started thinking about nursing when I had the first of my three kids at Methodist Hospital, and my nurse was so helpful and open with me," said Eileen. "But I worried I wasn't smart enough or good enough at math to be a nurse."
Eileen surprised herself by completing the math refresher and chemistry courses she needed to qualify for admission to Nebraska Methodist College. She joined the Methodist Hospice team in 2008.
Connecting with patients and families
Hospice care is designed to meet the physical, emotional and spiritual needs of the terminally ill and their families. The focus is on individual choice and comfort. Care comes to where the patient is, whether in a private home or apartment, homeless shelter, assisted living facility or hospice house. Hospice care is available to patients of all ages and their families.
"Studies have shown that patients in a hospice program may live longer and have a better quality of life," said Diane Randolph, director of Methodist Home Health and Hospice Services. "Hospice is also very much about hope. Hope often changes over time, becoming not so much hope for a cure but for a comfortable, dignified death surrounded by family."
"Home hospice care is absolutely wonderful! It's easier on the patient and easier on family. We have everything we need right here, and staff are willing to do all they can for us 24/7."
Sandy Jernigan,
Wife of hospice patient
Wally Jernigan, 73, is a Marine veteran and retired Omaha homicide detective with a razor-sharp wit, love of pranks and deep pride in the community and country he has served so well. He is a force of nature, famous for his outgoing personality and outrageously entertaining stories.
He is also one of Eileen's home hospice patients. Wally's terminal illness — multiple myeloma, a cancer of the bone marrow — has kept him bedridden since March 2016.
After his wife, Sandy, realized Wally was overmedicated and delusional causing him to become angry, distrustful and silent, she knew she was losing the Wally she knew and loved even before cancer could take him. Sandy transferred Wally to Hospice House.
"From the start, Eileen was so helpful and caring," said Sandy. "When we got Wally off the extra medications, he started to become himself again. As I watched what the Hospice House nurses did, Eileen encouraged me to believe I could do many of those things for him."
In June 2016, Wally returned home, where he wanted to be. With Eileen as his nurse, Wally has learned to seize each remaining day and to trust health care professionals again. "The measure of a hospice program is its people," said Wally, "and Eileen is a good one."
A team approach to health care
Eileen and the other Methodist Hospice nurse case managers work closely with members of a specially trained, interdisciplinary team of physicians, aides, social workers, chaplains, pharmacists, dietitians, physical therapists, occupational therapists, speech therapists, bereavement counselors, and volunteers.
How does the Methodist Hospice team help ease the end-of-life journey? By asking what is wanted most, acting on the answer and truly connecting with the patients and families under their care.
For patients like Wally and his wife Sandy, hospice has not been an end, but a new beginning. "Home hospice care is absolutely wonderful!" said Sandy. "It's easier on the patient and easier on the family. We have everything we need right here, and staff are willing to do all they can for us 24/7."
Bestcare Today aims to inspire and educate with valuable health news, heartwarming stories or tips and information from Methodist Health System's dedicated health care experts.
See More Articles by Bestcare Today

redpajama_set_name: RedPajamaCommonCrawl


text:
#include "tclWinInt.h"
#include <winnt.h>
#include <winbase.h>
#include <lmcons.h>

/*
 * GetUserName() is found in advapi32.dll
 */
#ifdef _MSC_VER
#   pragma comment(lib, "advapi32.lib")
#endif

/*
 * The following declaration is a workaround for some Microsoft brain damage.
 * The SYSTEM_INFO structure is different in various releases, even though the
 * layout is the same. So we overlay our own structure on top of it so we can
 * access the interesting slots in a uniform way.
 */

typedef struct {
    WORD wProcessorArchitecture;
    WORD wReserved;
} OemId;

/*
 * The following macros are missing from some versions of winnt.h.
 */

#ifndef PROCESSOR_ARCHITECTURE_INTEL
#define PROCESSOR_ARCHITECTURE_INTEL		0
#endif
#ifndef PROCESSOR_ARCHITECTURE_MIPS
#define PROCESSOR_ARCHITECTURE_MIPS		1
#endif
#ifndef PROCESSOR_ARCHITECTURE_ALPHA
#define PROCESSOR_ARCHITECTURE_ALPHA		2
#endif
#ifndef PROCESSOR_ARCHITECTURE_PPC
#define PROCESSOR_ARCHITECTURE_PPC		3
#endif
#ifndef PROCESSOR_ARCHITECTURE_SHX
#define PROCESSOR_ARCHITECTURE_SHX		4
#endif
#ifndef PROCESSOR_ARCHITECTURE_ARM
#define PROCESSOR_ARCHITECTURE_ARM		5
#endif
#ifndef PROCESSOR_ARCHITECTURE_IA64
#define PROCESSOR_ARCHITECTURE_IA64		6
#endif
#ifndef PROCESSOR_ARCHITECTURE_ALPHA64
#define PROCESSOR_ARCHITECTURE_ALPHA64		7
#endif
#ifndef PROCESSOR_ARCHITECTURE_MSIL
#define PROCESSOR_ARCHITECTURE_MSIL		8
#endif
#ifndef PROCESSOR_ARCHITECTURE_AMD64
#define PROCESSOR_ARCHITECTURE_AMD64		9
#endif
#ifndef PROCESSOR_ARCHITECTURE_IA32_ON_WIN64
#define PROCESSOR_ARCHITECTURE_IA32_ON_WIN64	10
#endif
#ifndef PROCESSOR_ARCHITECTURE_UNKNOWN
#define PROCESSOR_ARCHITECTURE_UNKNOWN		0xFFFF
#endif

/*
 * The following arrays contain the human readable strings for the Windows
 * platform and processor values.
 */

#define NUMPLATFORMS 4
static const char *const platforms[NUMPLATFORMS] = {
    "Win32s", "Windows 95", "Windows NT", "Windows CE"
};

#define NUMPROCESSORS 11
static const char *const processors[NUMPROCESSORS] = {
    "intel", "mips", "alpha", "ppc", "shx", "arm", "ia64", "alpha64", "msil",
    "amd64", "ia32_on_win64"
};

/*
 * The default directory in which the init.tcl file is expected to be found.
 */

static TclInitProcessGlobalValueProc	InitializeDefaultLibraryDir;
static ProcessGlobalValue defaultLibraryDir =
	{0, 0, NULL, NULL, InitializeDefaultLibraryDir, NULL, NULL};

static TclInitProcessGlobalValueProc	InitializeSourceLibraryDir;
static ProcessGlobalValue sourceLibraryDir =
	{0, 0, NULL, NULL, InitializeSourceLibraryDir, NULL, NULL};

static void		AppendEnvironment(Tcl_Obj *listPtr, const char *lib);
static int		ToUtf(const WCHAR *wSrc, char *dst);

/*
 *---------------------------------------------------------------------------
 *
 * TclpInitPlatform --
 *
 *	Initialize all the platform-dependant things like signals,
 *	floating-point error handling and sockets.
 *
 *	Called at process initialization time.
 *
 * Results:
 *	None.
 *
 * Side effects:
 *	None.
 *
 *---------------------------------------------------------------------------
 */

void
TclpInitPlatform(void)
{
    WSADATA wsaData;
    WORD wVersionRequested = MAKEWORD(2, 2);

    tclPlatform = TCL_PLATFORM_WINDOWS;

    /*
     * Initialize the winsock library. On Windows XP and higher this
     * can never fail.
     */
    WSAStartup(wVersionRequested, &wsaData);

#ifdef STATIC_BUILD
    /*
     * If we are in a statically linked executable, then we need to explicitly
     * initialize the Windows function tables here since DllMain() will not be
     * invoked.
     */

    TclWinInit(GetModuleHandle(NULL));
#endif
}

/*
 *-------------------------------------------------------------------------
 *
 * TclpInitLibraryPath --
 *
 *	This is the fallback routine that sets the library path if the
 *	application has not set one by the first time it is needed.
 *
 * Results:
 *	None.
 *
 * Side effects:
 *	Sets the library path to an initial value.
 *
 *-------------------------------------------------------------------------
 */

void
TclpInitLibraryPath(
    char **valuePtr,
    int *lengthPtr,
    Tcl_Encoding *encodingPtr)
{
#define LIBRARY_SIZE	    64
    Tcl_Obj *pathPtr;
    char installLib[LIBRARY_SIZE];
    const char *bytes;

    pathPtr = Tcl_NewObj();

    /*
     * Initialize the substring used when locating the script library. The
     * installLib variable computes the script library path relative to the
     * installed DLL.
     */

    sprintf(installLib, "lib/tcl%s", TCL_VERSION);

    /*
     * Look for the library relative to the TCL_LIBRARY env variable. If the
     * last dirname in the TCL_LIBRARY path does not match the last dirname in
     * the installLib variable, use the last dir name of installLib in
     * addition to the orginal TCL_LIBRARY path.
     */

    AppendEnvironment(pathPtr, installLib);

    /*
     * Look for the library in its default location.
     */

    Tcl_ListObjAppendElement(NULL, pathPtr,
	    TclGetProcessGlobalValue(&defaultLibraryDir));

    /*
     * Look for the library in its source checkout location.
     */

    Tcl_ListObjAppendElement(NULL, pathPtr,
	    TclGetProcessGlobalValue(&sourceLibraryDir));

    *encodingPtr = NULL;
    bytes = Tcl_GetStringFromObj(pathPtr, lengthPtr);
    *valuePtr = ckalloc((*lengthPtr) + 1);
    memcpy(*valuePtr, bytes, (size_t)(*lengthPtr)+1);
    Tcl_DecrRefCount(pathPtr);
}

/*
 *---------------------------------------------------------------------------
 *
 * AppendEnvironment --
 *
 *	Append the value of the TCL_LIBRARY environment variable onto the path
 *	pointer. If the env variable points to another version of tcl (e.g.
 *	"tcl7.6") also append the path to this version (e.g.,
 *	"tcl7.6/../tcl8.2")
 *
 * Results:
 *	None.
 *
 * Side effects:
 *	None.
 *
 *---------------------------------------------------------------------------
 */

static void
AppendEnvironment(
    Tcl_Obj *pathPtr,
    const char *lib)
{
    int pathc;
    WCHAR wBuf[MAX_PATH];
    char buf[MAX_PATH * TCL_UTF_MAX];
    Tcl_Obj *objPtr;
    Tcl_DString ds;
    const char **pathv;
    char *shortlib;

    /*
     * The shortlib value needs to be the tail component of the lib path. For
     * example, "lib/tcl8.4" -> "tcl8.4" while "usr/share/tcl8.5" -> "tcl8.5".
     */

    for (shortlib = (char *) &lib[strlen(lib)-1]; shortlib>lib ; shortlib--) {
	if (*shortlib == '/') {
	    if ((unsigned)(shortlib - lib) == strlen(lib) - 1) {
		Tcl_Panic("last character in lib cannot be '/'");
	    }
	    shortlib++;
	    break;
	}
    }
    if (shortlib == lib) {
	Tcl_Panic("no '/' character found in lib");
    }

    /*
     * The "L" preceeding the TCL_LIBRARY string is used to tell VC++ that
     * this is a unicode string.
     */

    if (GetEnvironmentVariableW(L"TCL_LIBRARY", wBuf, MAX_PATH) == 0) {
	buf[0] = '\0';
	GetEnvironmentVariableA("TCL_LIBRARY", buf, MAX_PATH);
    } else {
	ToUtf(wBuf, buf);
    }

    if (buf[0] != '\0') {
	objPtr = Tcl_NewStringObj(buf, -1);
	Tcl_ListObjAppendElement(NULL, pathPtr, objPtr);

	TclWinNoBackslash(buf);
	Tcl_SplitPath(buf, &pathc, &pathv);

	/*
	 * The lstrcmpi() will work even if pathv[pathc-1] is random UTF-8
	 * chars because I know shortlib is ascii.
	 */

	if ((pathc > 0) && (lstrcmpiA(shortlib, pathv[pathc - 1]) != 0)) {
	    /*
	     * TCL_LIBRARY is set but refers to a different tcl installation
	     * than the current version. Try fiddling with the specified
	     * directory to make it refer to this installation by removing the
	     * old "tclX.Y" and substituting the current version string.
	     */

	    pathv[pathc - 1] = shortlib;
	    Tcl_DStringInit(&ds);
	    (void) Tcl_JoinPath(pathc, pathv, &ds);
	    objPtr = TclDStringToObj(&ds);
	} else {
	    objPtr = Tcl_NewStringObj(buf, -1);
	}
	Tcl_ListObjAppendElement(NULL, pathPtr, objPtr);
	ckfree(pathv);
    }
}

/*
 *---------------------------------------------------------------------------
 *
 * InitializeDefaultLibraryDir --
 *
 *	Locate the Tcl script library default location relative to the
 *	location of the Tcl DLL.
 *
 * Results:
 *	None.
 *
 * Side effects:
 *	None.
 *
 *---------------------------------------------------------------------------
 */

static void
InitializeDefaultLibraryDir(
    char **valuePtr,
    int *lengthPtr,
    Tcl_Encoding *encodingPtr)
{
    HMODULE hModule = TclWinGetTclInstance();
    WCHAR wName[MAX_PATH + LIBRARY_SIZE];
    char name[(MAX_PATH + LIBRARY_SIZE) * TCL_UTF_MAX];
    char *end, *p;

    if (GetModuleFileNameW(hModule, wName, MAX_PATH) == 0) {
	GetModuleFileNameA(hModule, name, MAX_PATH);
    } else {
	ToUtf(wName, name);
    }

    end = strrchr(name, '\\');
    *end = '\0';
    p = strrchr(name, '\\');
    if (p != NULL) {
	end = p;
    }
    *end = '\\';

    TclWinNoBackslash(name);
    sprintf(end + 1, "lib/tcl%s", TCL_VERSION);
    *lengthPtr = strlen(name);
    *valuePtr = ckalloc(*lengthPtr + 1);
    *encodingPtr = NULL;
    memcpy(*valuePtr, name, (size_t) *lengthPtr + 1);
}

/*
 *---------------------------------------------------------------------------
 *
 * InitializeSourceLibraryDir --
 *
 *	Locate the Tcl script library default location relative to the
 *	location of the Tcl DLL as it exists in the build output directory
 *	associated with the source checkout.
 *
 * Results:
 *	None.
 *
 * Side effects:
 *	None.
 *
 *---------------------------------------------------------------------------
 */

static void
InitializeSourceLibraryDir(
    char **valuePtr,
    int *lengthPtr,
    Tcl_Encoding *encodingPtr)
{
    HMODULE hModule = TclWinGetTclInstance();
    WCHAR wName[MAX_PATH + LIBRARY_SIZE];
    char name[(MAX_PATH + LIBRARY_SIZE) * TCL_UTF_MAX];
    char *end, *p;

    if (GetModuleFileNameW(hModule, wName, MAX_PATH) == 0) {
	GetModuleFileNameA(hModule, name, MAX_PATH);
    } else {
	ToUtf(wName, name);
    }

    end = strrchr(name, '\\');
    *end = '\0';
    p = strrchr(name, '\\');
    if (p != NULL) {
	end = p;
    }
    *end = '\\';

    TclWinNoBackslash(name);
    sprintf(end + 1, "../library");
    *lengthPtr = strlen(name);
    *valuePtr = ckalloc(*lengthPtr + 1);
    *encodingPtr = NULL;
    memcpy(*valuePtr, name, (size_t) *lengthPtr + 1);
}

/*
 *---------------------------------------------------------------------------
 *
 * ToUtf --
 *
 *	Convert a char string to a UTF string.
 *
 * Results:
 *	None.
 *
 * Side effects:
 *	None.
 *
 *---------------------------------------------------------------------------
 */

static int
ToUtf(
    const WCHAR *wSrc,
    char *dst)
{
    char *start;

    start = dst;
    while (*wSrc != '\0') {
	dst += Tcl_UniCharToUtf(*wSrc, dst);
	wSrc++;
    }
    *dst = '\0';
    return (int) (dst - start);
}

/*
 *---------------------------------------------------------------------------
 *
 * TclpSetInitialEncodings --
 *
 *	Based on the locale, determine the encoding of the operating system
 *	and the default encoding for newly opened files.
 *
 *	Called at process initialization time, and part way through startup,
 *	we verify that the initial encodings were correctly setup. Depending
 *	on Tcl's environment, there may not have been enough information first
 *	time through (above).
 *
 * Results:
 *	None.
 *
 * Side effects:
 *	The Tcl library path is converted from native encoding to UTF-8, on
 *	the first call, and the encodings may be changed on first or second
 *	call.
 *
 *---------------------------------------------------------------------------
 */

void
TclpSetInitialEncodings(void)
{
    Tcl_DString encodingName;

    TclpSetInterfaces();
    Tcl_SetSystemEncoding(NULL,
	    Tcl_GetEncodingNameFromEnvironment(&encodingName));
    Tcl_DStringFree(&encodingName);
}

void TclWinSetInterfaces(
    int dummy)			/* Not used. */
{
    TclpSetInterfaces();
}

const char *
Tcl_GetEncodingNameFromEnvironment(
    Tcl_DString *bufPtr)
{
    Tcl_DStringInit(bufPtr);
    Tcl_DStringSetLength(bufPtr, 2+TCL_INTEGER_SPACE);
    wsprintfA(Tcl_DStringValue(bufPtr), "cp%d", GetACP());
    Tcl_DStringSetLength(bufPtr, strlen(Tcl_DStringValue(bufPtr)));
    return Tcl_DStringValue(bufPtr);
}

/*
 *---------------------------------------------------------------------------
 *
 * TclpSetVariables --
 *
 *	Performs platform-specific interpreter initialization related to the
 *	tcl_platform and env variables, and other platform-specific things.
 *
 * Results:
 *	None.
 *
 * Side effects:
 *	Sets "tcl_platform", and "env(HOME)" Tcl variables.
 *
 *----------------------------------------------------------------------
 */

void
TclpSetVariables(
    Tcl_Interp *interp)		/* Interp to initialize. */
{
    const char *ptr;
    char buffer[TCL_INTEGER_SPACE * 2];
    union {
	SYSTEM_INFO info;
	OemId oemId;
    } sys;
    static OSVERSIONINFOW osInfo;
    static int osInfoInitialized = 0;
    Tcl_DString ds;
    TCHAR szUserName[UNLEN+1];
    DWORD cchUserNameLen = UNLEN;

    Tcl_SetVar2Ex(interp, "tclDefaultLibrary", NULL,
	    TclGetProcessGlobalValue(&defaultLibraryDir), TCL_GLOBAL_ONLY);

    if (!osInfoInitialized) {
	HANDLE handle = LoadLibraryW(L"NTDLL");
	int(__stdcall *getversion)(void *) =
		(int(__stdcall *)(void *)) GetProcAddress(handle, "RtlGetVersion");
	osInfo.dwOSVersionInfoSize = sizeof(OSVERSIONINFOW);
	if (!getversion || getversion(&osInfo)) {
	    GetVersionExW(&osInfo);
	}
	if (handle) {
		FreeLibrary(handle);
	}
	osInfoInitialized = 1;
    }
    GetSystemInfo(&sys.info);

    /*
     * Define the tcl_platform array.
     */

    Tcl_SetVar2(interp, "tcl_platform", "platform", "windows",
	    TCL_GLOBAL_ONLY);
    if (osInfo.dwPlatformId < NUMPLATFORMS) {
	Tcl_SetVar2(interp, "tcl_platform", "os",
		platforms[osInfo.dwPlatformId], TCL_GLOBAL_ONLY);
    }
    wsprintfA(buffer, "%d.%d", osInfo.dwMajorVersion, osInfo.dwMinorVersion);
    Tcl_SetVar2(interp, "tcl_platform", "osVersion", buffer, TCL_GLOBAL_ONLY);
    if (sys.oemId.wProcessorArchitecture < NUMPROCESSORS) {
	Tcl_SetVar2(interp, "tcl_platform", "machine",
		processors[sys.oemId.wProcessorArchitecture],
		TCL_GLOBAL_ONLY);
    }

#ifdef _DEBUG
    /*
     * The existence of the "debug" element of the tcl_platform array
     * indicates that this particular Tcl shell has been compiled with debug
     * information. Using "info exists tcl_platform(debug)" a Tcl script can
     * direct the interpreter to load debug versions of DLLs with the load
     * command.
     */

    Tcl_SetVar2(interp, "tcl_platform", "debug", "1",
	    TCL_GLOBAL_ONLY);
#endif

    /*
     * Set up the HOME environment variable from the HOMEDRIVE & HOMEPATH
     * environment variables, if necessary.
     */

    Tcl_DStringInit(&ds);
    ptr = Tcl_GetVar2(interp, "env", "HOME", TCL_GLOBAL_ONLY);
    if (ptr == NULL) {
	ptr = Tcl_GetVar2(interp, "env", "HOMEDRIVE", TCL_GLOBAL_ONLY);
	if (ptr != NULL) {
	    Tcl_DStringAppend(&ds, ptr, -1);
	}
	ptr = Tcl_GetVar2(interp, "env", "HOMEPATH", TCL_GLOBAL_ONLY);
	if (ptr != NULL) {
	    Tcl_DStringAppend(&ds, ptr, -1);
	}
	if (Tcl_DStringLength(&ds) > 0) {
	    Tcl_SetVar2(interp, "env", "HOME", Tcl_DStringValue(&ds),
		    TCL_GLOBAL_ONLY);
	} else {
	    Tcl_SetVar2(interp, "env", "HOME", "c:\\", TCL_GLOBAL_ONLY);
	}
    }

    /*
     * Initialize the user name from the environment first, since this is much
     * faster than asking the system.
     * Note: cchUserNameLen is number of characters including nul terminator.
     */

    Tcl_DStringInit(&ds);
    if (TclGetEnv("USERNAME", &ds) == NULL) {
	if (GetUserName(szUserName, &cchUserNameLen) != 0) {
	    int cbUserNameLen = cchUserNameLen - 1;
	    cbUserNameLen *= sizeof(TCHAR);
	    Tcl_WinTCharToUtf(szUserName, cbUserNameLen, &ds);
	}
    }
    Tcl_SetVar2(interp, "tcl_platform", "user", Tcl_DStringValue(&ds),
	    TCL_GLOBAL_ONLY);
    Tcl_DStringFree(&ds);

    /*
     * Define what the platform PATH separator is. [TIP #315]
     */

    Tcl_SetVar2(interp, "tcl_platform","pathSeparator", ";", TCL_GLOBAL_ONLY);
}

/*
 *----------------------------------------------------------------------
 *
 * TclpFindVariable --
 *
 *	Locate the entry in environ for a given name. On Unix this routine is
 *	case sensitive, on Windows this matches mioxed case.
 *
 * Results:
 *	The return value is the index in environ of an entry with the name
 *	"name", or -1 if there is no such entry. The integer at *lengthPtr is
 *	filled in with the length of name (if a matching entry is found) or
 *	the length of the environ array (if no matching entry is found).
 *
 * Side effects:
 *	None.
 *
 *----------------------------------------------------------------------
 */

int
TclpFindVariable(
    const char *name,		/* Name of desired environment variable
				 * (UTF-8). */
    int *lengthPtr)		/* Used to return length of name (for
				 * successful searches) or number of non-NULL
				 * entries in environ (for unsuccessful
				 * searches). */
{
    int i, length, result = -1;
    register const char *env, *p1, *p2;
    char *envUpper, *nameUpper;
    Tcl_DString envString;

    /*
     * Convert the name to all upper case for the case insensitive comparison.
     */

    length = strlen(name);
    nameUpper = ckalloc(length + 1);
    memcpy(nameUpper, name, (size_t) length+1);
    Tcl_UtfToUpper(nameUpper);

    Tcl_DStringInit(&envString);
    for (i = 0, env = environ[i]; env != NULL; i++, env = environ[i]) {
	/*
	 * Chop the env string off after the equal sign, then Convert the name
	 * to all upper case, so we do not have to convert all the characters
	 * after the equal sign.
	 */

	envUpper = Tcl_ExternalToUtfDString(NULL, env, -1, &envString);
	p1 = strchr(envUpper, '=');
	if (p1 == NULL) {
	    continue;
	}
	length = (int) (p1 - envUpper);
	Tcl_DStringSetLength(&envString, length+1);
	Tcl_UtfToUpper(envUpper);

	p1 = envUpper;
	p2 = nameUpper;
	for (; *p2 == *p1; p1++, p2++) {
	    /* NULL loop body. */
	}
	if ((*p1 == '=') && (*p2 == '\0')) {
	    *lengthPtr = length;
	    result = i;
	    goto done;
	}

	Tcl_DStringFree(&envString);
    }

    *lengthPtr = i;

  done:
    Tcl_DStringFree(&envString);
    ckfree(nameUpper);
    return result;
}

/*
 * Local Variables:
 * mode: c
 * c-basic-offset: 4
 * fill-column: 78
 * End:
 */

redpajama_set_name: RedPajamaGithub


text:
Film, Thrillers
Robert Eggers' latest film is a swirling descent into madness that takes the breath away.
You can almost taste the salt on your lips in the new psychological horror from Robert Eggers ('The Witch') that will leave even the sturdiest of sea legs shaking. It's a two-handed chamber piece about a pair of lighthouse keepers living on a remote island off the New England coast at the turn of the 20th century and it's lit up by mesmerising performances from Robert Pattinson and Willem Dafoe.
Dafoe is Tom Wake, an old sea dog with a clay pipe jutting from his thick beard and the chief 'wickie' of the lighthouse. He's an amalgam of salty clichés (which the script wittily acknowledges, including his peg-leg), and loves gin, sea shanties, and cooking lobster. Pattinson plays ex-logger Ephraim Winslow, recently arrived from Canada. He's the strong and silent type who seems to have a skeleton or two in his closet.
Both are men's men – the quarrelsome, petty, tobacco-chomping variety. Dafoe and Pattinson deliver Max and Robert Eggers' script with incredible pathos, sounding like characters who have slipped from the pages of Melville's 'Moby Dick'. The dialogue is packed with the sort of insults worthy of Malcolm Tucker, and they lash like a hailstorm.
Dafoe has a long-established reputation but, for many, Pattinson remains that guy from 'Twilight', despite sterling work with the likes of David Cronenberg, James Gray and Claire Denis. Those films showcased his talents, but Eggers draws something new from the actor. Pattinson's performance will make you sit up in your seat.
Meanwhile, life on the island isn't going well. Wake barks orders constantly, putting down Winslow at every opportunity. To find relief, Winslow heads to the outside store-shed, a small sculpture of a buxom mermaid in one hand, and in the other… well, you get the picture. Soon things start to take a bizarre turn, as Wake insists on taking the nightly 'dread watch' and becomes tetchy when Winslow asks to see the lighthouse's lamp. What comes next, set to a mind-spinning score and sound design from Mark Korven, almost defies belief.
The desolate, lonely environment of the island is captured beautifully in squid-ink blacks and storm-cloud greys, all shot in a boxy 4:3 ratio. There's a vintage horror feel, both embracing conventions of the genre and defying them. Sometimes you'll wonder if you're watching a horror film at all. 'The Lighthouse' leaves you dazed, terrified and elated, and it signals Eggers as one of the most exciting directors working today.
By: Joseph Walsh
Posted: Monday May 20 2019
Robert Eggers, Max Eggers
We've found 4 cinemas showing 'The Lighthouse'
Curzon Bloomsbury
Curzon Bloomsbury, The Brunswick Centre London, WC1N 1AW
Su Jan 26 2020
Tu Jan 28 2020
Curzon Soho
Curzon Soho, 99 Shaftesbury Avenue London, W1D 5DY
Sa Jan 25 2020
BFI Southbank, Belvedere Rd London, SE1 8XT
Mo Jan 27 2020
Curzon Aldgate
Curzon Aldgate, Goodman's Fields, 2 Canter Way London, E1 8PS
Th Jan 30 2020


2020 Democratic presidential candidate Bernie Sanders discusses wealth tax during his town hall.
Sen. Bernie Sanders, I-Vt., sat down with Fox News' Bret Baier and Martha MacCallum on Monday night at a town hall in Bethlehem, Pennsylvania.
Follow FoxNews.com's live blog below. Mobile users click here.


Shades of what? Of any colour you like – a pretty project to show off the texture and shine of your threads, in three shades of your favourite colour, or in three contrasting shades, or even in three variegated shades. Beads add a sparkly touch.
Includes instructions for a non-cut version.


ROCHESTER, N.Y. (WHEC) - Rochester Police have canceled the Amber Alert for 14-year-old Joanna Coates.
Linda Hollaert tells News10NBC that her daughter and Robert Gonzalez, 41, were found in New York City. She says Gonzalez has been arrested and her daughter is being taken to the hospital for evaluation.
The Amber Alert was canceled just before 12:15 p.m. Tuesday.
An Amber Alert has been issued for a 14-year-old girl who was abducted by a convicted felon in Rochester.
Rochester Police believe Joanna Coates was taken by her neighbor, 41-year-old Robert Gonzalez, on LaSalle Street around 7 p.m. on Saturday, Dec. 1. He was last seen traveling southeast, possibly heading to New York City.
Authorities say Coates was taken under circumstances that lead police to believe she is in imminent danger of serious harm or death.
Coates is about 5'4" and weighs about 100 pounds. She was last seen wearing a blue Nike shirt, black leggings, and Timberland boots She has blue eyes and her hair color when she was last seen was purple.
Gonzalez has black hair and brown eyes. He is approximately 6' and weighs about 185 pounds.
According to state records, Gonzalez served nearly 4 years behind bars after being convicted in 1997 of criminal possession of a weapon at Gouverneur Correctional Facility, Kings County. In 2003, he was convicted of attempted criminal sale of a controlled substance and served 4 years at Chateaugay Correctional Facility, Franklin County. In 2008, Gonzalez was convicted of criminal possession of a controlled substance. He was released from the Orleans Correctional Facility in Albion in 2011.
Coates' mother tells News10NBC, she believes her daughter was taken right outside of their house on LaSalle Street by Gonzalez. Linda Hollaert says the suspect started befriending her daughter over the summer and would constantly try to hang out with the teen.
"He's a junkie, he sells drugs, he pimps girls out," Hollaert says. "I don't want my daughter to be one of those people. I am asking anybody, everybody, I don't care where she is, just bring her home safely to me. I love you, we love you. If you're watching this Joanna, please come home."
Anyone with any information is asked to call 911.


The event was held at the premises of Sochi Main Electrical Systems Enterprise (Sochi PMES). Among the attendees were the representatives of FGC UES PJSC, SO UPS JSC, Rosseti JSC, manufacturers of software, hardware and communications system.
The interest of conference participants was attracted to the report "CK-11 Information and Technology Platform for Power Grid Control Centers. Implementation Experience, New Features and Prospects" delivered by Sergey Silkov, the head of Monitor Electric Moscow branch. During the ensuing discussions the conference participants gave recommendations for the further development of the software complex and extension of its functionality.


text:
Q: Read original document from signed PDF with PDFBox I need to know i the signature on a PDF document is put on the document that the software generated and that the document has not been manipulated.
I was trying to obtain the original document from the PDF using PDFBox so I got to this point:
public static List<PDFSignatureInfo> getPDFSignatureInfo(byte[] byteArray ) throws IOException, CertificateException,
        NoSuchAlgorithmException, InvalidKeyException,
        NoSuchProviderException, SignatureException, InvalidNameException, TSPException {

    List<PDFSignatureInfo> lpsi = new ArrayList<PDFSignatureInfo>();

    // Try to open the input file as PDF
    try (PDDocument document = PDDocument.load(new ByteArrayInputStream(byteArray))) {
        // Get Signature dictionaries of PDF
        for (PDSignature sig : document.getSignatureDictionaries()) {
            PDFSignatureInfo psi = new PDFSignatureInfo();
            lpsi.add(psi);

            COSDictionary sigDict = sig.getCOSObject();
            COSString contents = (COSString) sigDict.getDictionaryObject(COSName.CONTENTS);

            Set<Map.Entry<COSName, COSBase>> entries = sigDict.entrySet();
            for(Map.Entry<COSName, COSBase> entry: entries) {
                // Don't return contents
                if(!entry.getKey().equals(COSName.CONTENTS)) {
                    psi.entries.put(entry.getKey().getName(), entry.getValue().toString());
                }
            }

            psi.reason = sig.getReason();
            psi.name = sig.getName();
            psi.signDate = sig.getSignDate().getTime();
            psi.subFilter= sig.getSubFilter();
            psi.contactInfo = sig.getContactInfo();
            psi.filter = sig.getFilter();
            psi.location = sig.getLocation();

            psi.signedContent = sig.getSignedContent(byteArray);

I'm creating a list of PDFSignatureInfo objects, a model that I'd like to use. Now I thought that what I'm obtaining with the last line written above was the byte[] containing the original document. But when compared to the original document, it's not the same (probably there are obvious reasons that are not obvious for me.)
Any help?

redpajama_set_name: RedPajamaStackExchange


text:
The State must respect the conscience rights of pro-life hospitals
Posted By Dr Angelo Bottone On 27th July 2018 @ 8:55 am In 2018 | No Comments
The Irish Catholic Bishops' Conference has recently published a long document (The Code of Ethical Standards for Health Care) that gives directions to Catholic health care institutions such as hospitals, nursing homes, hospices, etc. The Code is particularly important now that Ireland has voted to repeal the 8th amendment.
The document covers a variety of topics and restates that Catholic hospitals must not perform direct abortions: "No healthcare facility or practitioner should provide, or refer a patient for, an abortion, i.e. any procedure, treatment or medication whose primary purpose or sole immediate effect is to terminate the life of a foetus or of an embryo before or after implantation. Such procedures, treatments and medications are morally wrong because they involve the direct and deliberate killing of, or a direct lethal assault on, an innocent human life in the earliest stages of development" (2.24)
The Code makes no reference to the recent referendum that removed the 8th amendment, or to the law that might follow from it. Nonetheless, the document by the Bishops, which is based on non-negotiable Catholic principles, has been criticised by Minister Harris and other politicians who claimed that there is not such a thing as institutional conscientious objection. Only individual doctors should be allowed to object to perform abortions. Moreover, state-funded hospitals are expected to follow the law, they said.
The ethos of a hospital is the equivalent of the conscience-identity of an individual, as it inspires all their actions and decisions. Indeed, we deem not only individual but also institutions accountable for their choices and acts precisely because we assume that not only individual but also institutions have a moral conscience, a set of principles by which they must act.
The Code says: "The ethos of a healthcare institute has the character of an 'institutional conscience'. It contributes to the formation of politic and the making of judgements in a manner which is consistent with reason. The ethos of the institution guides the institution in identifying both its operational priorities and the activities in whish it cannot participate with integrity". (8.19)
When the ethos of an institution is in conflict with the law of the land, there are four possible responses from the institution: act against the law, act against conscience, act according to conscience because the norm can be evaded with some expedient, or act according to conscience because the law allows for exceptions in case of conflict. This last option is the preferable solution for reasons that I am going to explain.
First, a Catholic hospital might decide to intentionally and publicly break the law, as a form of civil legal disobedience, in order to point out the injustice of a norm. This might have some long-term effect but it requires a high level of courage and commitment. This resolution would be appropriate only when other moral options are not available.
Alternatively, some religiously inspired institutions might betray their own mission, act against their ethos, and conform to the new requirements. Obviously, they won't be Catholic anymore. Acting against conscience, particularly because of interest or pusillanimity, is never right and the state should never push individuals or groups in that direction.
A third option is when the institution finds some way to evade the requirements of the law. This has often a cost, not only for the institution but also for the community that it serves. We can imagine, for instance, that the new abortion law will require only hospitals receiving public funds to perform abortion. In this case a Catholic hospital might decide to refuse public funds and reduce its activities, or to close down its maternity department and continue to offer its services in other areas. Its ethos won't be compromised but no one will win from this situation. Indeed, what interest has the state in seeing a service that has been proven useful, if not essential, to a community, discontinued? Moreover, if the interest of the state is to make abortion available to women, this won't happen anyway if the hospital terminates, partially or entirely, its services for the state. If the government will push its policies into this direction, it will only undermine its goal.
This third option is only beneficial to the state if it leads Catholic hospitals to become disloyal to their history and mission, and act against conscience (second option), which is profoundly unjust. Otherwise it creates a situation where both contenders lose.
A fourth, more reasonable and just option, is to grant institutional conscientious objection, i.e. to permit to a hospital or a clinic to continue to provide medical care but without the obligation to offer abortions.
This is a fair solution that balances the rights of religious inspired institutions and the legal duty of the state (post-repeal) to assure that abortion services are offered in Ireland. (Obviously, it is only balanced when those services are offered by other non-objecting hospitals or clinics.)
The current draft of the abortion law does not contain such an opt-out and, as I have already shown, it presents a quite narrow understanding of conscientious objection. See here:
Latest version of planned abortion law even worse than the first one [1]
Minister Harris should acknowledge that institutional conscientious objection is internationally recognized. For instance, forty four states in the U.S. allow institutions to refuse to provide abortions. The American Medical Association (AMA) adopted a policy on abortion stating: "Neither physician, hospital, nor hospital personnel shall be required to perform any act violative of personally held moral principles". (Health Policies of the House of Delegates, "Abortion", 5.995)
Likewise, in 2010 the Parliamentary Assembly of the Council of Europe approved a resolution [2] stating that "No person, hospital or institution shall be coerced, held liable or discriminated against in any manner because of a refusal to perform, accommodate, assist or submit to an abortion." Many European states recognize the right to object to abortion not simply to individuals but also to institutions.
Minister Harris said that state funded hospitals are expected to follow the law. Of course they are but at the same time there is no reason why the law should not contemplate conscientious objection for individuals and institutions, as it happens in other countries.
Denying this right would be unjust because it would force religious institutions to act against the principles inspiring their healthcare, but it would also be detrimental, because it would deprive communities of certain health services now provided by Catholic hospitals.
URL to article: https://ionainstitute.ie/the-state-must-respect-the-conscience-rights-of-pro-life-hospitals/
[1] Latest version of planned abortion law even worse than the first one: https://ionainstitute.ie/latest-version-of-planned-abortion-law-even-worse-than-the-first-version/
[2] Council of Europe approved a resolution: http://assembly.coe.int/nw/xml/News/FeaturesManager-View-EN.asp?ID=950


text:
Politics and Society article comment count is: 0
Politics and Society South Africa: Expropriation Bill sails through National Assembly
By Arthur Chatora on February 25, 2016
South Africa's National Assembly has passed the Expropriation Bill, a major step towards redressing racial imbalances in land ownership. The country currently follows the willing-buyer, willing-seller model to land reform. The model has been heavily criticised for its ineffectiveness and perpetuating the existing unequal land ownership patterns.
Politics and Society Zimbabwe: Traditional leaders call for abolition of death penalty
By Arthur Chatora on January 20, 2016
Zimbabwe's traditional leaders have joined the debate on capital punishment, calling for the abolition of death penalty. The debate comes at a time where some inmates on death row have submitted a plea to the Constitutional Court to have their sentences commuted to life imprisonment.
Politics and Society Tanzania arrests more than 200 witchdoctors
By Stanley Azuakola on March 13, 2015
Tanzania has arrested more than 200 witchdoctors and traditional healers in its continued effort, to put an end to murder of albino people
Politics and Society Tanzania bans "witchdoctors" to end albino murders
By Stanley Azuakola on January 15, 2015
The government of Tanzania has banned witchdoctors in the country in a bid to protect albino people and stop attacks on them
Politics and Society THINK AGAIN: The real value of the Zimbabwe torture ruling
By Simon Allison on November 25, 2014
Investigating crimes against humanity is a notoriously complex, slow and expensive business.
Zimbabwe meets both these criteria. Basic human rights have been something of a luxury there in recent years, and particularly in 2007 – the year in which the crimes against humanity that SAPS must now investigate were allegedly committed.
Politics and Society South Africa's ruling party calls for tougher gun laws
By Khanyo Olwethu Mjamba on October 31, 2014
Following the murder of national football star, Senzo Meyiwa, the African National Congress (ANC) is calling for a review on current national laws that regulate the usage of firearms
Politics and Society Uganda anti-gay law declared null by constitutional court
By Khanyo Olwethu Mjamba on August 1, 2014
Uganda's constitutional court has invalidated the controversial piece of legislation commonly known as the 'Anti-Gay law", saying it was not passed legally therefore was in breach of the constitution
Politics and Society Zim constitutional court strikes off defamation law
By Khanyo Olwethu Mjamba on June 13, 2014
In a landmark ruling, Zimbabwe highest court declared the law of criminal defamation should be struck off the statues as it has no place in a democratic society like Zimbabwe's
Politics and Society Zimbabwe changes black empowerment law
By This Is Africa on May 30, 2014
Under the law, foreign owners of mines in Zimbabwe were given an ultimatum to surrender more than 50 percent of their shares and find local partners or risk nationalisation.


After a frigid few days, temperatures will reach the 50s early next week. Here's why.
Forecasters say the beginning of next week is going to feel quite different.
An unusually warm couple of days are on the horizon.
From Friday to Tuesday, each day will be about 5 to 7 degrees warmer than the last, according to National Weather Service forecasters in Norton. High temperatures will reach the 50s on Monday and Tuesday.
Meteorologist Bill Simpson said a freezing low Monday morning could turn into a high of 53 degrees, carrying into Tuesday until weather returns to "near normal" Wednesday with a high in the low 40s.
The heavy fluctuation in temperature is the result of an amplified jet stream switching direction to pull in warmer air, Simpson said.
Simpson said he sees this weather pattern in Boston about every three years, but the temperatures aren't record-breaking.


It's hard to stay up. Every time he's gone up, he's always come back down. It was thought that that was only because he was young. And now, with children and a devoted wife, he was supposed to be able to hold it together. So far, sure, but just barely.
There were signs before Christmas but during the holidays, he injured his back on a ski trip. This was not widely disclosed and kept out of the press. Painkillers were prescribed. The big movie was pushed back. Cocktails were consumed in combination at events. No one remembers he actually went to rehab several years ago. Still, so far, he's functioning. And things are great with his wife. She really tries to take care of him but she's not always with him. When he's out on his own, it gets messy. There have been times lately where he's been so drunk, he's the dude passed out on the couch when everyone else has gone home. Either that or he's the dude who's all over the tall, attractive model type at the Oscar party that his wife decided to skip. Oh yeah, that happened. It keeps happening. They were talking nose to nose. He gave her the full charm. A "later on" was definitely implied, while everyone around him just shrugged. Because it's not the first time and it's not the last time and it's the secret they're all expected to keep. Not because he doesn't love the mother of his children, because he does, he really, really does. But between the pills and the alcohol, he's losing control of that side of himself that's been held in check for too long.
Update: Lainey has revealed this to be about Ben Affleck.
I think his glazed and tiny eyes speak for him.
I never thought I would sorry for Garner.... but this is got to be the worst thing to happen in a marriage, especially with small children.
I was thinking Ben Affleck too. Lainey always calls JG the "perfect wife"
Who's the tall attractive model type?
I was thinking that the tall, attractive model-type wasn't famous. But, if anyone seems to figure that one out, that would be great.
An injury certainly explains why Affleck is looking so chunky and out of shape. He's supposed to be Batman not Fatman. They're supposed to start shooting in less than 3 months so he'd better heal quick and start working out or else the fan boys are going to get really, really ugly. Up to now they haven't actually egged his house but if he shows up looking puffy and wated they're going to be all over him like he stole their puppies.
I mean, if that wasn't obvious enough."
I mean, if that wasn't obvious enough. And if it was obvious, you should not be surprised about what happened to Ben Affleck in Vegas last week."


text:
Reliance on teamwork and the physicality of rowing keeps crew coming back to Annapolis docks
By Mike Klingaman
How does Maddy Fangio know she has rowed her best?
"When you finish the race, you're on the verge of passing out, barely able to breathe," said Fangio, a senior at Severna Park High. "Your legs are so dead that they wiggle and collapse when you step onto the dock. And you've pushed yourself so hard and your body is in such pain that it all feels peaceful, almost primal."
Maddy Fangio, front, and Gemma Wollenschlaeger row during practice. Annapolis Junior Rowing is a group of high school boys and girls from all over Anne Arundel county who compete in rowing for the club. (Ulysses Muñoz/The Baltimore Sun)
Such is the mindset of competitive rowers, one that prompts the question: Why drain oneself in an unheralded sport that delivers more aches than acclaim?
Because cutting through the water in an eight-person shell, with the crew pulling in unison, triggers a natural high, Fangio said:
"It's euphoric. Everything else melts away, your mind goes blank and it feels like you're flying."
Fangio, 17, competes for the Annapolis Junior Rowing Association, a team of 78 middle and high school students from 18 public and private schools in Anne Arundel County. They train year-round — on the water at Broad Creek, in Annapolis, and in winter at the Greater Annapolis Y in Arnold — in a sport long championed by Ivy League schools that more recently has widened its base.
From left, Maddy Fangio, Gemma Wollenschlaeger, Pascal Evans and Alex Quilliam row their boats during practice. Annapolis Junior Rowing is a group of high school boys and girls from all over Anne Arundel county who compete in rowing for the club. 09-30-2020 (Ulysses Muñoz/The Baltimore Sun)
Club members say the novelty of rowing, its physicality and reliance on teamwork keep them coming back to the docks almost daily to knife through the creek with their oars.
"I tried rowing last year and fell in love. Now I can't imagine my life without it," said Gemma Wollenschlaeger, 17, of Crofton, a senior at Archbishop Spalding. "I've played other sports but never pushed myself harder than here. I've always wanted to be different, and this is so unique.
"At school, when I talk about rowing, it's kind of a joke, like, 'Oh, Gemma and her boat, she loves it.' My parents say they don't understand how rowers can put themselves in such pain, to the point where the lactic acid builds up and your whole body tingles from your fingertips to your knees. But you tolerate it because you love the sport, which makes it an enjoyable pain, if that makes sense."
One of two standouts on the Annapolis women's team (Fangio is the other), Wollenschlaeger has earned a half-scholarship to Temple University to row next year. On Fangio's wish list is Stanford, ranked No. 2 nationally last spring before COVID-19 canceled the college season.
The pandemic wiped out both racing seasons this year for the Annapolis Junior Rowing Association, which normally competes from March through May and September to November in four to six regattas per season against other high school-age teams in the Mid-Atlantic region. Yet the crew kept at it, practicing in single sculls instead of the normal eight-person shells.
Head boys coach Phil Lyman's class is reflected in his sunglasses as he watches them retrieve their boats from the water and return to the dock. Annapolis Junior Rowing is a group of high school boys and girls from all over Anne Arundel county who compete in rowing for the club. 09-30-2020 (Ulysses Muñoz/The Baltimore Sun)
Working out in singles was "the best thing that could have happened," said Phil Lyman, the men's coach, as it has honed rowers' individual skills before they return to the eights — hopefully, he said — come spring.
The sport builds everything from leg strength to self-esteem, said Lyman, 68, who rowed at Princeton.
"Getting eight people to row precisely with one another, while balancing a sleek boat 60 feet long, two feet wide and just inches above the water, well ... kids who can master that gain a lot of self-confidence," he said.
Last October, in the prestigious Head of the Charles Regatta in Boston, the Annapolis men's varsity eight placed 25th of 86 teams from the U.S., Canada and Great Britain. It was a stellar finish on the three-mile stretch of the Charles River for the team, two of whose rowers — Alex Quilliam and Pascal Evans — are still with the club.
Pascal Evans, front, and Alex Quilliam row their boats during practice. Annapolis Junior Rowing is a group of high school boys and girls from all over Anne Arundel county who compete in rowing for the club. 09-30-2020 (Ulysses Muñoz/The Baltimore Sun)
"It was a staggered start, maybe 30 seconds apart, but we passed two boats in that race," said Quilliam, 17, a senior at Broadneck. "Afterward, we were too tired to share anything but some grunts of acknowledgment; the high fives and chest bumps came later."
For Evans, 18, a senior at South River, the race was vindication for the good-natured ribbing he has taken from friends.
"When I show them the blisters on my hands, they don't see the point. They think I'm crazy," he said. "But when I tell them you can go to a pretty good college with rowing on your application, they start to listen."
Pascal Evans grips his oars tightly as he waits for instructions from Coach Lyman. (Ulysses Muñoz/The Baltimore Sun)
Evans hopes to attend the Naval Academy and compete. Others from the Annapolis Junior Rowing Association have gone on to row for Navy, Michigan, Drexel, Wisconsin and the University of St. Andrews in Scotland.
Membership (pre-pandemic) costs $1,100 a year and attracts all types of teens, says Bridget Fitzpatrick, the women's coach.
"We get athletes who are quiet and shy until they get in the boat and start to soar as leaders. And we get jocks who start rowing and are humbled a bit," said Fitzpatrick, 29, a physical education teacher at Southern Middle who rowed at Canisius College in Buffalo.
Nowadays, it's an outlet for athletes frustrated by COVID-19, she said.
"Rowing gives kids a place to go where they can stay socially distant and challenge themselves trying something they've never done."
Discomfort aside, the club shares laughs as well. Last year, said Wollenschlaeger, she and a teammate offered to show a newcomer the basics.
Alex Quilliam, front, and Pascal Evans retrieve a boat from the water and carry it back to the storage area. Annapolis Junior Rowing is a group of high school boys and girls from all over Anne Arundel county who compete in rowing for the club. (Ulysses Muñoz/The Baltimore Sun)
"This kid had never seen rowing, so my friend and I got in the boat, pushed off ... and flipped [capsized]," she said. "We swam back to the dock and told the kid, 'That's not what rowing is.' "
Few believed Fangio when, while sculling on Broad Creek last month, she swore that she bumped into a squirrel.
"At first I thought it was an otter," she said. "But there in the water was a squirrel swimming by. I thought, 'Oh my gosh, I hit a squirrel!' [It] sort of tried to climb in as I passed by, but then kept on swimming."
Quilliam's tale tops all. Last summer, he said, during an eight-man workout, a fish jumped from the water and landed at the feet of a rower.
Latest Capital Style
Naval Academy fencing team teaches midshipmen medieval combat for a modern military career
20 health and wellness trends to try in 2022 around Anne Arundel County
What is the best part of winter in Anne Arundel? Readers respond
"He [the rower] freaked out," Quilliam said. "His oar was all over the place as he tried to scoop up the fish. Finally, we had to stop rowing to fish it out."


A few weeks ago U.S. Senator Cory Booker made a plea for the U.S. to use social media against ISIS in the War on Terror. At the time I thought he was talking about using 'dank memes' to fight terrorism, but if a recent mission by the United States Air Force is any indication he was actually talking about something quite different. At a breakfast meeting this past Monday in Washington D.C.., Air Force Gen. Hawk Carlisle, head of Air Combat Command, told a recent tale of his soldiers finding some idiot ISIS fighter who posted a selfie to some social media forum, and how within 24-hours that picture led to a bombing that completely flattened that ISIS base. The lesson to be learned here? Posting selfies to social media might get you and your friends bombed into dust.
Air Force Gen. Hawk Carlisle, head of Air Combat Command, described Monday how airmen at Hurlburt Field, Florida, with the 361st Intelligence, Surveillance and Reconnaissance Group, recognized a comment on social media and turned that into an airstrike that resulted in three Joint Direct Attack Munition (JDAM) missiles destroying am Islamic State in Iraq and Syria (ISIS) headquarters building.
Carlisle was careful not to share all of the Air Force's secrets to include the location of the building but this is how he told the story at the recent breakfast meeting in Washington D.C. hosted by the Air Force Association.
What do selfies lead to when you're an ISIS fighter?
How do we feel about the fact that this terrorist's selfie led to a USAF bombing of an entire ISIS base?


text:
Jon Raven (1940–2015) was an English author and musician.

Early life
Jon Raven was the brother of author and musician Michael Raven, father of the late Ministry and Killing Joke bassist Paul Raven, and Gundogs bassist Daniel Raven. Raven was born in Wales and educated at Wolverhampton Municipal Grammar School. His wife was Kate, of Tettenhall, Wolverhampton. Alongside brother, Michael, Jon formed a Wolverhampton folk music group before producing records and books and making television and radio appearances. He was diagnosed with Parkinson's disease in 1996 and died in August 2015 at Compton Hospice in Wolverhampton.

Writing
Raven is the author of non-fiction books, the majority related to Black Country history, customs, folklore and music and on industry typical of the Black Country area such as coal mining and nail making.

His books include The Folklore and Songs of the Black Country Colliers, Customs of the Black Country, and Aynuk's First Black Country Waerd Book.

Bibliography
 Folk Songs of the Black Country – Wolverhampton Folk Song Club, 1964
 Folklore and Songs of the Black Country and West Midlands Volume I – Wolverhampton Folk Song Club, 1965
 Folklore and Songs of the Black Country and West Midlands Volume II – Wolverhampton Folk Song Club, 1966
 Folklore and Songs of the Black Country and West Midlands Volume III – Wolverhampton Folk Song Club, 1967
 Kate of Coalbrookdale – 1971
 Songs of a Changing World – Ginn & Co., 1972
 Canal Songs – 1974
 Turpin Hero – 1974
 The Nailmakers – The Black Country Society, 1975
 The Rigs of the Fair: Popular Sports and Pastimes in the Nineteenth Century through Songs, Ballads and Contemporary Accounts (Resources of Music) – Cambridge University Press, 1976
 The Urban and Industrial Songs of the Black Country and Birmingham – Broadside Books, 1977
 The Folklore of Staffordshire (The folklore of the British Isles) – Batsford, 1978
 Victoria's Inferno: Songs of the Old Mills, Mines, Manufactories, Canals and Railways – Broadside Books, 1978
 Tales from Aynuk's Black Country – Broadside Books, 1978
 Aynuk's First Black Country Waerd Book – Broadside Books, 1978
 Aynuk's Second Black Country Waerd Book – Broadside Books, 1979
 Black Country Songs and Rhymes: v. 1 – Broadside Books, 1979
 Theodore – 1984
 Black Country and Staffordshire: Stories, Customs, Superstitions, Tales and Folklore – Broadside Books, 1986
 Customs of the Black Country – Broadside Books, 1987
 The Book of the Black Country – Broadside Books, 1988
 Tettenhall – Broadside Books, 1989
 The Folklore and Songs of the Black Country Colliers – Broadside Books, 1990

Music
Raven was a member of folk trio The Black Country Three along with brother Michael Raven and Derek Craft. They recorded their self-titled debut album in 1966 for Transatlantic. Following this, Raven produced several solo and group CDs.

He performed on the following albums:
 The Black Country Three by The Black Country Three (1966)
 Songs Of The Black Country And West Midlands by Jon Raven, Michael Raven & Jean Ward (1968)
 Jon Raven & The Halliard by Jon Raven & The Halliard (Nic Jones, Dave Moran & Nigel Paterson) (1968) (Later reissued on CD with "The Jolly Machine")
 Kate of Coalbrookdale by Jon Raven, Michael Raven and Jean Ward (1971)
 Ballad of the Black Country by Jon Raven, John Kirkpatrick, David Oxley and Mike Billington (1975)
 The Bold Navigators by Jon Raven, John Kirkpatrick, Sue Harris, Gary & Vera Aspey 1975)
 Harvest by Jon Raven, supported by Dave Oxley and Nigel M Jones (1976)
 Steam Ballads by Jon Raven, Harry Boardman, Kempion, and Tony Rose (1977)
 Fragile Life by Jon Raven, supported by Daniel Raven and Gavin Monaghan (1995)

References

1940 births
Date of birth missing
2015 deaths
English folk musicians
English non-fiction writers
People from the Black Country
English male non-fiction writers
People educated at Wolverhampton Grammar School
Neurological disease deaths in England
Deaths from Parkinson's disease

redpajama_set_name: RedPajamaWikipedia


Home › Newest Products › New Hand Crank with Spinner Handle for Allis Chalmers B, C, CA Tractors, 207893, 70207893, USA MADE!!!
New Hand Crank with Spinner Handle for Allis Chalmers B, C, CA Tractors, 207893, 70207893, USA MADE!!!
New Hand Crank with Spinner Handle for Allis Chalmers B, C, and CA Tractors.
Replaces AGCO Allis Chalmers part numbers: 207893, 70207893.
Home / Collections / Newest Products / New Hand Crank with Spinner Handle for Allis Chalmers B, C, CA Tractors, 207893, 70207893, USA MADE!!!


Home > rosslyn elliott > Protagonist Authors Revealed!
When Ann travels to Pittsburgh, accompanying her minister father on business, she meets Will Hanby, a saddle-maker's apprentice. Will has spent years eking out an existence under a cruel master and his spirit is nearly broken. Anne's compassion lights a long-dark part of his soul. Through his encounters with Anne's father, a master saddler, Will discovers new hope and courage even in the midst of tremendous adversity.
Rosslyn Elliott earned a doctorate in American literature before putting her research skills to creative use in her debut historical romance, Fairer than Morning.
Next week you focus on these very talented authors. Pamela is Monday, and Rosslyn is Wednesday! The Clash winner and drawing winners will be announced next Friday!
Both books sounds so good. Lovers in conflict in one one and competition for love in the other.
Can't go wrong with either of these stories.
Congratulations to both authors. I agree with Gail, these are both books I'd love to read.
Welcome, Pam and Rosslyn! It's great to have you both. Looking forward to getting to know you next week!


The additional deadbolt provides a second, independent lock on modified 856 or 859 door locks, increasing security for the end user. The modified locks have a slot in the faceplate to allow the bolt to be thrown and locate in an additional hook plate.
The lock fits above the handle at a comfortable height for ease of use. It can be operated internally by key or thumb turn, and locked externally by key. Alternatively a half cylinder can be used for internal or external locking depending upon the security requirements of the end user.