text:
\section{Introduction}
We consider the setup where an encoder wishes to convey a common message over a broadcast channel with noiseless feedback to two decoders. Similarly to the single-decoder (SD) case, noiseless feedback combined with fixed-blocklength codes does not improve capacity, which is given by \cite[p. 126]{Gamal2011}
\begin{align}
  C = \sup_{P} \minn{I(P, W_1), I(P,W_2)}.\label{eq:common_capacity}
\end{align}
Here, $W_1$ and $W_2$ denote the channels to decoder $1$ and $2$, respectively, and the supremum is over all input distributions $P$.
For the case when there is no feedback, the speed at which $C$ is approached as the blocklength $n$ increases is of the order ${1}/{\sqrt{n}}$ \cite{Polyanskiy} (same as in the SD case). The constant factor associated to the ${1}/{\sqrt{n}}$ term is commonly referred to as channel \emph{dispersion}.

For the SD case, noiseless feedback combined with variable-length codes improve significantly the speed of convergence to capacity.
Specifically, it was shown in~\cite{Polyanskiy2011} that
\begin{align}
  \frac{1}{l}\log \widetilde M_{\text{f}}^*(l, \epsilon) = \frac{\widetilde C}{1-\epsilon} -\mathcal{O}\farg{\frac{\log l}{l}}\label{eq:SD_vlf_rate}
\end{align}
where $l$ stands for the average blocklength (average transmission time), $\widetilde M_{\text{f}}^*(l,\epsilon)$ is the maximum number of codewords in the SD case, and $\widetilde C$ denotes the corresponding capacity.
One sees from~\eqref{eq:SD_vlf_rate} that no square-root penalty occurs (zero dispersion), which implies a fast convergence to the asymptotic limit. This fast convergence is demonstrated numerically in \cite{Polyanskiy2011} by means of nonasymptotic bounds.
Variable-length stop-feedback (VLSF) codes, i.e., coding schemes where the feedback is used only to stop transmissions, are sufficient to achieve \eqref{eq:SD_vlf_rate}.

The purpose of this paper is to investigate whether a similar result holds for the broadcast channel with common message.

\subsubsection*{Contribution}
We consider the subclass of discrete memoryless broadcast channels for which $I(P,W_1)$ and $I(P,W_2)$ are maximized by the same input distribution $P^*$, which we assume to be unique. In this case, $C = \minn{I(P^*,W_1),I(P^*,W_2)}$. Focusing on the case when VLSF codes are used, we obtain nonasymptotic achievability and converse bounds on the maximum number of codewords $M^*_{\text{sf}}(l,\epsilon)$ with average blocklength $l$ that can be transmitted with reliability $1-\epsilon$. Here, the subscript ``sf'' stands for stop feedback.
By analyzing these bounds in the large-$l$ regime, we prove that when the two subchannels are independent and have the same capacity and the same dispersion, and when $\epsilon\leq 0.1968$, the asymptotic expansion of $M^*_{\text{sf}}(l,\epsilon)$ contains a square-root penalty (see \eqref{eq:asymp_expansion} and \eqref{eq:asymp_expansion_sym} for a precise statement of this result).
Hence, the fast convergence to the asymptotic limit experienced in the SD case cannot be expected.

The intuition behind this result is as follows: in the SD case, the stochastic variations of the information density that result in the square-root penalty can be virtually eliminated by using variable-length coding with stop-feedback.
Indeed, decoding is stopped after the information density exceeds a certain threshold, which yields only negligible stochastic variations. In the broadcast setup, however, the stochastic variations in the difference between the stopping times at the two decoders make the square-root penalty reappear.
Note that our result does not necessarily imply that feedback is useless. It only shows that VLSF codes cannot be used to speed-up convergence to the same level as in the SD case.
\subsubsection*{Proof techniques}
The achievability bound is an extension of~\cite[Th~3]{Polyanskiy2011}; the converse bound is based on an optimal stopping problem, where the probability that the stopping time exceeds a given threshold is minimized under a constraint on the ``stopped'' information density process.
The asymptotic analysis of the converse bound relies on Hoeffding's inequality and on the Berry-Esseen central limit theorem, whereas the asymptotic analysis  of the achievability bound relies on asymptotic results for random walks~\cite{Gut2009} and on a Berry-Esseen-type theorem that holds for random summations~\cite{Landers1976}.

\subsubsection*{Notation}
Upper case, lower case, and calligraphic letters denote random variables (RV), deterministic quantities, and sets, respectively.
The probability density function of a standard Gaussian RV  is denoted by  $\phi(x)$.
Furthermore, $\Phi(x)\triangleq 1- Q(x)$ is its cumulative distribution, where $Q(x)$ is the Q-function.
We let $x^+$ and $x^-$ denote $\max(0,x)$ and $\minn{0,x}$, respectively.
Throughout the paper, the index $k$ belongs always to the set $\{1,2\}$, although this is sometimes omitted.
Furthermore, $\bar k \triangleq 3- k$. We adopt the convention that $\sum_{i=j}^{j-1} a_i = 0$ for all $\{a_i\}$ and all integers $j$.
We use ``$\mathbbm{c}$'' to denote a finite nonnegative constant. Its value may change at each occurrence.
 Finally, $\mathbb{N}$ denotes the set of positive integers and $\mathbb{Z}_+ = \mathbb{N}\cup \{0\}$.

\section{System Model}
A common-message discrete memoryless broadcast channel with two decoders is defined by the finite input alphabet $\mathcal{X}$ and the finite output alphabets $\mathcal{Y}_k$, along with the stochastic matrices $W_k$, where $W_k(y_k|x)$ denotes the probability that $y_k\in\mathcal{Y}_k$ is observed at decoder $k$ given $x\in\mathcal{X}$. We assume that the outputs at each time~$i$ are conditionally independent given the input, i.e.,
\begin{align}\label{eq:factorization}
  P_{Y_{1,i},Y_{2,i}|X_i}(y_{1,i},y_{2,i}|x_i) \triangleq W_1(y_{1,i}|x_i)W_2(y_{2,i}|x_i).
\end{align}
Define the set of probability distributions on $\mathcal{X}$ by $\mathcal{P}(\mathcal{X})$.
Let $P \times W_k: (x,y_k) \rightarrow P(x)W(y_k|x)$ denote the joint distribution of input and output at decoder $k$, and let $PW_k: y_k \rightarrow \sum_{x\in\mathcal{X}} P(x)W_k(y_k | x)$ denote the marginal distribution on $\mathcal{Y}_k$.
For every $P\in\mathcal{P}(\mathcal{X})$, the information density is defined as
\begin{align}
  \imath_{P, W_k}(x^n; y_k^n) \triangleq\sum_{i=1}^n \log \frac{W_k(y_{k,i}|x_i)}{PW_k(y_{k,i})}.
\end{align}
We let $I(P, W_k)\triangleq \EE{P\times W_k}{\imath_{P, W_k}(X; Y_k)}$ be the mutual information, $V(P, W_k)\triangleq \Vaa{P\times W_k}{\imath_{P, W_k}(X; Y_k)}$ be the (unconditional) information variance, and $T(P,W_k)\triangleq \EE{P\times W_k}{|\imath_{P, W_k}(X; Y_k) - I(P,W_k)|^3}$ be the third absolute moment of the information density.
We restrict ourselves to the case, where there exists a unique probability distribution $P^*\in\mathcal{P}(\mathcal{X})$ that maximizes simultaneously both $I(P,W_1)$ and $I(P,W_2)$.
In this case, the capacity is given by
\begin{align}
C \triangleq \min\{ C_1,C_2\}\label{eq:capacity_def}
\end{align}
where $C_k\triangleq I(P^*, W_k)$.
The corresponding (unique) capacity-achieving output distributions are denoted by $P_{Y_k}^*$.
Finally, we also define the dispersions $V_{k} \triangleq V(P^*,W_k)$.

We are now ready to formally define a VLSF code for the broadcast channel with common message.
\begin{definition}
\label{def:VLSFcode}
An $(l, M,\epsilon)$-VLSF code for the broadcast channel with common message consists of:
\begin{enumerate}[leftmargin=*]
\item A RV $U\in\mathcal{U}$, with $|\mathcal{U}|\leq 3$, which is known by the encoder and by both decoders.
\item A sequence of encoders   $f_n: \mathcal{U}\times \mathcal{M} \rightarrow \mathcal{X}$, each one mapping the message $J\in\mathcal{M}=\{1,\ldots,M\}$, drawn uniformly at random, to the channel input according to $X_n = f_n(U,J)$.
\item Two nonnegative integer-valued RVs $\tau_1$ and $\tau_2$ that are stopping times with respect to the filtrations $\mathcal{F}(U, Y_{1}^n)$ and $\mathcal{F}(U, Y_{2}^n)$, respectively, and which satisfy
\begin{align}
  \E{\maxx{\tau_1, \tau_2}}\leq l.\label{eq:avg_blocklength_const}
\end{align}
\item A sequence of decoders $g_{k,n}: \mathcal{U}\times \mathcal{Y}_i^n \rightarrow \mathcal{M}$ satisfying
\begin{align}
  \pr{J \not= g_{k,\tau_k}(U, Y_k^{\tau_k}) } \leq \epsilon, \qquad k\in\{1,2\}.\label{eq:def_prob_error}
\end{align}
\end{enumerate}
\end{definition}
\begin{remark}
The RV $U$ serves as common randomness, and enables the use of randomized codes~\cite{Lapidoth1998}.
To establish the cardinality bound on $U$, we proceed as in \cite[Th.~19]{Polyanskiy2011} to show that $|\mathcal{U}|\leq 4$ is sufficient. This bound can be further improved to $|\mathcal{U}|\leq 3$ by using the Fenchel-Eggleston theorem \cite[p.~35]{Eggleston}.
\end{remark}
\begin{remark}
VLSF codes require a feedback link from the decoders to the encoder.
This feedback consists of a $1$-bit stop signal per decoder, which is sent by decoder $k$ at time~$\tau_k$. The encoder continuously transmits until both decoders have fed back a stop signal.
Hence, the blocklength is  $\maxx{\tau_1,\tau_2}$.
\end{remark}

Our aim is to characterize the largest number of codewords $M^*_{\text{sf}}(l, \epsilon)$, whose average length is $l$, that can be transmitted with reliability $1-\epsilon$ using a VLSF code.

\section{Main Results}
\subsection{Achievability bound}
We first present an achievability bound.
Its proof (omitted) follows  closely the proof of~\cite[Th. 3]{Polyanskiy2011}.
\begin{theorem}
\label{thm:simple_achiev}
  Fix $P \in\mathcal{P}(\mathcal{X})$. Let $\gamma_1,\gamma_2\geq 0$ and $0 \leq q \leq 1$  be arbitrary scalars. Let the stopping times $\tau_k$ and $\bar \tau_k$, $k\in\{1,2\}$, be defined as
  \begin{align}
  \tau_k &\triangleq \inff{n \geq 0: \imath_{P, W_k}(X^n ; Y_k^n)\geq \gamma_k}\\
  \bar \tau_k &\triangleq \inff{n \geq 0: \imath_{P, W_k}(\bar X^n ; Y_k^n)\geq \gamma_k}
  \end{align}
  where $(X^n, \bar X^n, Y_1^n, Y_2^n)$ are jointly distributed according to
  \begin{align}
    &P_{X^n, \bar X^n,Y_1^n, Y^n_2}(x^n, \bar x^n, y_1^n, y_2^n) \nonumber\\
    &= P_{Y_1^n, Y^n_2|X^n}(y_1^n, y_2^n|x^n)\prod_{i=1}^n P(x_i)P(\bar x_i).
  \end{align}
For every $M$, there exists an $(l, M, \epsilon)$-VLSF code such that
\begin{align}
    l &\leq (1-q) \E{\maxx{\tau_1,\tau_2}}\label{eq:achiev_Emax}
\end{align}
    and
\begin{align}
    \epsilon &\leq  q + (1-q)(M-1)\pr{\tau_k\geq \bar\tau_k}.\label{eq:achiev_Proberror1}
\end{align}
\end{theorem}
\begin{remark}
\label{rem:prob_error}
Following the same steps as in~\cite[Eq. (111)--(118)]{Polyanskiy2011},
  $\epsilon$ in~\eqref{eq:achiev_Proberror1} can be further upper-bounded as
  \begin{align}
  \epsilon \leq q + (1-q)(M-1)\exp\left\{-\gamma_k\right\}.\label{eq:achiev_Proberror2}
  \end{align}
   This  bound is easier to evaluate and to analyze asymptotically.
\end{remark}

\subsection{Converse bound}
Let $P_{\x^n}\in\mathcal{P}(\mathcal{X})$ be the type~\cite[Def. 2.1]{Csiszar} of the sequence $\x^n \in\mathcal{X}^n$.
We are now ready to state our converse bound.
\begin{theorem}
\label{thm:converse_bound}
For every $M$, $t\in \mathbb{Z}_+$ and $\delta>0$, let
\begin{align}
\lambda_t\triangleq \log M - \log \log M -\delta - (|\mathcal{X}|-1)\log(t+1)\label{eq:conve_lambda_def}
\end{align}
and let
\begin{multline}
  L_t \triangleq \prod_{k=1}^2 \max_{ \x^t\in\mathcal{X}^t}\left\{\pr{\imath_{P_{\x^t},W_k}(\x^t;Y_k^t)> \lambda_t}\right\} \\
  + \varepsilon_M \left(1+ \min_{k} \max_{ \x^t\in\mathcal{X}^t} \pr{\imath_{P_{\x^t},W_k}(\x^t;Y_k^t)> \lambda_t} \right)\label{eq:Lt_def}
\end{multline}
where $\varepsilon_M = \epsilon + (\log M)^{-1}$.
Then, for every $(l,M,\epsilon)$-VLSF code, we have
\begin{align}
  l \geq \sum_{t=0}^{\infty}\left(1- L_t\right)^+.\label{eq:conve_l_lower_bound}
\end{align}
\end{theorem}
\begin{IEEEproof}
  See Section~\ref{sec:converse_bound}.
\end{IEEEproof}

\subsection{Asymptotic expansion}
Analyzing~\eqref{eq:achiev_Proberror2} and~\eqref{eq:conve_l_lower_bound} in the  limit $l\to\infty$, we obtain the following asymptotic characterization of $M^*_{\text{sf}}(l,\epsilon)$.
\begin{theorem}
\label{thm:asymp}
Let $Z_k \sim \mathcal{N}(0,1)$, $V = \sqrt{V_1 V_2}$, $\varrho_k = \left({V_k}/{V_{\bar k}}\right)^{1/4}$, and let $y=\tilde Q^{-1}\farg{x}$ be the solution of
\begin{align}
 \prod_{k=1}^2 Q\farg{ -\varrho_k y}+ x \left(1 + \min_{k} Q\farg{-\varrho_k y}\right) = 1.\label{eq:tildeQ_def}
\end{align}
For every discrete memoryless broadcast channel with $C_1=C_2$ and every $\epsilon \in (0,1)$, we have
\begin{multline}
   \frac{C l}{1-\epsilon}-  \Xi_{\text{a}} \sqrt{l}-\mathcal{O}\farg{ l^{1/4+\delta} } \leq \log M^*_{\text{sf}}(l,\epsilon)  \\
  \leq \frac{C l}{1-\epsilon}- \Xi_{\text{c}}\sqrt{l } +\mathcal{O}(\log l) \label{eq:asymp_expansion}
\end{multline}
where $\delta>0$ is an arbitrarily small constant,
\begin{align}\label{eq:constant_LHS_as}
  \Xi_{\text{a}} \triangleq \sqrt{\frac{V_1 + V_2}{2\pi(1-\epsilon)}}
\end{align}
and
\begin{multline}\label{eq:constant_RHS_as}
  \Xi_{\text{c}} \triangleq \sqrt{\frac{V}{(1-\epsilon)^3}}\left(\E{\minn{\tilde Q^{-1}\farg{\epsilon},\max_{k}\varrho_k Z_k} }\right.\\
  \left.-\epsilon \left(2\tilde Q^{-1}(\epsilon) -\min_{k} \E{\minn{\tilde Q^{-1}\farg{\epsilon}, \varrho_k Z_k} }   \right)\right).
\end{multline}
\end{theorem}
\begin{IEEEproof}
  The converse bound in \eqref{eq:asymp_expansion} is proved in Section~\ref{sec:converse_asymptotics} and the achievability bound is proved in Section~\ref{sec:achievability_asymptotics}.
\end{IEEEproof}

\begin{remark}
When $C_1\not= C_2$, it can be shown that the square-root penalty on the LHS of \eqref{eq:asymp_expansion} vanishes. In this case, the problem reduces to the point-to-point transmission to the weakest decoder, for which the zero-dispersion result in \cite{Polyanskiy2011} applies.
\end{remark}
\begin{remark}
  %
  For the case when $P_{Y_{1,i}, Y_{2,i} | X_i}$ does not satisfy~\eqref{eq:factorization}, a bound similar to the LHS of~\eqref{eq:asymp_expansion} can be obtained by replacing $\Xi_\text{a}$ in~\eqref{eq:constant_LHS_as} with
  %
  \begin{align}
   \sqrt{\frac{V_1 + V_2 - 2\text{Cov}(\imath_{P^*,W_1}(X; Y_1),\imath_{P^*,W_2}(X; Y_2))}{2\pi(1-\epsilon)}}.
  \end{align}
\end{remark}
\begin{remark}
When $\varrho_1=\varrho_2=1$ (and, hence, $V_1=V_2$), one can simplify the RHS of~\eqref{eq:asymp_expansion} as follows:
\begin{align}
&\log M^*_{\text{sf}}(l,\epsilon)\nonumber\leq \frac{C l }{1-\epsilon} - \sqrt{\frac{V l}{(1-\epsilon)^3}}\nonumber\\
 &\quad\times\bigg( \frac{1}{\sqrt{\pi}}\left(1- Q\farg{\sqrt{2}Q^{-1}(\epsilon)} \right)+ (\epsilon - 2)\phi\farg{Q^{-1}(\epsilon)} \bigg) \nonumber\\
  & \quad- \mathcal{O}\farg{\log l}.\label{eq:asymp_expansion_sym}
\end{align}
The second-order term in~\eqref{eq:asymp_expansion_sym} is strictly negative for all $\epsilon \leq 0.1968$. This implies that, when $C_1=C_2$, $V_1=V_2$, and $\epsilon \leq 0.1968$, the asymptotic expansion of $\log M^*_{\text{sf}}(l,\epsilon)$ contains a square-root penalty.

\end{remark}

\section{Proof of Theorem~\ref{thm:converse_bound}}
\label{sec:converse_bound}
Fix $M$ and $\epsilon$. To establish Theorem~\ref{thm:converse_bound}, we derive a lower bound on $l$ that holds for all VLSF codes having $M$ codewords and probability of error no larger than $\epsilon$. Since,
\begin{align}
  l\geq \E{\maxx{\tau_1, \tau_2}} = \sum_{t=0}^\infty \left(1 - \pr{\maxx{\tau_1, \tau_2}\leq t}\right)\label{eq:conve_Etau1_tau2_in_terms_of_pr_tau1_tau_2}
\end{align}
we can lower-bound $l$ by upper-bounding $\pr{\maxx{\tau_1,\tau_2}\leq t}$ for every $t\in\mathbb{Z}_+$. The following property \ifthenelse{\boolean{arxiv}}{(proven in Appendix~\ref{app:conve_property})}{} turns out to be useful.
\begin{property}
 Fix $t\in\mathbb{Z}_+$ and $\alpha\in[0,1]$, and suppose there exists an $(l,M,\epsilon)$-VLSF code with $\pr{\maxx{\tau_1,\tau_2} \leq t}\leq \alpha$. Then there exists an $(l',M,\epsilon)$-VLSF code for some $l' \geq l$, for which $\pr{\maxx{\tau_1,\tau_2} \leq t}\leq \alpha$ and $\tau_1,\tau_2\in\{t,t+1,\ldots\}$.
  \label{prop:VLSF_t}
\end{property}
\vspace*{0.5mm}

Fix  an arbitrary $(l, M,\epsilon)$-VLSF code, defined by the tuple $(f_n,g_{1,n},g_{2,n},\tau_1,\tau_2,U)$. By Property~\ref{prop:VLSF_t}, it is sufficient to consider codes for which $\tau_1,\tau_2\in\{t,t+1,\cdots\}$. Let $\epsilon_{k}^{(u)}$, $u\in\mathcal{U}$, be constants in $[0,1]$ such that $\sum_{u\in\mathcal{U}}P_U(u) \epsilon_k^{(u)}\leq \epsilon$ and $\pr{J\not= g_{k,\tau_k}(U, Y_k^{\tau_k})|U=u}\leq \epsilon_k^{(u)}$.

Since  $\{\tau_k = n\} \in \mathcal{F}\farg{U, Y_k^n}$, we can define a sequence of binary functions $\varphi_k \triangleq \{\varphi_{k,t},\varphi_{k,t+1},\cdots\}$ such that $\varphi_{k,n}(u,y^n_k) \triangleq\indi{\tau_k = n}$.
Let $P^{(u)}_{\X}$ be the conditional probability measure on $\mathcal{X}^\infty$ induced by the encoder given $U=u$.
Define for $u\in\mathcal{U}$ the set $\mathcal{\bar Y}^{(u)}_k \triangleq \left\{ y^n\in\mathcal{Y}^n_k : \varphi_{k,n}(u,y^n) = 1 \right\}$.
Note that we must have $Y_k^{\tau_k}\in \mathcal{\bar Y}^{(u)}$.
Let the length of a sequence of channel outputs $\bar y\in \mathcal{\bar Y}_k^{(u)}$ be denoted by $|\bar y|$.
On $\mathcal{\bar Y}_k^{(u)}$, define the conditional probability measure $\mathbbm{P}^{(k,u)}_{\bar Y | \X}$, given $\x \in \mathcal{X}^\infty$ and $u\in\mathcal{U}$, as
\begin{align}
\mathbbm{P}^{(k,u)}_{\bar Y |\X}(\bar y | \x) \triangleq \prod_{i=1}^{|\bar y|}W(\bar y_i |\x_i)
\end{align}
and the probability measure $\mathbbm{P}^{(k,u)}_{\bar Y,\X}(\bar y, \x)\triangleq \mathbbm{P}^{(k,u)}_{\bar Y |\X}(\bar y | \x) P^{(u)}_{\X}(\x)$ on $\mathcal{\bar Y}^{(u)}\times \mathcal{X}^\infty$. We also need the following auxiliary probability measure $\mathbbm{Q}^{(k,u)}_{\bar Y}$ on $\mathcal{\bar Y}_k^{(u)}$
\begin{align}
  &\mathbbm{Q}^{(k,u)}_{\bar Y}\farg{\bar y} \triangleq\nonumber\\
    &\sum_{P_{\x^{t}} \in \mathcal{P}_{t}(\mathcal{X})} \bigg(\frac{1}{|\mathcal{P}_{t}(\mathcal{X})|} \prod_{i=1}^{t} P_{\x^t}W_k(\bar y_{i}) \prod_{i=t+1}^{|\bar y|} P_{Y_k}^*\farg{\bar y_{i}}\bigg)\label{eq:Qk_def}
\end{align}
and the probability measure $\mathbbm{Q}^{(k,u)}_{\bar Y, \X}\farg{\bar y,\x}=\mathbbm{Q}^{(k)}_{\bar Y}\farg{\bar y} P^{(u)}_{\X}(\x)$ on $\mathcal{\bar Y}^{(u)}\times \mathcal{X}^\infty$. Here, $\mathcal{P}_t(\mathcal{X})\subseteq \mathcal{P}(\mathcal{X})$ denotes the set of types formed by length-$t$ sequences.

Using the meta-converse theorem \cite[Th.~27]{Polyanskiy2010b}, the inequality \cite[Eq. (102)]{Polyanskiy2010b}, the fact that $\mathbbm{Q}^{(k,u)}_{\bar Y_k, \X}$ is a convex combination of distributions~\cite[Lem. 3]{Tomamichel2013}, and the upper bound $|\mathcal{P}_t(\mathcal{X})| \leq (t+1)^{|\mathcal{X}|-1}$ \cite[Lem. 1.1]{Tan2014}, we conclude that \ifthenelse{\boolean{arxiv}}{(see Appendix~\ref{app:conve_meta_converse})}{(see details in \cite[App.~I-B]{Trillingsgaard2015arxiv})}
\begin{align}
 \mathbbm{P}_{\bar Y,\X}^{(k,u)}\mathopen{}\left[\tilde \imath_{k}^{(u)}(\X ; \bar Y_k) \leq \lambda_t\right] \leq \varepsilon_{k,M}^{(u)}\label{eq:conve_final_const}
\end{align}
where $\varepsilon_{k,M}^{(u)} \triangleq \epsilon_k^{(u)} + (\log M)^{-1}$ and $\lambda_t$ is defined in \eqref{eq:conve_lambda_def}. Here,
\begin{align}
  \tilde \imath_{k}^{(u)}(\x;\bar y) \triangleq \imath_k(\x^t ; y^t)+\sum_{i=t+1}^{|\bar y|} \log \frac{W_k(y_{i} | \mathbf{x}_i)}{P_{Y_k}^*(y_{i})}
\end{align}
where $\imath_k(\x^t ; y^t) \triangleq \imath_{P_{\x^t},W_k}(\x^t, y^t)$. Next, we minimize $\pr{\tau_k \leq t | U =u}$ over all stopping times $\tau_k$ satisfying \eqref{eq:conve_final_const}:
 %
 \begin{IEEEeqnarray}{rCL}
   \IEEEeqnarraymulticol{3}{l}{\pr{\tau_k \leq t | U =u}=\mathbbm{P}_{\bar Y,\X}^{(k,u)}\mathopen{}\left[|\bar Y| = t\right]}\nonumber\\
  &=&  \mathbbm{P}_{\bar Y,\X}^{(k,u)}\mathopen{}\left[\tilde \imath_{k}^{(u)}(\X;\bar Y_k)> \lambda_t,|\bar Y| = t\right] \nonumber\\
  &&+ \mathbbm{P}_{\bar Y,\X}^{(k,u)}\mathopen{}\left[\tilde \imath_{k}^{(u)}(\X;\bar Y_k)\leq \lambda_t,|\bar Y| = t\right]\\
  &\leq& \min\Big\{1, \mathbbm{P}_{\bar Y,\X}^{(k,u)}\mathopen{}\left[\tilde \imath_{k}^{(u)}(\X;\bar Y_k)> \lambda_t,|\bar Y| = t\right] + \varepsilon_{k,M}^{(u)}\Big\}\IEEEeqnarraynumspace\label{eq:tau_k_opt}\\
  &\leq& \max_{ \x^t\in\mathcal{X}^t}\pr{\imath_k(\x^t;Y_k^t)> \lambda_t} \nonumber\\
  &&+ \minn{\varepsilon_{k,M}^{(u)},1-\max_{ \x^t\in\mathcal{X}^t}\pr{\imath_k(\x^t;Y_k^t)> \lambda_t}}.\label{eq:conve_sep_decoders_res}
 \end{IEEEeqnarray}
 Here, \eqref{eq:tau_k_opt} follows from \eqref{eq:conve_final_const}.
 %
Since the stopping times $\tau_1$ and $\tau_2$ are conditional independent given $U=u$,  \eqref{eq:conve_sep_decoders_res} implies that
\begin{align}
&\pr{\maxx{\tau_1, \tau_2} \leq t| U=u}= \prod_{k=1}^2 \mathbbm{P}_{\bar Y , \X}^{(k,u)}\mathopen{}\left[|\bar Y_k|=t\right]\\
    &\leq \prod_{k=1}^2 \max_{ \x^t\in\mathcal{X}^t}\left\{\pr{\imath_k(\x^t;Y_k^t)> \lambda_t}\right\} \nonumber\\
  &\quad+ \min_{k}\left\{ \varepsilon_{\bar k,M}^{(u)} +\varepsilon_{k,M}^{(u)}\max_{ \x^t\in\mathcal{X}^t}\pr{\imath_k(\x^t;Y_{\bar k}^t)> \lambda_t}\right\}.\label{eq:conve_maxtau1_tau2_u}
\end{align}
Note that \eqref{eq:conve_maxtau1_tau2_u} holds for all $\tau_k$ that satisfies \eqref{eq:conve_final_const}.
Averaging \eqref{eq:conve_maxtau1_tau2_u} over $u\in\mathcal{U}$ and using the inequality $\sum_{u\in\mathcal{U}}P_U(u) \varepsilon_{k,M}^{(u)}\leq \epsilon + {(\log M)^{-1}} = \varepsilon_M$, we obtain~\eqref{eq:Lt_def}. The proof is concluded using \eqref{eq:conve_Etau1_tau2_in_terms_of_pr_tau1_tau_2}.

\section{Asymptotic Analysis: Converse Bound}
\label{sec:converse_asymptotics}
We analyze $L_t$ in~\eqref{eq:Lt_def} in the limit $l\to\infty$.
By~\eqref{eq:conve_l_lower_bound},
\begin{align}
l \geq \sum_{t=0}^{\infty} (1- L_t)^+  \geq \sum_{t=0}^{\lfloor \beta \rfloor}(1- L_t)^+ \geq \sum_{t=0}^{\lfloor \beta \rfloor}(1- L_t)\label{eq:conve_proof_l_lower_bound_beta}
\end{align}
where $\beta>0$ will be specified shortly.
Let $\lambda\triangleq  \log M - \log \log M - \delta -(|\mathcal{X}|-1)\log(\beta + 1)$. For all $t\leq \beta$,
\begin{IEEEeqnarray}{rCl}
\max_{\x^t \in\mathcal{X}^t}\pr{\imath_k(\x^t;Y_k^t)> \lambda_t} &\leq& \max_{\x^t \in\mathcal{X}^t}\pr{\imath_k(\x^t;Y_k^t)> \lambda}.\IEEEeqnarraynumspace
\end{IEEEeqnarray}
The key step is to establish an asymptotic upper bound on $\max_{\x^t \in\mathcal{X}^t}\pr{\imath_k(\x^t;Y_k^t)> \lambda}$ for every $t\in\mathbb{Z}_+$ as $\lambda \rightarrow \infty$.

Let $\alpha\triangleq\frac{\lambda}{C}-\sqrt{\frac{V\lambda}{C^3}} \log \lambda$ and let $\beta$ be the solution of
\begin{align}
  {(\lambda - \beta C)}/{\sqrt{\beta V }} = -\tilde Q^{-1}(\epsilon)\label{eq:beta_def}
\end{align}
where $C$ is given in \eqref{eq:capacity_def}, $V$ is defined in Theorem~\ref{thm:asymp}, and  $\tilde Q^{-1}(\epsilon)$ in~\eqref{eq:tildeQ_def}.
We divide the asymptotic analysis of $\max_{\x^t \in\mathcal{X}^t}\pr{\imath_k(\x^t;Y_k^t)> \lambda}$ into three cases: the ``large deviations regime" $t\in[0, \alpha)$, where we use Hoeffding's inequality, the ``central regime" $t\in[\alpha, \beta)$, where  Berry-Esseen central limit theorem is applied, and the case $t\geq \beta$, where the trivial upper bound  $\max_{\x^t \in\mathcal{X}^t}\pr{\imath_k(\x^t;Y_k^t)> \lambda}\leq 1$ suffices.

In the first case, invoking Hoeffding's inequality \cite[Th.~2]{Hoeffding1963} and using that $I(P_{\x^t},W_k)$ is upper-bounded by $C$ uniformly, we obtain \ifthenelse{\boolean{arxiv}}{(see Appendix~\ref{app:asymp_conve_hoeffding} for details)}{(see \cite[App.~II-A]{Trillingsgaard2015arxiv})}
\begin{align}
  \sum_{t=0}^{\lfloor \alpha \rfloor} \max_{\x^t \in\mathcal{X}^\infty}\pr{\imath_k(\x^t ; Y_k^t) > \lambda} = o(1), \quad \lambda\rightarrow \infty \label{eq:conve_sum_hoeffding_bound}
\end{align}
and
\begin{IEEEeqnarray}{rCl}
\sum_{t=0}^{\lfloor \alpha \rfloor} \prod_{k=1}^2 \max_{\x^t \in\mathcal{X}^t}\left\{\pr{\imath_k(\x^t ; Y_k^t) > \lambda} \right\}= o(1), \,\, \lambda\rightarrow \infty.\IEEEeqnarraynumspace \label{eq:conve_sum_hoeffding_bound_2}
\end{IEEEeqnarray}

In the central regime, we use the Berry-Esseen central limit theorem \cite[Th.~V.3]{V.V.Petro} to show that
\begin{align}
&\pr{\imath_k(\x^t ; Y_k^t) > \lambda}\leq Q\farg{\frac{\lambda-t I(P_{\x^t},W_k)}{\sqrt{t V(P_{\x^t},W_k)}}}+ \frac{\mathbbm{c}}{\sqrt{t}}.\label{eq:conve_berry}
\end{align}
We next maximize~\eqref{eq:conve_berry} over $\x^t\in\mathcal{X}^t$ following the approach in \cite[Prop. 8]{Tomamichel2013}.
Specifically, we use continuity properties of $I(P, W_k)$ and $V(P , W_k)$ for probability distributions $P\in\mathcal{P}(\mathcal{X})$ close to $P^*$ to show that \ifthenelse{\boolean{arxiv}}{(see Appendix~\ref{app:asymp_conve_berry})}{(see \cite[App. II-B]{Trillingsgaard2015arxiv})}
\begin{align}
    &\sum_{t=\lfloor \alpha \rfloor+1}^{\lfloor \beta \rfloor}\max_{\x^t \in \mathcal{X}^t } \pr{\imath_k(\x^t ; Y_k^t) > \lambda}\nonumber\\
        &\leq \sqrt{\frac{V\lambda}{C^3}}\Big(\tilde Q^{-1}\farg{\epsilon} - \E{\minn{ \tilde Q^{-1}\farg{\epsilon} , \varrho_k Z_k }}\Big) + \mathcal{O}(\log \lambda)\label{eq:conve_sum_berry_esseen_Q}
\end{align}
where $\varrho_k$ are defined in Theorem~\ref{thm:asymp} and $Z_k\sim \mathcal{N}(0,1)$.
Similarly, we obtain
\begin{align}
&\sum_{t=\lfloor \alpha \rfloor+1}^{\lfloor \beta \rfloor} \prod_{k=1}^2 \max_{\x^t \in \mathcal{X}^t}\pr{\imath_k(\x^t ; Y_k^t) > \lambda}\nonumber\\
&\leq   \sqrt{\frac{V\lambda}{C^3}}\left(\tilde Q^{-1}\farg{\epsilon} - \E{\minn{ \tilde Q^{-1}\farg{\epsilon} , \max_k \varrho_k Z_k}} \right) \nonumber\\
& \quad+ \mathcal{O}(\log \lambda).\label{eq:conve_sum_berry_esseen_Q2}
\end{align}
Using \eqref{eq:conve_proof_l_lower_bound_beta}, \eqref{eq:conve_sum_hoeffding_bound}, \eqref{eq:conve_sum_hoeffding_bound_2}, \eqref{eq:conve_sum_berry_esseen_Q}, and \eqref{eq:conve_sum_berry_esseen_Q2}, we obtain
\begin{IEEEeqnarray}{rCl}
  l &\geq& \sum_{t=0}^{\lfloor \beta \rfloor} (1-L_t)\\
    &\geq&  \frac{\lambda(1-\varepsilon_M)}{C} +  \sqrt{\frac{V\lambda}{C^3}} \bigg( \E{ \minn{\tilde Q^{-1}\farg{\epsilon}, \max_{k} \varrho_k Z_k }}\nonumber\\
   &&-\varepsilon_M\bigg( 2\tilde Q^{-1}(\epsilon)-   \min_{k} \E{ \minn{\tilde Q^{-1}\farg{\epsilon} , \varrho_k Z_k }}\bigg) \bigg)
    \nonumber\\
    &&-\mathcal{O}(\log \lambda)\label{eq:conve_int_form}
\end{IEEEeqnarray}
as $\lambda \rightarrow \infty$.
Finally, we have that
\begin{IEEEeqnarray}{rCL}
 \lambda &=&\log M -\log\log M-\delta - (|\mathcal{X}| -1)\log(\beta+1) \\
 &\leq& \frac{C l }{1-\varepsilon_M} \nonumber\\
 &&- \sqrt{\frac{V l}{(1-\varepsilon_M)^3}}\left(\E{\minn{ \tilde Q^{-1}\farg{\epsilon},\max_{k}\varrho_k Z_k} }\right.\nonumber\\
  &&-\left.\varepsilon_M \left(2\tilde Q^{-1}(\epsilon) -\min_{k} \E{\minn{\tilde Q^{-1}\farg{\epsilon},\varrho_k Z_k} }   \right)\right) \nonumber\\
  &&+ \mathcal{O}\farg{\log l}\label{eq:conve_res_before_taylor}
\end{IEEEeqnarray}
as $l\rightarrow \infty$. The final result in~\eqref{eq:asymp_expansion} is obtained through algebraic manipulations.

\section{Asymptotic Analysis: Achievability Bound}
\label{sec:achievability_asymptotics}
Set $P=P^*$, and fix $r\in\mathbb{N}$, $q = \frac{l' \epsilon -1}{ l' - 1}$, and $l'>0$, a parameter that will be related to the average blocklength.
Let the thresholds be chosen as follows:
 \begin{align}
  \gamma \triangleq \gamma_k\triangleq C \left( l' - g(C l') \right).\label{eq:gamma_def}
\end{align}
Here,
\begin{align}
g\farg{x}\triangleq \sqrt{\frac{ V_1+V_2}{2\pi C^2}}\sqrt{ \frac{x}{C}}+b_1 x^{\frac{r+1}{4r+2}} \log x
\end{align}
where $b_1$ will be specified later.
If we choose a code with a number of codewords $\tilde M$ that satisfies
\begin{align}
\log \tilde M &\triangleq  C \left( l' - g(C l') \right) - \log l'
\end{align}
we have $(\tilde M-1)\exp\left\{-\gamma\right\} \leq {1}/{l'}$.
Furthermore, by Remark~\ref{rem:prob_error}, the average probability of error is upper-bounded by
\begin{align}
&  q+(1-q)(\tilde M-1)\exp\left\{-\gamma_{k}\right\}  \nonumber\\
&\qquad \leq \frac{l' \epsilon -1}{ l' - 1} + \frac{l'(1-\epsilon) }{l'-1} \frac{1}{l'} = \epsilon.
\end{align}
Suppose it can be shown that
\begin{align}
  \E{\maxx{\tau_1,\tau_2}} \leq l'\label{eq:Emaxtau_U0}
\end{align}
for sufficiently large $l'$. Then the average blocklength is
\begin{align}
(1-q)\E{\maxx{\tau_1,\tau_2} }\leq  \frac{l'(1-\epsilon) }{l'-1}l' \triangleq l.
\end{align}
Consequently, by Theorem~\ref{thm:simple_achiev}, there exists an $(l, M, \epsilon)$-VLSF code with
\begin{align}
  \log M &\geq \log \tilde M \\
  & = C \left( l' - g(C l') \right) - \log l'\\
  &=\frac{C l}{1-\epsilon} - \sqrt{\frac{V_1+V_2}{2\pi(1-\epsilon)}} \sqrt{l}  - \mathcal{O}(l^{\frac{r+1}{4r+2}} \log l)
\end{align}
where the last step follows because
\begin{align}
  l = \frac{(l')^2 (1-\epsilon)}{l'-1} = l' (1-\epsilon) + o(1).
\end{align}

To establish \eqref{eq:Emaxtau_U0}, we proceed as follows. Let $W_n = \imath_{P, W_1}(X_n ; Y_{1,n})$ and $Z_n = \imath_{P,W_2}(X_n ; Y_{2,n})$. We can then upper-bound $\E{\maxx{\tau_1,\tau_2}}$ using the following lemma, \ifthenelse{\boolean{arxiv}}{which is proved in Appendix~\ref{app:two_dim}.}{which is proved using asymptotic results for random walks \cite{Gut2009} and a Berry-Esseen-type theorem that holds for random summations (see proof in \cite[App.~III]{Trillingsgaard2015arxiv}).}
\begin{lemma}
\label{lem:two_dim}
Let $\{W_n\}$ and $\{Z_n\}$, $n\geq 1$, be i.i.d. discrete RVs with $(W_1,Z_1)\sim P_{W,Z}$, positive mean $\mu_W\triangleq\E{W_1}$ and $\mu_Z\triangleq\E{Z_1}$, respectively, and finite moments of order $r\geq 3$, i.e., $\E{|W_1|^r}< \infty$, and $\E{|Z_1|^r}< \infty$. Define the random walks $U_n \triangleq \sum_{i=1}^n W_i$ and $V_n \triangleq \sum_{i=1}^n Z_i$, and the stopping times $\tau_1 \triangleq \inff{n \geq 0: U_n \geq \gamma}$ and $\tau_2 \triangleq \inff{n \geq 0: V_n \geq \gamma}$ for every $\gamma \in\mathbb{R}$.
Then
  \begin{align}
   \E{\maxx{\tau_1, \tau_2}} &\leq \frac{\gamma}{\minn{\mu_W,\mu_Z}}+ \frac{\sigma }{\sqrt{2\pi}}\sqrt{\frac{\gamma}{\mu_W}}\indi{\mu_W=\mu_Z}\nonumber\\
   &\quad+\mathcal{O}\farg{\gamma^{\frac{r+1}{4r+2}}\log \gamma}\label{eq:Etau_upper1}
  \end{align}
  as  $\gamma\rightarrow \infty$,   where $\sigma^2 \triangleq \Va{\frac{W_1}{\mu_W}-\frac{Z_1}{\mu_Z}}$.
\end{lemma}
\vspace*{0.5mm}

Lemma~\ref{lem:two_dim} implies that there exists a constant $b_1$ such that
\begin{align}
 \E{\maxx{\tau_1(\gamma), \tau_2(\gamma) }} &\leq \frac{\gamma}{C}+g(\gamma)\label{eq:asymp_proof_Emax2}
\end{align}
for sufficiently large $\gamma$.
The conditional average blocklength of the VLSF code can be bounded as follows
\begin{align}
  &\E{\maxx{\tau_1,\tau_2}} = \E{\maxx{\tau_1(\gamma),\tau_2(\gamma)}}\\
  &\leq \frac{\gamma}{C}+g(\gamma)\label{eq:asymp_Emax_final1}  \\
    &=l' -  g(C l') + g(C l'- C g(C l')) \leq l'.\label{eq:asymp_Emax_final2}
\end{align}
Here, \eqref{eq:asymp_Emax_final1} holds by \eqref{eq:asymp_proof_Emax2}, and \eqref{eq:asymp_Emax_final2} follows by the definition of $\gamma$ in \eqref{eq:gamma_def} and the fact that $g(x)$ is nonnegative and nondecreasing.

\bibliographystyle{IEEEtran}

redpajama_set_name: RedPajamaArXiv


text:
the Philippians
Buy their debut album "Goodnite Life."
You are currently browsing the monthly archive for August 2006.
Promo Uno
August 7, 2006 in Brake Records, Cory Nitta, Goodnite Life, Zak Mering | Leave a comment
Brake Records Releases Philippians Debut CD, Goodnite Life
First offering delivers a blend of organic and electronic elements with broad appeal
Los Angeles, Calif., August 6, 2006 Brake Records is proud to announce the release of the Philippians debut CD, Goodnite Life. The genre-defying electronic production marks the first release for both the bandcomprised of California natives Cory Nitta and Zak Mering and the label, headed by Ean Sumner.
The Philippians bring a new dimension to todays electronic music scene by applying their distinctive computer-based production techniques to organic sounds. GoodniteLife incorporates soaring vocals, dynamic acoustic performances, electronic elements and esoteric samples culled from everyday Los Angeles life. Inspired by a city that provides a hint of promise on the razors edge of despair, the Philippians coax heartwarming, uplifting melodies from their assortment of cutting-edge music creation tools.
The Philippians embody the new generation of musicians who take on production responsibilities in addition to songwriting and playing instruments. Nitta and Mering recorded the entire album on their PC, with the help of advanced yet affordable tools by companies like M-Audio and Ableton. Mering begins by sampling the sounds of his environment in high resolution via the M-Audio MicroTrack 24/96 and then arranging the sounds in Ableton Live. Nitta then layers his own vocals and performances on acoustic instruments including hammer dulcimer, harp, keys, guitar, bass and drums with orchestral sounds from libraries. The Philippians have something new to offer todays electronic music landscape, says Ean Sumner, founder and CEO of Brake Records. In addition to effectively melding the electronic with the organic, the Philippians deliver a unique message of hope thats notably absent in most music created in this town. The Philippians have taken the dark and mysterious elements of Los Angeles and twisted them into a story of beauty in the midst of survival and chronic depression. The music expresses the great enchantment of art and creation for arts sake, while maintaining a wide appeal.
Beyond creating something that sounds unique in terms of fresh production, we want our melodies to communicate a very specific message, explains Nitta. When someone listens to our music, we want them to feel uplifted and reassured, like theyre floating up to heaven or falling in love. To accomplish this, we use real, organic instruments in a way that will speak to everyonefrom ardent electronica fans to techno neophytes. Goodnite Life is currently available at http://www.philippiansmusic.com.
About the Philippians The Philippians came together in 2004, after Cory Nitta and Zak Mering were introduced by mutual friends while living in San Diego. The two passionate electronic musicians instantly saw the potential to collaborate, though their official partnership didnt begin until they had both relocated to Los Angeles. Living in a small Hollywood apartment, they started making music around the clock. Hailing from Ridgecrest, Calif., Nitta cites his mother as the primary impetus for his lifelong pursuit of music. Influenced by her love of the harp and guitar, Nitta started with the piano and quickly moved on to the guitar, bass and harp. After playing in a variety of local bands, Nitta left
Ridgecrest in pursuit of broader opportunities to produce and perform music. Born in Los Angeles to a family of musicians, Mering landed briefly in Northern California before relocating to the East Coast. As a teenager living outside Philadelphia, Mering developed an appreciation for Madlib, Prefuse 73, Daedelus and a variety of underground hip hop artists, which ultimately compelled him to start creating on his own computer-based music. After graduating from high school, Mering moved back to California to start a career in music.
About Brake Records Founded by Ean Sumner and associates in January 2006, Brake Records is a Los Angeles-based record company dedicated to producing, promoting and distributing experimental music. The company also provides in-house management to its artist roster. Shortly after its inception, Brake Records tapped the Philippians as the labels first release.
Brake Records
Cory Nitta
Goodnite Life
Zak Mering
Brake Records LLC
Daedelus Music
Eco Mall
EM Design Company
Music for Robots
Philippians' Myspace
Pink Enemy
Skyrock Entertainment
The Philippians Official Website
Samplers for the Music FEST
She Will Return Video
CD Baby Review
Music for Robots Review
Jay Roach on Samplers for the Music FE…
Myster-E on She Will Return Video
Julio Andres on Music for Robots Review

redpajama_set_name: RedPajamaCommonCrawl


As of r15048, the native systray implementation is disabled, we use the statusicon based on, which works well enough in most cases.
systray-ctypes-guid.patch (12.2 KB) - added by Antoine Martin 2 years ago.
systray-ctypes-guid-v2.patch (14.1 KB) - added by Antoine Martin 2 years ago.
Mostly a FYI: launch vlc and its system tray should appear as before.
We supply a unique GUID, so users can configure "tray and notifications" to be enabled / disabled, and those settings will now stick, no matter what version of xpra is installed (64-bit vs 32-bit, launched from gui or not, etc).
This is long overdue for closure - I haven't seen any issues with tray icons (Steam/VLC/Chrome sometimes) in the last few months despite reasonable amounts of usage. Closing.


text:
SHORE ACCESS
R.I. report draws a new line in the sand: the recognizable high tide line
The 12-member House panel offered clearer guidelines for public access to the Rhode Island shore, mirroring legislation introduced recently by the panel's co-chairs
By Brian Amaral and Alexa Gagosz Globe Staff,Updated April 4, 2022, 10:26 a.m.
Property owners erect fences and post signs marking their territory on Charlestown Town Beach in Rhode Island.Lane Turner/Globe Staff
PROVIDENCE — A 12-member House panel studying shoreline rights in Rhode Island published its report on the topic after meeting for the final time Thursday.
The report, dated Thursday and uploaded online for the public Monday, includes a historic photo of an ox cart collecting seaweed on the beach in Little Compton 100 years ago, as well as a scientific diagram showing the problems with current practices surrounding shore access.
To solve that, the report recommends the state adopt a new boundary line for access: the "recognizable high tide line."
That mirrors the legislation that was recently introduced by the commission's co-chairs, state Representatives Terri Cortvriend and Blake Filippi, which is up for a hearing in the House Judiciary Committee Tuesday. The recognizable high tide line, as the bill describes it, would fix the boundary for people to exercise their shore rights and privileges at a line 10 feet landward from the wrack line. The wrack line is the visible mark on the sand left by the high tide, identifiable by debris like seaweed. That has historic precedent, the report says: 10 feet is wide enough to bring one of those ox carts down to the shore to collect seaweed.
"This historical seaweed boundary is visible, is easily determined by the public, private property owners, and law enforcement, and it ensures the public can safely exercise their rights and privileges of the shore," the report said.
The legislation would effectively do away with the "mean high tide line," at least as the boundary for people to exercise their rights. That line comes from a 1982 state Supreme Court court case called State v. Ibbison. It's been controversial ever since.
The 12-member expert panel, which included real estate interests, lawyers and environmental advocates, was convinced that the mean high tide line was an inappropriate boundary: It isn't a visible mark on the sand, but a measurement taken over a nearly 20-year cycle. The current data is from 1983 to 2001. And while the line itself doesn't change – it's the average of high water heights – the place it lands on a dynamic and shifting beach does. The line also provides much less access than people think, scientists from the URI Coastal Institute told the commission at a meeting in October.
Some shore access advocates say that not only was the Ibbison decision bad, but it was effectively overturned by a 1986 state constitutional amendment. Rhode Islanders have had some form of access to the shore since the state's royal charter, but in 1986, the state got specific, saying people had rights including but not limited to passage along the shore, leaving the shore to swim, fishing and collecting seaweed. How can you collect seaweed or pass along the shore, some argue, if the state is using a line that's underwater the majority of the day on some beaches?
Nevertheless, shore towns, state regulators (reluctantly) and private property owners (enthusiastically) still often point to the mean high tide line. The recently introduced legislation would do away with that as a boundary for access rights; using the "recognizable high tide line" instead would represent an expansion of access purely by square footage over using the mean high tide line. One study found that the mean high tide line was an average of 19 to 20 meters closer to the sea than the last high tide swash line on a Rhode Island beach. It would represent an expansion in principle over the mean high tide line, too, because it would guarantee some form of shore access at all points of a typical non-stormy day.
But to people who favor access, the legislation wouldn't be an "expansion" of anything. It would simply be a restoration and a guarantee of a right that's been there all along, sometimes thwarted by property owners and a faulty court decision. While property owners have threatened to sue over a taking of private property, the only thing that's been taken is Rhode Islanders' constitutional rights for the past 40-odd years. The commission, in not so many words, agreed.
"A consensus from Commission members was reached (with the Rhode island Attorney General's Office abstaining), on restoring and using the historical seaweed line with a reasonable buffer zone landward of 10 feet," the report says. "A buffer zone of 10 feet landward uses the historical ox cart width example and also accommodates testimony received of two people walking safely, above the seaweed line, along the shore side by side approaching another two people walking towards them."
The report made other recommendations after this "redefinition of the Rhode Island shore to its historic limits": Among other steps, the state should try to identify funding for the Coastal Resources Management Council and Department of Environmental Management to support shore access, law enforcement and education; work with the attorney general to enforce illegal shore signage; and boost CRMC's ability to designate access points to the shore.
Brian Amaral can be reached at brian.amaral@globe.com. Follow him on Twitter @bamaral44. Alexa Gagosz can be reached at alexa.gagosz@globe.com. Follow her on Twitter @alexagagosz and on Instagram @AlexaGagosz.


ORLive Presents: University Health Network and Toronto General Hospital Present a Live Mitral Valve Repair Webcast With Tirone David, M.D.
TORONTO -- (MARKET WIRE) -- May 23, 2007 -- University Health Network's Division of Cardiovascular Surgery announced today that at 1 PM EDT (17:00 UTC) on June 4, 2007, Dr. Tirone David will conduct a live surgical webcast on www.OR-Live.com. Tirone E. David, O.C., O.Ont., M.D., F.R.C.S.(C), is the Head of the Division of Cardiovascular Surgery at the Peter Munk Cardiac Program, Toronto General Hospital, University Health Network (UHN). Dr. David has performed more than 1,500 valve repairs, and he was one of the first surgeons to introduce modern techniques of mitral valve repair in North America back in 1980. In 1993, he received the Order of Ontario, and in 1996 he was appointed as an Officer of the Order of Canada, Canada's highest civilian honor, for his "techniques in open-heart surgery and heart transplantation." Dr. David joined the academic staff of the University of Toronto and Toronto General Hospital in 1978. He was elected University Professor in 2004, the highest honor bestowed to professors at the University of Toronto.
Established surgeons from around the world visit the Peter Munk Cardiac Program to learn more about the way they care for their patients. In addition, that center publishes numerous research reports each year. This adds to the professional knowledge and skill of fellow cardiac surgeons and helps to improve the treatment of all cardiac patients.
University Health Network is home to one of the largest Cardiovascular Surgery Centres in Canada. The Peter Munk Cardiac Program surgeons perform more than 2,000 operations per year. Their combined skill and expertise allows UHN to offer comprehensive innovative treatments for patients with complex heart conditions. These innovative techniques and treatments continue to generate the best clinical results for patients.
Approximately 75,000 patients require some form of mitral valve repair each year. An additional 90,000 patients worldwide have mitral valves that cannot be repaired and ultimately are entirely replaced with prosthetic technology, composed of a metal or mechanical valve or using treated tissue such as porcine valves for implantation.
In 2005, Dr. Tirone David, working with engineers from Medtronic, designed the Simplici-T® Annuloplasty System for use in mitral and tricuspid valve repair surgery to help restore the leaking valve opening to a more-normal shape. "The Simplici-T band restores proper valve coaptation and improves valve function after repair."


text:
Retail/Office Representation
Bank Representation
Land Sales, Acquisitions and Development
Multi-Family, Industrial, and Flex Property Representation
Property Tax Analysis/Appraisals
Future Investment Opportunities
Property Repositioning
Exclusive Sales
Exclusive Rentals
Development in the town of East Fishkill as The Former IBM West campus is sold
Situated in the town of East Fishkill, the former IBM West/Bright solar campus spanning a massive 123½ acre of land with 3 flex buildings and 70 acres of development land has been sold to RWHPA LLC, a beacon based development company in a deal…
https://secureservercdn.net/198.71.233.109/unk.062.myftpupload.com/wp-content/uploads/2018/06/Camus-3.jpg?time=1574724935 917 1275 mmcgrat1 https://www.mcgrathrealtyinc.com/wp-content/uploads/2017/08/mrilogo2.png mmcgrat12018-06-19 02:50:402018-09-05 17:55:23Development in the town of East Fishkill as The Former IBM West campus is sold
Real Estate News & Blog
Email: rmcgrath@mcgrathrealtyinc.com
© 2019 - McGrath Realty, Inc.


text:
module Spec
  module Support
    module OpsUserHelper
      def new_user_edit(data = {})
        controller.rbac_user_add # set up @edit for new user

        edit = controller.instance_variable_get(:@edit)
        edit[:new] = data
        controller.instance_variable_set(:@edit, edit)
      end

      def existing_user_edit(user, data = {})
        controller.params = {:typ    => nil,
                             :button => nil,
                             :id     => user.id}
        controller.rbac_user_edit # set up @edit for the user

        edit = controller.instance_variable_get(:@edit)
        edit[:new] ||= {}
        edit[:new].merge!(data)
        controller.instance_variable_set(:@edit, edit)
      end
    end
  end
end

redpajama_set_name: RedPajamaGithub


text:
Q: C# A better way to validate fields. (Linq to SQL) Im still trying to learn the C# programming language and have been using Visual Studio 2010 IDE.
I am making a Payroll program and for my Payroll Period module, I have 2 files under Payroll.DLL; IEmployerPeriodService.cs (interface) and EmployerPeriodService.cs.
The code (IEmployerPeriodService.cs):
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Payroll.DAL;

namespace Payroll.BLL
{
    public interface IEmployerPeriodService
    {
        IEnumerable<EmployerPeriod> GetAllEmployerPeriods();

        EmployerPeriod GetEmployerPeriod(string code);

        void AddEmployerPeriod(EmployerPeriod employerPeriod);

        void AddEmployerPeriod(EmployerPeriod employerPeriod, string taxYear, string dayHours, string weekDays, string weekHours, string monthDays, string monthHours, string fortnightDays, string fortnightHours, string weeksInMonth, string numberOfFortnights);

        void UpdateEmployerPeriod(EmployerPeriod employerPeriod);

        void UpdateEmployerPeriod(EmployerPeriod employerPeriod, string taxYear, string dayHours, string weekDays, string weekHours, string monthDays, string monthHours, string fortnightDays, string fortnightHours, string weeksInMonth, string numberOfFortnights);

        void DeleteEmployerPeriod(EmployerPeriod employerPeriod);

        string GenerateSAPCode();
    }
}

The code (EmployerPeriodService.cs):
using System;
using System.Collections.Generic;
using System.Linq;
using Payroll.DAL;
using Payroll.Util.Extensions;
using Payroll.Util.Helpers;

namespace Payroll.BLL
{
    public class EmployerPeriodService : IEmployerPeriodService
    {
        private readonly IEmployerPeriodRepository _employerPeriodRepository;

        public EmployerPeriodService(
            IEmployerPeriodRepository employerPeriodRepository)
        {
            Guard.AgainstNullParameter(employerPeriodRepository, "employerPeriodRepository");

            _employerPeriodRepository = employerPeriodRepository;
        }

        public IEnumerable<EmployerPeriod> GetAllEmployerPeriods()
        {
            return _employerPeriodRepository.SelectAll();
        }

        public EmployerPeriod GetEmployerPeriod(string code)
        {
            var rulesException = new RulesException<EmployerPeriod>();

            // Business rule: Answer Id cannot be less than 1
            if (!code.HasValue())
                rulesException.ErrorFor(x => x.Code, "Code cannot be null");

            if (rulesException.Errors.Any()) throw rulesException;

            return _employerPeriodRepository.GetEntity(code);
        }

        public void AddEmployerPeriod(EmployerPeriod employerPeriod)
        {
            // Business rule: 0
            var errors = DataAnnotationsValidationRunner.GetErrors(employerPeriod);

            var rulesException = new RulesException();

            rulesException.ErrorsForModel(errors);

            // Other validation rules

            if (rulesException.Errors.Any()) throw rulesException;

            // Save to database
            _employerPeriodRepository.Insert(employerPeriod);
        }

        public void AddEmployerPeriod(EmployerPeriod employerPeriod, string taxYear, string dayHours, string weekDays, string weekHours, string monthDays, string monthHours, string fortnightDays, string fortnightHours, string weeksInMonth, string numberOfFortnights)
        {
            var rulesException = new RulesException<EmployerPeriod>();

            var tYear = default(short);

            if (!short.TryParse(taxYear, out tYear))
                rulesException.ErrorFor(x => x.U_Tax_year, "The Tax Year field is not in the correct format");
            else employerPeriod.U_Tax_year = tYear;

            var dHours = default(short);

            if (!short.TryParse(dayHours, out dHours))
                rulesException.ErrorFor(x => x.U_Day_hrs, "The Number of Hours in a Day field is not in the correct format");
            else employerPeriod.U_Day_hrs = dHours;

            var wDays = default(short);

            if (!short.TryParse(weekDays, out wDays))
                rulesException.ErrorFor(x => x.U_Week_days, "The Number of Days in a Week field is not in the correct format");
            else employerPeriod.U_Week_days = wDays;

            var wHours = default(short);

            if (!short.TryParse(weekHours, out wHours))
                rulesException.ErrorFor(x => x.U_Week_hrs, "The Number of Hours in a Week field is not in the correct format");
            else employerPeriod.U_Week_hrs = wHours;

            var mDays = default(short);

            if (!short.TryParse(monthDays, out mDays))
                rulesException.ErrorFor(x => x.U_Month_days, "The Number of Days in a Month field is not in the correct format");
            else employerPeriod.U_Month_days = mDays;

            var mHours = default(short);

            if (!short.TryParse(monthHours, out mHours))
                rulesException.ErrorFor(x => x.U_Month_hrs, "The Number of Hours in a Month field is not in the correct format");
            else employerPeriod.U_Month_hrs = mHours;

            var fnDays = default(short);

            if (!short.TryParse(fortnightDays, out fnDays))
                rulesException.ErrorFor(x => x.U_Fortnight_days, "The Number of Days in a Fortnight field is not in the correct format");
            else employerPeriod.U_Fortnight_days = fnDays;

            var fnHours = default(short);

            if (!short.TryParse(fortnightHours, out fnHours))
                rulesException.ErrorFor(x => x.U_Fortnight_hrs, "The Number of Hours in a Fortnight field is not in the correct format");
            else employerPeriod.U_Fortnight_hrs = fnHours;

            var wInMonth = default(short);

            if (!short.TryParse(weeksInMonth, out wInMonth))
                rulesException.ErrorFor(x => x.U_Weeks_in_month, "The Number of Weeks in a Month field is not in the correct format");
            else employerPeriod.U_Weeks_in_month = wInMonth;

            var nOfFn = default(short);

            if (!short.TryParse(numberOfFortnights, out nOfFn))
                rulesException.ErrorFor(x => x.U_No_of_Fortnights, "The Number of Fortnights in a Month field is not in the correct format");
            else employerPeriod.U_No_of_Fortnights = nOfFn;

            if (rulesException.Errors.Any()) throw rulesException;

            AddEmployerPeriod(employerPeriod);
        }

        public void UpdateEmployerPeriod(EmployerPeriod employerPeriod)
        {
            // Business rule: 0
            var errors = DataAnnotationsValidationRunner.GetErrors(employerPeriod);

            var rulesException = new RulesException();

            rulesException.ErrorsForModel(errors);

            // Other validation rules

            if (rulesException.Errors.Any()) throw rulesException;

            // Save to database
            _employerPeriodRepository.Update(employerPeriod);
        }

        public void UpdateEmployerPeriod(EmployerPeriod employerPeriod, string taxYear, string dayHours, string weekDays, string weekHours, string monthDays, string monthHours, string fortnightDays, string fortnightHours, string weeksInMonth, string numberOfFortnights)
        {
            var rulesException = new RulesException<EmployerPeriod>();

            var tYear = default(short);

            if (!short.TryParse(taxYear, out tYear))
                rulesException.ErrorFor(x => x.U_Tax_year, "The Tax Year field is not in the correct format");
            else employerPeriod.U_Tax_year = tYear;

            var dHours = default(short);

            if (!short.TryParse(dayHours, out dHours))
                rulesException.ErrorFor(x => x.U_Day_hrs, "The Number of Hours in a Day field is not in the correct format");
            else employerPeriod.U_Day_hrs = dHours;

            var wDays = default(short);

            if (!short.TryParse(weekDays, out wDays))
                rulesException.ErrorFor(x => x.U_Week_days, "The Number of Days in a Week field is not in the correct format");
            else employerPeriod.U_Week_days = wDays;

            var wHours = default(short);

            if (!short.TryParse(weekHours, out wHours))
                rulesException.ErrorFor(x => x.U_Week_hrs, "The Number of Hours in a Week field is not in the correct format");
            else employerPeriod.U_Week_hrs = wHours;

            var mDays = default(short);

            if (!short.TryParse(monthDays, out mDays))
                rulesException.ErrorFor(x => x.U_Month_days, "The Number of Days in a Month field is not in the correct format");
            else employerPeriod.U_Month_days = mDays;

            var mHours = default(short);

            if (!short.TryParse(monthHours, out mHours))
                rulesException.ErrorFor(x => x.U_Month_hrs, "The Number of Hours in a Month field is not in the correct format");
            else employerPeriod.U_Month_hrs = mHours;

            var fnDays = default(short);

            if (!short.TryParse(fortnightDays, out fnDays))
                rulesException.ErrorFor(x => x.U_Fortnight_days, "The Number of Days in a Fortnight field is not in the correct format");
            else employerPeriod.U_Fortnight_days = fnDays;

            var fnHours = default(short);

            if (!short.TryParse(fortnightHours, out fnHours))
                rulesException.ErrorFor(x => x.U_Fortnight_hrs, "The Number of Hours in a Fortnight field is not in the correct format");
            else employerPeriod.U_Fortnight_hrs = fnHours;

            var wInMonth = default(short);

            if (!short.TryParse(weeksInMonth, out wInMonth))
                rulesException.ErrorFor(x => x.U_Weeks_in_month, "The Number of Weeks in a Month field is not in the correct format");
            else employerPeriod.U_Weeks_in_month = wInMonth;

            var nOfFn = default(short);

            if (!short.TryParse(numberOfFortnights, out nOfFn))
                rulesException.ErrorFor(x => x.U_No_of_Fortnights, "The Number of Fortnights in a Month field is not in the correct format");
            else employerPeriod.U_No_of_Fortnights = nOfFn;

            if (rulesException.Errors.Any()) throw rulesException;

            UpdateEmployerPeriod(employerPeriod);
        }

        public void DeleteEmployerPeriod(EmployerPeriod employerPeriod)
        {
            var bm = GetEmployerPeriod(employerPeriod.Code);

            if (bm != null)
            {
                // Delete from database
                _employerPeriodRepository.Delete(bm);
            }
        }

        public string GenerateSAPCode()
        {
            var result = default(long);

            var codesList = from b in GetAllEmployerPeriods()
                            select new { Code = long.Parse(b.Code) };

            codesList = codesList.OrderBy(x => x.Code);

            var lastRecord = codesList.LastOrDefault();

            if (lastRecord != null)
                result = lastRecord.Code + 1;

            return result.ToString();
        }
    }
}

The Code (PayRollPeriodForm.cs):
This the code behind the form
private void btn_add_Click(object sender, EventArgs e)
        {
            try
            {
                // Get service instance
                var employerPeriodService = Program.Kernel.Get<IEmployerPeriodService>();

                // Get new code
                var newCode = employerPeriodService.GenerateSAPCode();

                // Create object
                var employerPeriodAdd =
                    new EmployerPeriod
                    {
                        Code = newCode,
                        Name = newCode,
                        U_Starting_period = dateTimePicker1.Value,
                        U_Ending_period = dateTimePicker2.Value,
                    };

                // Save record
                employerPeriodService.AddEmployerPeriod(
                    employerPeriodAdd,
                    cb_tax_year.Text,
                    cb_number_hours.Text,
                    cb_number_days_week.Text,
                    txt_number_hours_week.Text,
                    cb_number_days_month.Text,
                    txt_number_hours_month.Text,
                    cb_number_days_fortnight.Text,
                    txt_number_hours_fortnight.Text,
                    cb_avg_weeks_month.Text,
                    cb_avg_fortnights_month.Text);

                MessageBox.Show("Employer Payroll Period Added Successfully. Intake Ref: " + newCode.ToString(), "", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);

                //clear textfields after input
                cb_tax_year.Text = null;
                cb_number_hours.Text = null;
                cb_number_days_week.Text = null;
                txt_number_hours_week.Text = "";
                cb_number_days_month.Text = null;
                txt_number_hours_month.Text = "";
                cb_number_days_fortnight.Text = null;
                txt_number_hours_fortnight.Text = "";
                cb_avg_weeks_month.Text = null;
                cb_avg_fortnights_month.Text = null;
                dateTimePicker1.Text = null;
                dateTimePicker2.Text = null;

                btn_add.Enabled = false;
            }
            catch (RulesException ex)
            {
                MessageBox.Show(ex.GetErrorMessages(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            }
        }

Is there a better way to validate the fields that I have in the overloaded method of AddEmployerPeriod. I have a table with more than 30 fields and I was thinking there has to be a better way to validate the fields.
I also want to use something similar for updating(editing) details.
the code for editing is:
private void btn_update_Click(object sender, EventArgs e)
        {
            try
            {
                // Get service instance
                var employerPeriodService = Program.Kernel.Get<IEmployerPeriodService>();

                // Get record
                var employerPeriodUpdate = employerPeriodService.GetEmployerPeriod(SAPCodePeriod);

                if (employerPeriodUpdate != null)
                {
                    // Update record

                    employerPeriodUpdate.U_Tax_year = short.Parse(cb_tax_year.Text);
                    employerPeriodUpdate.U_Day_hrs = short.Parse(cb_number_hours.Text);
                    employerPeriodUpdate.U_Week_days = short.Parse(cb_number_days_week.Text);
                    employerPeriodUpdate.U_Week_hrs = short.Parse(txt_number_hours_week.Text);
                    employerPeriodUpdate.U_Month_days = short.Parse(cb_number_days_month.Text);
                    employerPeriodUpdate.U_Month_hrs = short.Parse(txt_number_hours_month.Text);
                    employerPeriodUpdate.U_Fortnight_days = short.Parse(cb_number_days_fortnight.Text);
                    employerPeriodUpdate.U_Fortnight_hrs = short.Parse(txt_number_hours_fortnight.Text);
                    employerPeriodUpdate.U_Weeks_in_month = short.Parse(cb_avg_weeks_month.Text);
                    employerPeriodUpdate.U_No_of_Fortnights = short.Parse(cb_avg_fortnights_month.Text);
                    employerPeriodUpdate.U_Starting_period = dateTimePicker1.Value;
                    employerPeriodUpdate.U_Ending_period = dateTimePicker2.Value;

                    // Save record
                   //employerPeriodService.UpdateEmployerPeriod(employerPeriodUpdate);

                    MessageBox.Show("Tax Year Details Edited Successfully");
                }
            }
            catch (RulesException ex)
            {
                MessageBox.Show(ex.GetErrorMessages(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            }
        }

Do I use something similar to my add overload method? I hope my questions are clear enough.

A: There are many libraries that can handle this kind of validation, and you can always build a custom validation framework.
The library that i am using is the enterprise library validation application block. You can create validators in your views under the controls that need validating and write the validation rules in your model class (EmployerPeriod in your case) by adding attributes to the properties that need validating.

redpajama_set_name: RedPajamaStackExchange


text:
L'ÉCONOMIE SAUVAGE
Soyez curieux
jpdumas007
Angela Merkel was not a visionary, but she allowed her country to be a giant within Europe
Jean-Pierre Dumas
Certainly, Angela-Merkel-is-no-saint, nor a visionary as said by M. Frank, she did not create the German Empire as Bismarck (in 1870 in Versailles), she did not participate to the reunification of Germany (1980) and was not responsible for the creation of the euro (1992) as H. Kohl.
Her legacy is not that she has passed the first minimum wage in Germany (which is good for a country like France, which has a very high minimum wage (SMIC) which is compulsory and source of structural unemployment. Her legacy is not that she promoted marriage equality (which is the result of the strength of public opinion, it is good (for leftists) and bad (for bigots), it is in the wind of change, it is unavoidable.
Why did A. Merkel stand out in her 16-year reign? Because of reasons not seen by the author you mention, M. Frank. A lucid analyst must always look at what is not mentioned by a polemist ("What is important is not what is said but what is not said," Freud).
She has continued the path mapped by her predecessor, respect of rules with flexibility, she was able to weather crisis with flexibility and strength.
Merkel is, in my view, a conservative, aware of the limit of the power of a leader (chef d'État). In France (I compare both countries because of their geographical and historic links), too often the discourse replace actions. A brilliant speech will not change anything. In France everybody speaks about reforms, but few are implemented. Ms. Merkel deceives because as a good conservative she knows the limit of power, so she does not promise anything she cannot implement. This is the opposite in France, a country with a legacy of a powerful king ("le pouvoir c'est moi" "I am the power", Louis XIV) but in fact, this presidential power (higher in the French Constitution than the US President) is limited by the power of the street, this is not the case in Germany, where there is a political and economic consensus. Ms. Merkel knows the limit of power, she is not brilliant (as Macron), she is not outspoken (as Sarkozy), perhaps she is not a fashion model (Karl Lagerfeld was not happy with her attire!) but she runs the most powerful European country, and she maintains it. True she is a specialist in compromises which are the essence of Nordic countries and German coalition. Compromise is not the main quality in France (look at "gilet jaune"). She is not looking for an overextended role in the world scene, this is not the case of France. Some (bad people) use to say that the French travel in first class with a third-class ticket.
Now let's have a look at German and French performance (the economy is not the strength of Mr. Frank). Germany during Merkel's time has maintained her public finance in order (this is not the case of the US and France), it has integrated one million refugees without major disruptions, the economy is functioning rather well with full employment. The new Government will have to address some weaknesses not considered by Merkel.
1 Economic growth has been higher for Germany than France
Figure 1 Germany GDP per capita (PPP) has increased twice as fast in Germany as in France
Source: International Monetary Fund, World Economic Outlook Database, April 2021
2 The economic growth engine of Germany is based on exports
Figure 2 Germany has an external surplus during the whole Merkel's period
Euro has served well Germany (but also the German efficiency and the quality of its products).
The German manufacturing sector accounts for about 20% of Germany's GDP (it is 10% for France). Cars make up the biggest part of it.
Since 2016, China has been Germany's biggest trading partner. There is a fear that Germany could become too reliant on the Chinese market.
Germany needs gas from Russia (Nord Stream 2) to substitute for its loss of coal and nuclear station in its transition period to renewables. It needs graphite and metals such as cobalt and lithium from China to power its auto industry's EV makeover. China is a large market for German cars. The German economy is in these ways dependent on cooperation with the two most dangerous and powerful authoritarian regimes in the world. This represents a serious security challenge for the US-German and EU-German political cohesion and security cooperation. How the new German government handles this conundrum could well determine the future diplomatic relations of the EU.
The Merkel's Governments regarded China as a strategic partner. Will the new one consider human rights consideration?
It is unlikely that in the future Germany will continue to run a continuous export boom to China.
Figure 3 Germany is exporting mainly to China
Source : FT: The Merkel era in charts, Sept. 20, 2021
Germany does not have an important industry in digitalization. The next German generation will have to consider some diversification of German car industry to other sectors such as digitalization.
3 Whatever Keynesians think, Germany is, thanks to its conservative fiscal policy, a credible country this is not the case of France
On the fiscal front, opinions differ, some think that Germany should make more deficit because its investments are weak and its external balance too high, this is true.
Figure 4 As a matter of facts, Germany has followed a Keynesian economic policy, it has made fiscal deficits during negative growth (recession) and has made surplus in normal time, this is not the case of France (permanent deficit).
4 The result of this prudent policy is that the public debt ratio was identical in 2005 for France and Germany, this year it reaches 115% of GDP for France and 70% for Germany
This will allow Germany to invest more and to run a moderate fiscal deficit, Germany has fiscal space, not France.
Figure 5 France and Germany have the same debt ratio in 2005, the debt ratio will be 115% of GDP in 2021 in France against 70% in Germany
Germany is a country run by a conservative leader without imagination, but has a lower debt ratio than France (thus lower fiscal deficit) and a higher rate of growth than France and which is more credible than France, bizarre.
Nevertheless, the role of Germany has been harmful when it has imposed excessive fiscal adjustment on Greece. Germany has forgotten that after the second WW her debt toward the allies was almost canceled (thanks to the smart US intervention) (London Agreement in 1953). Thanks to this agreement, German debt was 20% of its GDP in the 50s against 200% for most other European countries (cf. A. Ritschl, LES). Without this discreet debt cancelation would the exceptional German performance after the second WW be the same? The German Government of 2010 did not follow the generous offer given by the allies in 1953. This is the source of tremendous social pain for the Greek people. European countries should have forgiven a part of the Greek debt, simply because Greece cannot reimburse it. Merkel and Schäuble refused.
5 It is true that fiscal balance has been achieved thanks to low public investment
Figure 6 German public investments are weaker in Germany
Some public infrastructure is falling apart. Digital investment is insufficient. The Chancellor Scholz has promised the "biggest industrial modernization of Germany" plus greening investments. He will have to square these ambitious objectives with the country's debt brake. Expect some hot discussions between the high-spending Greens and the pro-fiscal rectitude FDP over spending priorities.
6 There is a constant gap of 10 points of GDP between, the public expenditure ratio of France and Germany
Figure 7 France spends more than Germany and does not have better performance on the social front
Figure 8 Thus taxes are higher in France than in Germany
France contrary to Germany has no fiscal space, it cannot continue to make fiscal deficits for more growth, more "social" expenditure, to have social peace, and for green investment, Germany has still fiscal room fort more investment.
The high level of taxes in France explains its high unemployment rate (see figure 9) and its relatively low rate of growth.
7 Merkel's secret for her popularity, low unemployment rate (without systematic fiscal deficits)
Figure 9 In Germany, the unemployment rate drops from 11% of the labor force in 2005 to 4%, this is perhaps the reason why Ms. Merkel is popular. In France, the unemployment rate stays at 8%
The various Merkel's governments have shown that it is possible to reconcile unemployment decline with an orthodox fiscal policy and that, contrary to Keynesian belief, fiscal deficit does not create jobs.
Figure 10 German employment rate is higher in Germany than France
Job employment rate is higher in Germany than in France including for older people. In France the pension average year is 62, in Germany it will be 67 years old (the age of Ms. Merkel).
8 Germany received one million refugees and made the effort to integrate them, this is remarkable
Another thing not acceptable for the traditional right is that "she opened her country to over one million refugees from the wars of the Middle East."
So some will ask, how it comes, in France the whole right (from Pécresse to Zemour) is in favor of restriction on emigration in France and you favor immigration in Germany (double standards?) Germany has a declining population and immigration (if people are really integrated) is not necessarily a bad thing. The French situation is different, France has already a lot of Muslims emigrants (5 to 6 million) (all are French citizens) some of them (not all) have considerable difficulties to integrate the French culture (which can be summarized by "laïcité" (no religion mix between church and state). This is not understandable by Anglo-Saxon culture which tolerates a mix between church and politics (in France the President will never swear oath on the Bible, in France there is no prayer in public school (public means state-run school).
France was plunged into grief by various murder attacks (cafés, concert hall (Bataclan), in newspaper room (Charlie hebdo). It is today extremely difficult to expel an illegal immigrant in Europe.
Figure 11 Large immigrants in Germany in 2015-2016
9 Because of Germany's energy choices, the country is emitting more carbon per head than any other big EU country
A. Merkel made an historic mistake when she closed Germany's nuclear plants after the Fukushima nuclear explosion (2011), because of this decision Germany and Europe are dependent upon gas imported from Russia for electricity generation. If France takes back control its nuclear program, it could lead in Europe on electricity production (at a high price because nuclear generation is also expensive but is more reliable than electricity generated by wind turbines and solar panels).
Figure 12 In spite of her speech pro-green, Germany has poor performance in terms of greenhouse gases
The new government will have to say how to fill in the gap of the future demand for electricity from industrial and residential consumers facing a potential energy shortfall and rising prices without jeopardizing the export-driven economy. This is not wind turbines and solar panels which will supply the growing demand for electricity.
10 Regarding defense, Germany is under-armed and will always look toward the US for its defense
Germany thinks that defense should be the preserve of the US, Germany, most powerful European nation does not have the intention of shouldering much of the continent's security. This is not the French position (nor the US one).
Figure 13 Germany military spending is weak
Although France has a reasonable defense with a true army, it is isolated within Europe, most European countries look to the US and NATO for defense and arms procurement. European countries will always give preference to the US for the defense (the latest submarine contract is a good example). They prefer the strong US which can be careless and ruthless in its treatment of allies (see: Suez in 1956, the treatment of allies in the withdrawal of US troops from Afghanistan; and the treatment of France in the submarine deal are a reminder of what can happen to other "allies").
European countries will always prefer to be dependent on the US for their defense rather from France "small" country with a tendency for hegemony. France is always preaching for more Europe, but for the Elysée "More Europe has always been more France". French will be more credible if it had a strong and sustainable economy.
11 Demography can be the source of future decline
The German birth rate is one of the lowest in the world, the labor population is declining. According to TE, the Federal Agency for Employment considers that Germany needs 400 000 emigrants a year to meet the need for qualified labor workers.
Ms. Merkel leaves a country rich, democratic and confident; she has been looking for compromise and half measures. Her reign was marked by hesitations and slowness in decision-making (nothing could be done in Europe without her consent). Will the following Government do better? This is what we wish them.
Last note, for a French, a world leader shopping in the supermarket like anybody else is quite refreshing (I am looking for Macron going shopping).
Fiscal policy and monetary policy according to Philip Lane, Chief Economist at the ECB
At last, the IMF is taking a stance
Les "bonds vigilantes'' pourraient ne pas se limiter à Londres
©2020 par L'économie sauvage. Jean-Pierre Dumas


text:
«Список генералам по старшинству» — официальное периодическое издание Военного министерства Российской империи, заключающее в себя списки генералов по чинам и старшинству присвоения званий. Издание имело разную периодичность.

Впервые подобный список вышел в 1767 году под заглавием «Список воинскому департаменту и находящимся в штате при войске, в полках гвардии, в артиллерии и при других должностях генералитету и штаб-офицерам на … год», и под этим названием (с незначительными изменениями) издавался далее раз в год в 1768—1771, 1776, 1779—1780, 1782—1785, 1787—1789, 1792 и 1796 годах. Кроме генералов, в него включались бригадиры, полковники, премьер- и секунд-майоры и кавалеры ордена св. Георгия. В выпуск 1776 года были включены и старшины нерегулярных (казачьих) войск.

С 1796 года издание стало выходить ежемесячно и его название сильно изменено: «Список армейскому генералитету на … год». Издавалось по 1800 г., причем в один из выпусков 1797 г. в него были включены и полковники.

В 1801 году стало выходить под названием «Список генералитету по старшинству на … год», в один из выпусков были включены и штаб-офицеры. Сохраняя преимущественно ежемесячную периодизацию, издание выходило в 1801—1806, 1808—1820, 1822, 1823, 1826 и 1830 годах. В 1813 году был напечатан отдельный «Генералитетский список с обозначением имён, знаков отличия и старшинства в чинах», в нём впервые был составлен именной указатель. Это издание по принципам составления и подачи информации явилось прообразом будущего «Списка генералам по старшинству». Известно также сводное издание «Список военным генералам со времени Петра І до Екатерины II», напечатанное в 1809 году.

С 1838 года издание стало выходить под названием «Список генералам по старшинству. Составлено (как вариант "Исправлено") по … (дата, месяц)»; вышли выпуски за 1838, 1840, 1844, 1852, 1855, 1856, 1857 года и начиная с 1859 года по 1914 год издание выходило ежегодно. Чёткой периодичности издание не имело, ежегодно выходило от одного до 8 выпусков. В 1915 году «Список…» не выходил. Последний известный выпуск датируется 10 июля 1916 года, он вышел под грифом «Секретно» и содержал минимальную информацию, с указанием только даты старшинства и занимаемой должности на момент составления списка.

«Список …» представляет собой краткую послужную справку, в которой указывается следующая информация:
 Фамилия, имя, отчество (полностью)
 Дата производства в первый офицерский чин;
 Дата старшинства в чине генерал-майора и далее по необходимости в чине генерал-лейтенанта и полного генерала;
 Для генерал-майоров и генерал-адъютантов Свиты Его Величества — дата зачисления в Свиту;
 Занимаемая должность на момент составления списка;
 Основные ордена и поощрения с датой награждения (до 1907 — включая иностранные);
 Сведения о жаловании и прочих казённых выплатах (до 1907).
 С 1890 года публиковались сведения о дате рождения, вероисповедании, образовании и семейном положении, даты старшинства во всех предыдущих чинах, а также краткий перечень бывших должностей.

«Списки…», как правило, снабжались общим алфавитным указателем, в нём давалась фамилия генерала (без инициалов) и номер страницы с его данными. Генералы, находящиеся в запасе, в «Список…» не включались, их фамилия до 1890 года, как правило, указывалась только в алфавитном перечне, где вместо номера страниц стояла пометка «Зап.», затем их вообще перестали упоминать.

Кроме общих генеральских списков, издавались генеральские списки по родам оружия и месту службы. Известно подобное ежемесячное издание «Список генералам кавалерийским и пехотным по старшинству, не состоящим в армиях и корпусах, на … год», выходило в 1818—1820 и 1829 гг. Другое аналогичное издание: «Именной список генералитету, штаб- и обер-офицерам Артиллерийского и Инженерного корпусов по 8 ноября 1796 года», выпущено в конце 1796 г. С 1884 по 1905 г. (с перерывами) издавался «Список по старшинству генералитету гвардейской, полевой и казачьей артиллерии на … год». В 1911—1913 гг. ежегодно публиковался «Список генералам, штаб- и обер- офицерам инженерных войск на … год». С 1888 по 1910 гг. также печатался «Список священнослужителей, состоящих в ведомстве главного священника гвардии, гренадер армии и флота на … год», священники из этих списков были приравнены в правах к генералам.

См. также
 Списки офицеров по старшинству
 Старшинство в чине офицеров в Российской империи

Источники
 Справочники по истории дореволюционной России : Библиографический указатель / Науч. руководство, ред. и вступ. статья П. А. Зайончковского. 2-е изд., пересмотр. и доп. М. : Книга, 1978. 639 с.
 «Список воинскому департаменту и находящимся в штате при войске, в полках гвардии, в артиллерии и при других должностях генералитету и штаб-офицерам, такожде кавалерам Воинского ордена и старшинам в нерегулярных войсках на 1776 год». СПб., 1766
 «Список генералам по старшинству на 1886 год». СПб., 1886 (также выпуски 1885 и 1914 гг. — все описаны de visu).
 Полная электронная версия Общего списка офицерским чинам на 1 января 1909 г. в проекте «Офицеры РИА»
 «Список генералам по старшинству» в формате PDF в библиотеке Царское Село.
 «Список генералам по старшинству» в Российской национальной библиотеке
 «Список генералам по старшинству» в Российской государственной библиотеке

Примечания

Журналы на русском языке
Военные журналы Российской империи

Печатные издания, возникшие в 1767 году
Исчезли в 1916 году
Закрывшиеся журналы

redpajama_set_name: RedPajamaWikipedia


text:
Q: Why is it not available in CentOS wx.html2 . WebView control? I use wxpthon library to write UI program in CentOS system wx.html2 . WebView control, the following error is prompted:
  File "main.py", line 143, in <module>
    frame = DemoFrame()
  File "main.py", line 101, in __init__
    self._mainPanel = MainPanel( self )
  File "main.py", line 17, in __init__
    self.view = wx.html2.WebView.New(self)
NotImplementedError

Part of my code is like this:
class MainPanel( sp.ScrolledPanel ):
    #Main Panel
    def __init__( self, parent ):
        sp.ScrolledPanel.__init__( self, parent=parent )
        self.SetupScrolling()
        self.view = wx.html2.WebView.New(self)
        self.view.LoadURL( "http://www.baidu.com" )

CentOS version:CentOS Linux release 8.2.2004 (Core)
Python version: Python 3.6.8
wxPython version: 4.1.1 gtk3 (phoenix) wxWidgets 3.1.5

A: NotImplementedError means that wxPython was compiled without wx.html2 support.  The most likely cause of this on Linux is that the WebKit development packages were not present when you installed/compiled wxPython.  To resolve this, install the WebKit2 development package and reinstall wxPython.  On CentOS 8, the WebKit2 development package is webkit2gtk3-devel, so install it with the package manager, e.g., yum install webkit2gtk3-devel and then uninstall/reinstall wxPython.  Note: you may have to also clear the pip cache so that it won't re-use the previously compiled version of wxPython.


Treat your sweet tooth to these delicious dessert and cookie boxes!
Get your sugar fix with our dessert and cookie subscription boxes. Are you a home baker? These DIY baking subscription boxes will give you all of the supplies you need to make as many treats as you want. If your heart (and taste buds) want chocolate, indulge in a cocoa-infused box of sweets with one of our best chocolate subscription boxes. If you like to have a sugar craving, then add some of our best candy subscription boxes to the mix! So if you aim to join a cookie of the month club or simply crave a bite of something sweet once in a blue moon, a dessert box is just what you need.