text:
\section{Introduction}
\vspace{-5pt}
Recently, one of the authors received the redacted email below, informing us that an individual's data cannot be used any longer. The UK Biobank
\cite{sudlow2015uk} is one of the most valuable collections of genetic and medical records with half a million participants. Thousands of machine learning classifiers are trained on this data, and thousands of papers have been published using this data.

\fbox{\begin{minipage}{38em}
\scriptsize
\texttt{EMAIL ---- UK BIOBANK ----}\\
\texttt{Subject: UK Biobank Application [REDACTED], Participant Withdrawal Notification [REDACTED]}\\
\\
\texttt{Dear Researcher,}\\

\texttt{As you are aware, participants are free to withdraw form the UK Biobank at any time and request that their data no longer be used.}\texttt{ Since our last review, some participants involved with Application [REDACTED] have requested that their data should longer be used.}
\end{minipage}
}

The email request from the UK Biobank illustrates a fundamental challenge the broad data science and policy community is grappling with: \emph{how should we provide individuals with flexible control over how corporations, governments, and researchers use their data?} Individuals could decide at any time that they do not wish for their personal data to be used for a particular purpose by a particular entity. This ability is sometimes legally enforced. For example, the European Union's General Data Protection Regulation (GDPR) and former Right to Be Forgotten \cite{gdpr,righttobeforgotten} both require that companies and organizations enable users to withdraw consent to their data at any time under certain circumstances. These regulations broadly affect international companies and technology platforms with EU customers and users. Legal scholars have pointed out that the continued use of AI systems directly trained on deleted data could be considered illegal under certain interpretations and ultimately concluded that: \emph{it may be impossible to fulfill the legal aims of the Right to be Forgotten in artificial intelligence environments} \cite{villaronga2018humans}. Furthermore, so-called \emph{model-inversion attacks} have demonstrated the capability of adversaries to extract user information from trained ML models \cite{veale2018algorithms}.

Concretely, we frame the problem of data deletion in machine learning as follows. Suppose a statistical model is trained on $n$ datapoints. For example, the model could be trained to perform disease diagnosis from data collected from $n$ patients. To \emph{delete} the data sampled from the $i$-th patient from our trained model, we would like to update it such that it becomes independent of sample $i$, and looks as if it had been trained on the remaining $n-1$ patients.  A naive approach to satisfy the requested deletion would be to retrain the model from scratch on the data from the remaining $n-1$ patients. For many applications, this is not a tractable solution -- the costs (in time, computation, and energy) for training many machine learning models can be quite high. Large scale algorithms can take weeks to train and consume large amounts of electricity and other resources. Hence, we posit that efficient data deletion is a fundamental data management operation for machine learning models and AI systems, just like in relational databases or other classical data structures.

Beyond supporting individual data rights, there are various other possible use cases in which efficient data deletion is desirable. To name a few examples, it could be used to speed-up leave-one-out-cross-validation \cite{abu2012learning}, support a user data marketplace \cite{schomm2013marketplaces,truong2012data}, or identify important or valuable datapoints within a model \cite{ghorbani2019data}.

Deletion efficiency for general learning algorithms has not been previously studied. While the desired output of a deletion operation on a \emph{deterministic} model is fairly obvious, we have yet to even define data deletion for stochastic learning algorithms. At present, there is only a handful of learning algorithms known to support fast data deletion operations, all of which are deterministic. Even so, there is no pre-existing notion of how engineers should think about the asymptotic \emph{deletion efficiency} of learning systems, nor understanding of the kinds of trade-offs such systems face.

The key components of this paper include introducing deletion efficient learning, based on an intuitive and operational notion of what it means to (efficiently) delete data from a (possibly stochastic) statistical model. We pose data deletion as an online problem, from which a notion of optimal deletion efficiency emerges from a natural lower bound on amortized computation time. We do a case-study on deletion efficient learning using the simple, yet perennial, $k$-means clustering problem. We propose two deletion efficient algorithms that (in certain regimes) achieve optimal deletion efficiency. Empirically, on six datasets, our methods achieve an average of over $100\times$ speedup in amortized runtime with respect to the canonical Lloyd's algorithm seeded by $k$-means++ \cite{lloyd1982least,arthur2007k}. Simultaneously, our proposed deletion efficient algorithms perform comparably to the canonical algorithm on three different statistical metrics of clustering quality. Finally, we synthesize an algorithmic toolbox for designing  deletion efficient learning systems.

We summarize our work into three contributions:

\textbf{(1)} We formalize the problem and notion of efficient data deletion in the context of machine learning.

\textbf{(2)} We propose two different deletion efficient solutions for $k$-means clustering that have theoretical guarantees and strong empirical results.

\textbf{(3)} From our theory and experiments, we synthesize four general engineering principles for designing deletion efficient learning systems.

\vspace{-5pt}
 \section{Related Works}
 \vspace{-5pt}

\paragraph{Deterministic Deletion Updates}
As mentioned in the introduction, efficient deletion operations are known for some canonical learning algorithms. They include linear models \cite{statisticalcomputation,regression,van1983matrix,tsai2014incremental,cao2015towards, schelteramnesia}, certain types of \emph{lazy learning} \cite{Webb2010,atkeson1997locally,Birattari:1999:LLM:340534.340673} techniques such as non-parametric Nadaraya-Watson kernel regressions \cite{nadaraya1964estimating} or nearest-neighbors methods \cite{coomans1982alternative,schelteramnesia}, recursive support vector machines \cite{cauwenberghs2001incremental,tsai2014incremental}, and co-occurrence based collaborative filtering \cite{schelteramnesia}.

\paragraph{Data Deletion and Data Privacy}

Related ideas for protecting data in machine learning --- e.g. cryptography \cite{ohrimenko2016oblivious,bost2015machine,bonawitz2017practical,bogdanov2018implementation,nikolaenko2013privacy,erkin2012generating}, and differential privacy \cite{dwork2014algorithmic,chaudhuri2013near,chaudhuri2011differentially,papernot2016semi,abadi2016deep} --- do not lead to efficient data deletion, but rather attempt to make data private or non-identifiable. Algorithms that support efficient deletion do not have to be private, and algorithms that are private do not have to support efficient deletion. To see the difference between privacy and data deletion, note that every learning algorithm supports the naive data deletion operation of retraining from scratch. The algorithm is not required to satisfy any privacy guarantees. \emph{Even an operation that outputs the entire dataset in the clear could support data deletion, whereas such an operation is certainly not private}. In this sense, the challenge of data deletion only arises in the presence of computational limitations. Privacy, on the other hand, presents statistical challenges, even in the absence of any computational limitations. With that being said, data deletion has direct connections and consequences in data privacy and security, which we explore in more detail in Appendix A.

\vspace{-10pt}
\section{Problem Formulation}
\vspace{-5pt}

We proceed by describing our setting and defining the notion of \emph{data deletion} in the context of a machine learning algorithm and model. Our definition formalizes the intuitive goal that after a specified datapoint, $x$, is deleted, the resulting model is updated to be indistinguishable from a model that was trained from scratch on the dataset sans $x$. Once we have defined data deletion, we define a notion of \emph{deletion efficiency} in the context of an online setting. Finally, we conclude by synthesizing high-level principles for designing deletion efficient learning algorithms.

Throughout we denote dataset $D = \{x_1,\ldots,x_n\}$ as a set consisting of $n$ datapoints, with each datapoint $x_i \in \mathbf{R}^d$; for simplicity, we often represent $D$ as a $n \times d$ real-valued matrix as well. Let $A$ denote a (possibly randomized) algorithm that maps a dataset to a model in hypothesis space $\mathcal{H}$. We allow models to also include arbitrary metadata that is not necessarily used at inference time. Such metadata could include data structures or partial computations that can be leveraged to help with subsequent deletions. We also emphasize that algorithm $A$ operates on datasets of any size. Since $A$ is often stochastic, we can also treat $A$ as implicitly defining a conditional distribution over $\mathcal{H}$ given dataset $D$.

\begin{definition}{\textbf{Data Deletion Operation:}}
  We define a \textit{data deletion} operation for learning algorithm $A$, $R_A(D,A(D),i)$, which maps the dataset $D$, model $A(D)$, and index $i \in \{1,\ldots,n\}$ to some model in  $\mathcal{H}$. Such an operation is a data deletion operation if, for all $D$ and $i$, random variables $A(D_{-i})$ and $R_A(D,A(D),i)$ are equal in distribution, $A(D_{-i}) =_d R_A(D,A(D),i)$.
\end{definition}

Here we focus on exact data deletion: after deleting a training point from the model, the model should be as if this training point had never been seen in the first place. The above definition can naturally be relaxed to approximate data deletion by requiring a bound on the distance (or divergence) between distributions of $A(D_{-i})$ and $R_A(D,A(D),i)$. Refer to Appendix A for more details on approximate data deletion, especially in connection to differential privacy. We defer a full discussion of this to future work.

\paragraph{A Computational Challenge} Every learning algorithm, $A$, supports a trivial data deletion operation corresponding to simply retraining on the new dataset after the specified datapoint has been removed --- namely running algorithm $A$ on the dataset $D_{-i}$.  Because of this, the challenge of data deletion is computational: \textbf{1)} Can we design a learning algorithm $A$, and supporting data structures, so as to allow for a computationally efficient data deletion operation? \textbf{2)} For what algorithms $A$ is there a data deletion operation that runs in time sublinear in the size of the dataset, or at least sublinear in the time it takes to compute the original model, $A(D)$?  \textbf{3)} How do restrictions on the memory-footprint of the metadata contained in $A(D)$ impact the efficiency of
data deletion algorithms?

\paragraph{Data Deletion as an Online Problem}
One convenient way of concretely formulating the computational challenge of data deletion is via the lens of online algorithms~\cite{bottou1998online}.  Given a dataset of $n$ datapoints, a specific training algorithm $A$, and its corresponding deletion operation $R_A$, one can consider a stream of $m \le n$ distinct indices, $i_1,i_2,\ldots,i_m \in \{1,\ldots,n\}$, corresponding to the sequence of datapoints to be deleted.  The online task then is to design a data deletion operation that is given the indices $\{i_j\}$ one at a time, and must output $A(D_{-\{i_1,\ldots,i_j\}})$ upon being given index $i_j$.  As in the extensive body of work on online algorithms, the goal is to minimize the amortized computation time. The amortized runtime in the proposed online deletion setting is a natural and meaningful way to measure deletion efficiency. A formal definition of our proposed online problem setting can be found in Appendix A.

In online data deletion, a simple lower bound on amortized runtime emerges. All (sequential) learning algorithms $A$ run in time $\Omega(n)$ under the natural assumption that $A$ must process each datapoint at least once. Furthermore, in the best case, $A$ comes with a constant time deletion operation (or a deletion oracle).

\begin{remark}
In the online setting, for $n$ datapoints and $m$ deletion requests we establish an asymptotic lower bound of $\Omega(\frac{n}{m})$  for the amortized computation time of any (sequential) learning algorithm.
\end{remark}

We refer to an algorithm achieving this lower bound as \emph{deletion efficient}. Obtaining tight upper and lower bounds is an open question for many basic learning paradigms including ridge regression, decision tree models, and settings where $A$ corresponds to the solution to a stochastic optimization problem. In this paper, we do a case study on $k$-means clustering, showing that we can achieve deletion efficiency without sacrificing statistical performance.

 \subsection{General Principles for Deletion Efficient Machine Learning Systems}

 We identify four design principles which we envision as the pillars of deletion efficient learning algorithms.

 \paragraph{Linearity} Use of linear computation allows for simple post-processing to undo the influence of a single datapoint on a set of parameters. Generally speaking, the Sherman-Morrison-Woodbury matrix identity and matrix factorization techniques can be used to derive fast and explicit formulas for updating linear models \cite{statisticalcomputation,regression,van1983matrix,higham2002accuracy}. For example, in the case of linear least squares regressions, QR factorization can be used to delete datapoints from learned weights in time $O(d^2)$ \cite{hammarling2008updating,zeb2017updating}. Linearity should be most effective in domains in which randomized \cite{rahimi2008random}, reservoir \cite{yin2012self,schrauwen2007overview},  domain-specific \cite{lowe1999object}, or pre-trained feature spaces elucidate linear relationships in the data.

\paragraph{Laziness} Lazy learning methods delay computation until inference time \cite{Webb2010,Birattari:1999:LLM:340534.340673,atkeson1997locally}, resulting in trivial deletions. One of the simplest examples of lazy learning is $k$-nearest neighbors \cite{friedman2001elements,altman1992introduction,schelteramnesia}, where deleting a point from the dataset at deletion time directly translates to an updated model at inference time. There is a natural affinity between lazy learning and non-parametric techniques \cite{nadaraya1964estimating,bontempi2001local}. Although we did not make use of laziness for unsupervised learning in this work, pre-existing literature on kernel density estimation for clustering would be a natural starting place \cite{hinneburg2007denclue}. Laziness should be most effective in regimes when there are fewer constraints on inference time and model memory than training time or deletion time. In some sense, laziness can be interpreted as shifting computation from training to inference. As a side effect, deletion can be immensely simplified.

\paragraph{Modularity} In the context of deletion efficient learning, modularity is the restriction of dependence of computation state or model parameters to specific partitions of the dataset. Under such a modularization, we can isolate specific modules of data processing that need to be recomputed in order to account for deletions to the dataset. Our notion of modularity is conceptually similar to its use in software design \cite{berman1993optimization} and distributed computing \cite{peleg2000distributed}. In DC-$k$-means, we leverage modularity by managing the dependence between computation and data via the divide-and-conquer tree. Modularity should be most effective in regimes for which the dimension of the data is small compared to the dataset size, allowing for partitions of the dataset to capture the important structure and features.

\paragraph{Quantization} Many models come with a sense of continuity from dataset space to model space --- small changes to the dataset should result in small changes to the (distribution over the) model. In statistical and computational learning theory, this idea is known to as \emph{stability} \cite{mukherjee2006learning,kearns1999algorithmic,kutin2002almost,devroye1979distribution,shalev2010learnability,poggio2004general}. We can leverage stability by quantizing the mapping from datasets to models (either explicitly or implicitly). Then, for a small number of deletions, such a quantized model is unlikely to change. If this can be efficiently verified at deletion time, then it can be used for fast average-case deletions. Quantization is most effective in regimes for which the number of parameters is small compared to the dataset size.

\vspace{-5pt}
\section{Deletion Efficient Clustering}
\vspace{-5pt}
Data deletion is a general challenge for machine learning. Due to its simplicity we focus on $k$-means clustering as a case study. Clustering is a widely used ML application, including on the UK Biobank (for example as in \cite{galinsky2016population}). We propose two algorithms for deletion efficient $k$-means clustering. In the context of $k$-means, we treat the output centroids as the model from which we are interested in deleting datapoints. We summarize our proposed algorithms and state theoretical runtime complexity and statistical performance guarantees. Please refer to \cite{friedman2001elements} for background concerning $k$-means clustering.

\subsection{Quantized $k$-Means}

We propose a quantized variant of Lloyd's algorithm as a deletion efficient solution to $k$-means clustering, called Q-$k$-means.  By quantizing the centroids at each iteration, we show that the algorithm's centroids are constant with respect to deletions with high probability. Under this notion of quantized stability, we can support efficient deletion, since most deletions can be resolved without re-computing the centroids from scratch. Our proposed algorithm is distinct from other quantized versions of $k$-means \cite{schellekens2018quantized}, which quantize the data to minimize memory or communication costs. We present an abridged version of the algorithm here (Algorithm 1). Detailed pseudo-code for Q-$k$-means and its deletion operation may be found in Appendix B.

Q-$k$-means follows the iterative protocol as does the canonical Lloyd's algorithm (and makes use of the $k$-means++ initialization). There are four key differences from Lloyd's algorithm. First and foremost, the centroids are quantized in each iteration before updating the partition. The quantization maps each point to the nearest vertex of a uniform $\epsilon$-lattice \cite{gray1998quantization}. To de-bias the quantization, we apply a random phase shift to the lattice. The particulars of the quantization scheme are discussed in Appendix B. Second, at various steps throughout the computation, we \emph{memoize} the optimization state into the model's metadata for use at deletion time (incurring an additional $O(ktd)$ memory cost). Third, we introduce a balance correction step, which compensates for $\gamma$-imbalanced clusters by averaging current centroids with a momentum term based on the previous centroids. Explicitly, for some $\gamma \in (0,1)$, we  consider any partition $\pi_\kappa$ to be $\gamma$-imbalanced if $|\pi_\kappa| \leq \frac{\gamma n}{k}$. We may think of $\gamma$ as being the ratio of the smallest cluster size to the average cluster size. Fourth, because of the quantization, the iterations are no longer guaranteed to decrease the loss, so we have an early termination if the loss increases at any iteration. Note that the algorithm terminates almost surely.

\begin{wrapfigure}{r}{0.5\textwidth}
\vspace{-20pt}
 \begin{minipage}{.99\linewidth}
\begin{algorithm}[H]
   \caption{Quantized $k$-means (abridged)}
   \label{qkmeans_abridged}
\begin{algorithmic}
\footnotesize
   \STATE {\bfseries Input:} data matrix $D \in \mathbf{R}^{n \times d}$
   \STATE {\bfseries Parameters:} $k \in \mathbf{N}$, $T \in \mathbf{N}$, $\gamma \in (0,1)$, $\epsilon > 0$
   \STATE $c \gets k^{++}(D)$ // \textit{initialize centroids with $k$-means++}
   \STATE Save initial centroids:  $\textsf{save}(c)$.
   \STATE $L \gets k$-means loss of initial partition $\pi(c)$
   \FOR{$\tau = 1$ {\bfseries to} $T$}
        \STATE Store current centroids: $ c'\gets c$
        \STATE Compute centroids: $ c \gets c(\pi)$
        \STATE Apply correction to $\gamma$-imbalanced partitions
        \STATE Quantize to random $\epsilon$-lattice: $\hat{c} \gets Q(c;\theta)$
       \STATE Update partition: $\pi' \gets \pi(\hat{c})$
      \STATE Save state to metadata: $\textsf{save}(c,\theta,\hat{c},|\pi'|)$
       \STATE Compute loss $L'$
       \STATE \textbf{if} $L' < L$ \textbf{then} $(c, \pi, L) \gets (\hat{c}, \pi' , L')$ \textbf{else} \textbf{break}
   \ENDFOR
   \\
   \textbf{return} $c$ //output final centroids as model

\end{algorithmic}
\end{algorithm}
\end{minipage}
\vspace{-10pt}
\end{wrapfigure}

Deletion in Q-$k$-means is straightforward. Using the metadata saved from training time, we can verify if deleting a specific datapoint would have resulted in a different \emph{quantized centroid} than was actually computed during training. If this is the case (or if the point to be deleted is one of randomly chosen initial centroids according to $k$-means++) we must retrain from scratch to satisfy the deletion request. Otherwise, we may satisfy deletion by updating our metadata to reflect the deletion of the specified datapoint, but we do not have to recompute the centroids. Q-$k$-means directly relies the principle of quantization to enable fast deletion in expectation. It is also worth noting that Q-$k$-means also leverages on the principle of linearity to recycle computation. Since centroid computation is linear in the datapoints, it is easy to determine the centroid update due to a removal at deletion time.

\paragraph{Deletion Time Complexity}
We turn our attention to an asymptotic time complexity analysis of Q-$k$-means deletion operation. Q-$k$-means supports deletion by quantizing the centroids, so they are stable to against small perturbations (caused by deletion of a point).

\begin{theorem}

Let $D$ be a dataset on $[0,1]^d$ of size $n$. Fix parameters $T$, $k$, $\epsilon$, and $\gamma$ for Q-$k$-means. Then, Q-$k$-means supports $m$ deletions in time $O(m^2d^{5/2}/\epsilon)$ in expectation, with probability over the randomness in the quantization phase and $k$-means++ initialization.
\end{theorem}

The proof for the theorem is given in Appendix C.  The intuition is as follows. Centroids are computed by taking an average. With enough terms in an average, the effect of a small number of those terms is negligible. The removal of those terms from the average can be interpreted as a small perturbation to the centroid. If that small perturbation is on a scale far below the granularity of the quantizing $\epsilon$-lattice, then it is unlikely to change the quantized value of the centroid. Thus, beyond stability verification, no additional computation is required for a majority of deletion requests.
This result is in expectation with respect to the randomized initializations and randomized quantization phase, but is actually worst-case over all possible (normalized) dataset instances. The number of clusters $k$, iterations $T$, and cluster imbalance ratio $\gamma$ are usually small constants in many applications, and are treated as such here. Interestingly, for constant $m$ and $\epsilon$, the expected deletion time is independent of $n$ due to the stability probability increasing at the same rate as the problem size (see Appendix C). Deletion time for this method may not scale well in the high-dimensional setting. In the low-dimensional case, the most interesting interplay is between $\epsilon$, $n$, and $m$. To obtain as high-quality statistical performance as possible, it would be ideal if $\epsilon \rightarrow 0$ as $n \rightarrow \infty$. In this spirit, we can parameterize $\epsilon = n^{-\beta}$ for $\beta \in (0,1)$. We will use this parameterization for theoretical analysis of the online setting in Section 4.3.

\paragraph{Theoretical Statistical Performance}
We proceed to state a theoretical guarantee on statistical performance of Q-$k$-means, which complements the asymptotic time complexity bound of the deletion operation. Recall that the loss for a $k$-means problem instance is given by the sum of squared Euclidean distance from each datapoint to its nearest centroid. Let $\mathcal{L}^*$ be the optimal loss for a particular problem instance. Achieving the optimal solution is, in general, NP-Hard \cite{aloise2009np}. Instead, we can approximate it with $k$-means++, which achieves $\mathbf{E}\mathcal{L}^{++} \leq (8 \log k + 16)\mathcal{L}^{*}$ \cite{arthur2007k}.

\begin{corollary}
Let $\mathcal{L}$ be a random variable denoting the loss of Q-$k$-means on a particular problem instance of size $n$. Then $\mathbf{E}\mathcal{L} \leq (8 \log k + 16)\mathcal{L}^{*} + \epsilon\sqrt{nd(8 \log k + 16)\mathcal{L}^{*}} + \frac{1}{4}nd\epsilon^2$.
\end{corollary}

This corollary follows from the theoretical guarantees already known to apply to Lloyd's algorithm when initialized with $k$-means++, given by \cite{arthur2007k}. The proof can be found in Appendix C. We can interpret the bound by looking at the ratio of expected loss upper bounds for $k$-means++ and Q-$k$-means. If we assume our problem instance is generated by iid samples from some arbitrary non-atomic distribution, then it follows that $\mathcal{L}^* = O(n)$. Taking the loss ratio of upper bounds yields $\mathbf{E}\mathcal{L}/\mathbf{E}\mathcal{L}^{++} \leq 1 + O(d\epsilon^2 + \sqrt{d}\epsilon)$. Ensuring that $\epsilon << 1/\sqrt{d}$ implies the upper bound is as good as that of $k$-means++.

\subsection{Divide-and-Conquer \(k\)-Means}

\begin{wrapfigure}{r}{0.5\textwidth}
\vspace{-25pt}
 \begin{minipage}{.99\linewidth}
\begin{algorithm}[H]

   \caption{DC-$k$-means}
   \label{dckmeans}
\begin{algorithmic}
\footnotesize
   \STATE {\bfseries Input:} data matrix $D \in \mathbf{R}^{n \times d}$
   \STATE {\bfseries Parameters:} $k \in \mathbf{N}$, $T \in \mathbf{N}$, tree width $w \in \mathbf{N}$, tree height $h \in \mathbf{N}$
   \STATE Initialize a $w$-ary tree of height $h$ such that each \textsf{node} has a pointer to a \textsf{dataset} and \textsf{centroids}
   \FOR{$i= 1$ {\bfseries to} $n$}
        \STATE Select a leaf $\textsf{node}$ uniformly at random
        \STATE $\textsf{node}.\textsf{dataset}.\textsf{add}(D_i)$
        \ENDFOR
   \FOR{$l = h$ {\bfseries down to} $0$}
        \FOR{ {\bfseries each} \textsf{node} in level $l$}
            \STATE $c \gets \textsf{k-means++}(\textsf{node}.\textsf{dataset},k,T)$
            \STATE $\textsf{node}.\textsf{centroids} \gets c$
            \IF{$ l > 0$}
            \STATE $\textsf{node}.\textsf{parent}.\textsf{dataset}.\textsf{add}(c)$
            \ELSE
            \STATE \textsf{save} all \textsf{nodes} as metadata
            \STATE \textbf{return} $c$ //model output
            \ENDIF
         \ENDFOR
        \ENDFOR
\end{algorithmic}
\end{algorithm}
\end{minipage}
\vspace{-15pt}

\end{wrapfigure}

We turn our attention to another variant of Lloyd's algorithm that also supports efficient deletion, albeit through quite different means. We refer to this algorithm as Divide-and-Conquer $k$-means (DC-$k$-means). At a high-level, DC-$k$-means works by partitioning the dataset into small sub-problems, solving each sub-problem as an independent $k$-means instance, and recursively merging the results. We present pseudo-code for DC-$k$-means here, and we refer the reader to Appendix B for pseudo-code of the deletion operation.

DC-$k$-means operates on a perfect $w$-ary tree of height $h$ (this could be relaxed to any rooted tree). The original dataset is \emph{partitioned} into each leaf in the tree as a uniform multinomial random variable with datapoints as trials and leaves as outcomes. At each of these leaves, we solve for some number of centroids via $k$-means++. When we merge leaves into their parent node, we construct a new dataset consisting of all the centroids from each leaf. Then, we compute new centroids at the parent via another instance of $k$-means++. For simplicity, we keep $k$ fixed throughout all of the sub-problems in the tree, but this could be relaxed. We make use of the tree hierarchy to \emph{modularize} the computation's dependence on the data. At deletion time, we need only to recompute the sub-problems from \emph{one} leaf up to the root. This observation allows us to support fast deletion operations.

Our method has close similarities to pre-existing distributed $k$-means algorithms \cite{qin2016distributed,peleg2000distributed,balcan2013distributed,bachem2017distributed,guha1998cure,bahmani2012scalable,zhao2009parallel}, but is in fact distinct (not only in that it is modified for deletion, but also in that it operates over general rooted trees). For simplicity, we restrict our discussion to only the simplest of divide-and-conquer trees. We focus on depth-1 trees with $w$ leaves where each leaf solves for $k$ centroids. This requires only one merge step with a root problem size of $kn/w$.

Analogous to how $\epsilon$ serves as a knob to trade-off between deletion efficiency and statistical performance in Q-$k$-means, for DC-$k$-means, we imagine that $w$ might also serve as a similar knob. For example, if $w = 1$, DC-$k$-means degenerates into canonical Lloyd's (as does Q-$k$-means as $\epsilon \rightarrow 0$). The dependence of statistical performance on tree width $w$ is less theoretically tractable than that of Q-$k$-means on $\epsilon$, but in Appendix D, we empirically show that statistical performance tends to decrease as $w$ increases, which is perhaps somewhat expected.

As we show in our experiments, depth-1 DC-$k$-means demonstrates an empirically compelling trade-off between deletion time and statistical performance. There are various other potential extensions of this algorithm, such as weighting centroids based on cluster mass as they propagate up the tree or exploring the statistical performance of deeper trees.

\paragraph{Deletion Time Complexity}
For ensuing asymptotic analysis, we may consider parameterizing tree width $w$ as $w = \Theta(n^\rho)$ for $\rho \in (0,1)$. As before, we treat $k$ and $T$ as small constants. Although intuitive, there are some technical minutia to account for to prove correctness and runtime for the DC-$k$-means deletion operation. The proof of Proposition 3.2 may be found in Appendix C.

\begin{proposition}
Let $D$ be a dataset on $\mathbf{R}^d$ of size $n$. Fix parameters $T$ and $k$ for DC-$k$-means. Let $w = \Theta(n^\rho)$ and $\rho \in (0,1)$  Then, with a depth-1, $w$-ary divide-and-conquer tree, DC-$k$-means supports $m$ deletions in time $O(m\mathbf{max}\{n^{\rho},n^{1-\rho}\}d)$ in expectation with probability over the randomness in dataset partitioning.
\end{proposition}

\subsection{Amortized Runtime Complexity in Online Deletion Setting}

We state the amortized computation time for both of our algorithms in the online deletion setting defined in Section 3. We are in an asymptotic regime where the number of deletions $m = \Theta( n^\alpha)$ for $0 < \alpha < 1$ (see Appendix C for more details). Recall the $\Omega(\frac{n}{m})$ lower bound from Section 3. For a particular fractional power $\alpha$, an algorithm achieving the optimal asymptotic lower bound on amortized computation is said to be \emph{$\alpha$-deletion efficient}. This corresponds to achieving an amortized runtime of $O(n^{1-\alpha})$.  The following corollaries result from direct calculations which may be found in Appendix C. Note that Corollary 4.2.2 assumes DC-$k$-means is training sequentially.

\begin{corollary}

With $\epsilon = \Theta(n^{-\beta}),$ for $0 < \beta < 1$, the Q-$k$-means algorithm is $\alpha$-deletion efficient in expectation if $\alpha \leq \frac{1-\beta}{2}$.

\end{corollary}

\begin{corollary}

With $w = \Theta(n^{\rho})$, for $0 < \rho < 1$, and a depth-1 $w$-ary divide-and-conquer tree, DC-$k$-means is $\alpha$-deletion efficient in expectation if $\alpha < 1- \textbf{max}\{1-\rho, \rho\}.$
\end{corollary}

\vspace{-5pt}
\section{Experiments}
\vspace{-5pt}
With a theoretical understanding in hand, we seek to empirically characterize the trade-off between runtime and performance for the proposed algorithms. In this section, we provide proof-of-concept for our algorithms by benchmarking their amortized runtimes and clustering quality on a simulated stream of online deletion requests. As a baseline, we use the canonical Lloyd's algorithm initialized by $k$-means++ seeding \cite{lloyd1982least,arthur2007k}. Following the broader literature, we refer to this baseline simply as $k$-means, and refer to our two proposed methods as Q-$k$-means and DC-$k$-means.

\paragraph{Datasets} We run our experiments on five real, publicly available datasets: \texttt{Celltype} ($N=12,009$, $D=10$, $K=4$)  \cite{han2018mapping}, \texttt{Covtype} ($N=15,120$, $D=52$, $K=7$) \cite{blackard1999comparative}, \texttt{MNIST} ($N=60,000$, $D=784$, $K=10$) \cite{lecun1998gradient},  \texttt{Postures} ($N=74,975$, $D=15$, $K=5$) \cite{gardner2014measuring,gardner20143d} , \texttt{Botnet} ($N=1,018,298$, $D=115$, $K=11$)\cite{meidan2018n}, and a synthetic dataset made from a Gaussian mixture model which we call \texttt{Gaussian} ($N=100,000$, $D=25$, $K=5$). We refer the reader to Appendix D for more details on the datasets. All datasets come with ground-truth labels as well. Although we do not make use of the labels at learning time, we can use them to evaluate the statistical quality of the clustering methods.

\paragraph{Online Deletion Benchmark} We simulate a stream of 1,000 deletion requests, selected uniformly at random and without replacement. An algorithm trains once, on the full dataset, and then runs its deletion operation to satisfy each request in the stream, producing an intermediate model at each request. For the canonical $k$-means baseline, deletions are satisfied by re-training from scratch.

\paragraph{Protocol} To measure statistical performance, we evaluate with three metrics (see Section 5.1) that measure cluster quality. To measure deletion efficiency, we measure the wall-clock time to complete our online deletion benchmark. For both of our proposed algorithms, we always fix 10 iterations of Lloyd's, and all other parameters are selected with simple but effective heuristics (see Appendix D). This alleviates the need to tune them. To set a fair $k$-means baseline, when reporting runtime on the online deletion benchmark, we also fix 10 iterations of Lloyd's, but when reporting statistical performance metrics, we run until convergence. We run five replicates for each method on each dataset and include standard deviations with all our results. We refer the reader to Appendix D for more experimental details.

\subsection{Statistical Performance Metrics}
To evaluate clustering performance of our algorithms, the most obvious metric is the optimization loss of the $k$-means objective. Recall that this is the sum of square Euclidean distances from each datapoint to its nearest centroid. To thoroughly validate the statistical performance of our proposed algorithms, we additionally include two canonical clustering performance metrics.

\textbf{Silhouette Coefficient }\cite{rousseeuw1987silhouettes}: This coefficient measures a type of correlation (between -1 and +1) that captures how dense each cluster is and how well-separated different clusters are. The silhouette coefficient is computed without ground-truth labels, and uses only spatial information. Higher scores indicate denser, more well-separated clusters.

\textbf{Normalized Mutual Information (NMI)} \cite{vinh2010information,knops2006normalized}: This quantity measures the agreement of the assigned clusters to the ground-truth labels, up to permutation. NMI is upper bounded by 1, achieved by perfect assignments. Higher scores indicate better agreement between clusters and ground-truth labels.

\vspace{-5pt}
\subsection{Summary of Results}
\vspace{-5pt}

\begin{table}[h]
\begin{minipage}{0.3\textwidth}
\vspace{-5pt}
We summarize our key findings in four tables. In Tables 1-3, we report the statistical clustering performance of the 3 algorithms on each of the 6 datasets. In Table 1, we report the optimization loss ratios of our proposed methods over the $k$-means++ baseline.
\end{minipage}\hfill
\begin{minipage}{0.7\textwidth}
\centering
\small
\caption{Loss Ratio}
\begin{tabular}{l|c|c|c}
\toprule
 \bf Dataset  & \bf $k$-means \normalfont & \bf Q-$k$-means &\bf DC-$k$-means \normalfont \\
 \midrule
\bf Celltype & $1.0 \pm 0.0$ & $1.158 \pm 0.099$ & $1.439 \pm 0.157$ \\
\bf Covtype & $1.0 \pm 0.029$ & $1.033 \pm 0.017$ & $1.017 \pm 0.031$ \\
\bf MNIST & $1.0 \pm 0.002$ & $1.11 \pm 0.004$ & $1.014 \pm 0.003$ \\
\bf Postures & $1.0 \pm 0.004$ & $1.014 \pm 0.015$ & $1.034 \pm 0.017$ \\
\bf Gaussian & $1.0 \pm 0.014$ & $1.019 \pm 0.019$ & $1.003 \pm 0.014$ \\
\bf Botnet & $1.0 \pm 0.126$ & $1.018 \pm 0.014$ & $1.118 \pm 0.102$ \\
\bottomrule
\end{tabular}

\
\end{minipage}
\vspace{-5pt}
\end{table}

\begin{table}[h]
\begin{minipage}{0.3\textwidth}
\vspace{-5pt}

In Table 2, we report the silhouette coefficient for the clusters. In Table 3, we report the NMI. In Table 4, we report the amortized total runtime of training and deletion for each method. \textbf{Overall, we see that the statistical clustering performance of the three methods are competitive.}

\end{minipage}\hfill
\begin{minipage}{0.7\textwidth}
\centering
\small
\caption{Silhouette Coefficients (higher is better)}
\begin{tabular}{l|c|c|c}
\toprule
\bf Dataset  & \bf $k$-means \normalfont & \bf Q-$k$-means &\bf DC-$k$-means \normalfont \\
 \midrule
\bf Celltype & $0.384 \pm 0.001$ & $0.367 \pm 0.048$ & $0.422 \pm 0.057$ \\
\bf Covtype & $0.238 \pm 0.027$ & $0.203 \pm 0.026$ & $0.222 \pm 0.017$ \\
\bf Gaussian & $0.036 \pm 0.002$ & $0.031 \pm 0.002$ & $0.035 \pm 0.001$ \\
\bf Postures & $0.107 \pm 0.003$ & $0.107 \pm 0.004$ & $0.109 \pm 0.005$ \\
\bf Gaussian & $0.066 \pm 0.007$ & $0.053 \pm 0.003$ & $0.071 \pm 0.004$ \\
\bf Botnet & $0.583 \pm 0.042$ & $0.639 \pm 0.028$ & $0.627 \pm 0.046$ \\
\bottomrule
\end{tabular}
\label{table:silhouette}
\end{minipage}
\vspace{-5pt}
\end{table}

\begin{table}[h]
\begin{minipage}{0.3\textwidth}
\vspace{-5pt}
\textbf{Furthermore, we find that both proposed algorithms yield orders of magnitude of speedup.} As expected from the theoretical analysis, Q-$k$-means offers greater speed-ups when the dimension is lower relative to the sample size, whereas DC-$k$-means is more consistent across dimensionalities.

\end{minipage}\hfill
\begin{minipage}{0.7\textwidth}

\centering
\small
\caption{Normalized Mutual Information (higher is better)}
\begin{tabular}{l|c|c|c}
\toprule
\bf Dataset  & \bf $k$-means \normalfont & \bf Q-$k$-means &\bf DC-$k$-means \normalfont \\

 \midrule
\bf Celltype& $0.36 \pm 0.0$ & $0.336 \pm 0.032$ & $0.294 \pm 0.067$ \\
\bf Covtype & $0.311 \pm 0.009$ & $0.332 \pm 0.024$ & $0.335 \pm 0.02$ \\
\bf MNIST & $0.494 \pm 0.006$ & $0.459 \pm 0.011$ & $0.494 \pm 0.004$ \\
\bf Gaussian & $0.319 \pm 0.024$ & $0.245 \pm 0.024$ & $0.318 \pm 0.024$ \\
\bf Postures & $0.163 \pm 0.018$ & $0.169 \pm 0.012$ & $0.173 \pm 0.011$ \\
\bf Botnet & $0.708 \pm 0.048$ & $0.73 \pm 0.015$ & $0.705 \pm 0.039$ \\
\bottomrule
\end{tabular}
\label{table:nmi}
\end{minipage}
\end{table}

\begin{table*}[h!]
\vspace{-15pt}
\centering
\small
\caption{Amortized Runtime in Online Deletion Benchmark (Train once + 1,000 Deletions) }
\small
\begin{tabular}{l|c|cc|cc}
\toprule

 & \bf $k$-means \normalfont  & \multicolumn{2}{c|}{\bf Q-$k$-means \normalfont} &
    \multicolumn{2}{c}{\bf  DC-$k$-means \normalfont} \\
\bf Dataset  & \bf Runtime (s) \normalfont & \bf Runtime (s) \normalfont  & \bf Speedup \normalfont & \bf Runtime (s) & \bf Speedup\\
\midrule
\bf Celltype & $4.241 \pm 0.248$ & $0.026 \pm 0.011$ & $163.286\times$ & $0.272 \pm 0.007$ & $15.6\times$ \\
\bf Covtype & $6.114 \pm 0.216$ & $0.454 \pm 0.276$ & $13.464\times$ & $0.469 \pm 0.021$ & $13.048\times$\\
\bf MNIST & $65.038 \pm 1.528$ & $29.386 \pm 0.728$ & $2.213\times$ & $2.562 \pm 0.056$ & $25.381\times$ \\
\bf Postures & $26.616 \pm 1.222$ & $0.413 \pm 0.305$ & $64.441\times$ & $1.17 \pm 0.398$ & $22.757\times$ \\
\bf Gaussian & $206.631 \pm 67.285$ & $0.393 \pm 0.104$ & $525.63\times$ & $5.992 \pm 0.269$ & $34.483\times$ \\
\bf Botnet & $607.784 \pm 64.687$ & $1.04 \pm 0.368$ & $584.416\times$ & $8.568 \pm 0.652$ & $70.939\times$ \\
\bottomrule
\end{tabular}
\label{table:speedup}
\vspace{-8pt}
\end{table*}

\begin{figure}[h!]
\vspace{-12pt}
\centering
\small
\includegraphics[width=0.95\textwidth]{Data_Deletion-NeuRIPS2019/imgs/mainplot_2019-05-19.png}
\vspace{-15pt}
\caption{\small {Online deletion efficiency: \# of deletions vs. amortized runtime (secs) for 3 algorithms on 6 datasets.}}
\vspace{-10pt}
\end{figure}

In particular, note that \texttt{MNIST} has the highest $d/n$ ratio of the datasets we tried, followed by \texttt{Covtype}, These two datasets are, respectively, the datasets for which Q-$k$-means offers the least speedup. On the other hand, DC-$k$-means offers consistently increasing speedup as $n$ increases, for fixed $d$. Furthermore, we see that Q-$k$-means tends to have higher variance around its deletion efficiency, due to the randomness in centroid stabilization having a larger impact than the randomness in the dataset partitioning. We remark that 1,000 deletions is less than 10\% of every dataset we test on, and statistical performance remains virtually unchanged throughout the benchmark. In Figure 1, we plot the amortized runtime on the online deletion benchmark as a function of number of deletions in the stream. We refer the reader to Appendix D for supplementary experiments providing more detail on our methods.

\vspace{-5pt}
\section{Discussion}
\vspace{-5pt}
\label{sec:discussion}

At present, the main options for deletion efficient supervised methods are linear models, support vector machines, and non-parametric regressions. While our analysis here focuses on the concrete problem of clustering, we have proposed four design principles which we envision as the pillars of deletion efficient learning algorithms. We discuss the potential application of these methods to other supervised learning techniques.

\vspace{-2pt}
\paragraph{Segmented Regression} Segmented (or piece-wise) linear regression is a common relaxation of canonical regression models \cite{muggeo2016testing,muggeo2008segmented,muggeo2003estimating}. It should be possible to support a variant of segmented regression by combining Q-$k$-means with linear least squares regression. Each cluster could be given a separate linear model, trained only on the datapoints in said cluster. At deletion time, Q-$k$-means would likely keep the clusters stable, enabling a simple linear update to the model corresponding to the cluster from which the deleted point belonged.

\vspace{-5pt}
\paragraph{Kernel Regression} Kernel regressions in the style of random Fourier features  \cite{rahimi2008random} could be readily amended to support efficient deletions for large-scale supervised learning. Random features do not depend on data, and thus only the linear layer over the feature space requires updating for deletion. Furthermore, random Fourier feature methods have been shown to have affinity for quantization \cite{zhang2018low}.

\vspace{-5pt}
\paragraph{Decision Trees and Random Forests} Quantization is also a promising approach for decision trees. By quantizing or randomizing decision tree splitting criteria (such as in \cite{geurts2006extremely}) it seems possible to support efficient deletion. Furthermore, random forests have a natural affinity with bagging, which naturally can be used to impose modularity.

\vspace{-5pt}
\paragraph{Deep Neural Networks and Stochastic Gradient Descent}
A line of research has observed the robustness of neural network training robustness to quantization and pruning \cite{vanhoucke2011improving,jouppi2017datacenter,gysel2018ristretto,rastegari2016xnor,courbariaux2014training,lin2016fixed}. It could be possible to leverage these techniques to quantize gradient updates during SGD-style optimization, enabling a notion of parameter stability analgous to that in Q-$k$-means. This would require larger batch sizes and fewer gradient steps in order to scale well. It is also possible that approximate deletion methods may be able to overcome shortcomings of exact deletion methods for large neural models.

\vspace{-5pt}
\section{Conclusion}
\vspace{-5pt}
In this work, we developed a notion of deletion efficiency for large-scale learning systems, proposed provably deletion efficient unsupervised clustering algorithms, and identified potential algorithmic principles that may enable deletion efficiency for other learning algorithms and paradigms.  We have only scratched the surface of understanding deletion efficiency in learning systems. Throughout, we made a number of simplifying assumptions, such that there is only one model and only one database in our system. We  also assumed that user-based deletion requests correspond to only a single data point. Understanding deletion efficiency in a system with many models and many databases, as well as complex user-to-data relationships, is an important direction for future work.

\noindent \textbf{Acknowledgments:}  This research was partially supported by NSF Awards AF:1813049, CCF:1704417, and CCF 1763191, NIH R21 MD012867-01, NIH P30AG059307, an Office of Naval Research Young Investigator Award (N00014-18-1-2295), a seed grant from Stanford's Institute for Human-Centered AI, and the Chan-Zuckerberg Initiative. We would also like to thank I. Lemhadri, B. He, V. Bagaria, J. Thomas and anonymous reviewers for helpful discussion and feedback.

\bibliographystyle{abbrv}

redpajama_set_name: RedPajamaArXiv


text:
Here's What Happens To The Bowling Ball After You Hit A Strike
By Luke T. Harrington/July 15, 2021 11:59 am EST
The pinsetter is to bowling what the ski lift is to skiing or the golf cart is to golf: a surprisingly complicated machine that takes some of the actual work out of a popular sport, turning it from something physically demanding into something that can be done easily even by kids at birthday parties. The machinery is so ubiquitous that we take it for granted, but imagine how physically demanding bowling was before its invention: After every time you threw the ball, you'd have to literally chase after it, walking down to the end of the lane to collect it, pick up the knocked-over pins, and (if it was the end of the frame) reset all 10 of them by hand.
Now, of course, machinery does all of that — not only returning your ball, but cleaning up the pins, resetting them, and even keeping score for you (which is nice, but, let's be honest, that's why you have no idea how to add). It's kind of an amazing device, but to most of us, it's a black box. Here's how it works.
How pinsetters work: conveyor belts, 'elevator wheels,' and a super-fun roller coaster for your ball
As this 2008 YouTube video by Matt Rittman shows, there's some surprisingly sophisticated stuff going on behind the back wall of the alley. When your ball hits the pins, it (along with, ideally, the knocked-over pins) falls into a collection area behind the deck. The bottom of the collection area is a conveyor belt that sweeps the pins back under a low barrier; because the ball can't fit under the barrier, it finds its way into a separate hole.
The sweep — that bar that grabs knocked-over pins — comes down; the pinsetter grabs the still-upright pins, and the remaining pins are swept back to the conveyor belt. Meanwhile, the ball gets pushed up a very steep track via a "ball accelerator"; once it reaches the top of the ramp, it returns purely by force of gravity.
The pins are brought to the top of the device via an "elevator wheel" — essentially a wheel with little scoops designed to grab them (via Matt Bowlin, also on YouTube) — and dumped into a "pin distributor," which puts them into the pinsetter's holes via a system of tracks and funnels. Pins are bottom-heavy, so they always come out upright (via How It Works). Then, after you throw your second gutter ball of the frame, the pins are lowered back where they go.
So there you have it. Think about all that next time you're wearing ugly shoes and choking on decades-old cigarette smoke. Or the next time you go bowling.

redpajama_set_name: RedPajamaCommonCrawl


Trinidad is located on the Northern California Coast & claims to be the smallest, oldest & most westerly city in California. The historic lighthouse is the main attraction, but the beautiful beaches come in a close second. Rugged cliffs, rocks, and vacation homes for rent.
Trinidad is located along the rural coastline of Northern California. The small peninsula is named Trinidad Head.


CD Baby Licensing - Newsletter: We have you covered!
2/8/2019 Newsletter: We have you covered!
CDBabyLicensing.com is more than just your average one-stop music source. With over 250,000 licensable master recordings, let CD Baby Licensing supply you with the perfect cover song. If you are in need of a modern rendition of a classic song, or an acoustic version of a top 40 hit, CD Baby Licensing has you covered.


Clinigen Group plc,the global pharmaceutical and services company, has become a full member of the European Alliance for Access to Safe Medicines (EAASM) and Alliance for Safe Online Pharmacy in the EU (ASOP EU), both aiming to protect patients from the dangers of falsified or counterfeit drugs.
EAASM and ASOP are independent, not-for-profit organisations fighting counterfeit medicines and promoting patient safety and improved access to the right medicines, across Europe. A key focus in tackling this threat is educating patients and healthcare professionals of the dangers of internet pharmacies. Although legitimate in appearance, internet pharmacies are often not ethical; they knowingly sell substandard, falsified or counterfeit medicines and drugs that are untested and unapproved, even banned in a patient's own country. The vast majority do not require a prescription to supply a prescription-only drug, many of which can be dangerous and pose a serious health risk if self-prescribed.
Access to the right medicine is not just a European issue – this is a global crisis with 80% of the world's population, an estimated 5.5 billion people, experiencing low or non-existent access to medicines, many of which are essential1. Access to unlicensed medicines, which include drugs that have received regulatory approval but may not be available in a patient's own country, can help to meet this huge unmet need. However, this unmet need has created an opportunity for the illegal production and supply of counterfeit, falsified or sub-standard medicines for profit.
Globally, there has been a significant increase in the supply of substandard and counterfeit drugs; in 2014 the World Customs Organisation highlighted that the worldwide market for counterfeit medicines was worth $200 billion (£130 billion). Clinigen is dedicated to providing an ethical, compliant route for healthcare professionals to source medicines, meeting this need through its Global Access division, Idis GA.
Steve Glass, Group Managing Director, Clinigen, said, 'As the global market leaders in providing trusted access to unlicensed medicines to meet unmet medical need, we share many common goals with the EAASM and ASOP. Healthcare professionals and patients worldwide face major challenges in guaranteeing safe access to the medicines they need.
Access to www.pharmacy-life.co.uk is solely restricted to qualified healthcare professionals and students within the sector.


Fresh of the hiatus he proclaimed he'd take at the end of his sophomore album, Ultimate Victory, Houston hotshot Chamillionaire is back with part four of his acclaimed Mixtape Messiah series. While none of the projects have ever come close to matching the original Mixtape Messiah, this by far is a close second.Featuring guest appearances from southerners Slim Thug, Bun B, Killa Mike, "The Freestyle King" Lil Flip and others, the two disc Mixtape Messiah 4 provides a great combination of southern beats with poignant punch lines and lethal lyrics, displaying Cham's wide range of musical abilities.
I'd rather flip a drop 'Lac before I flip a Maybach."One of the more clever tracks is "Internet Nerd Revenge" where he shouts out several online rap websites, including AllHipHop.com, as he pretends he's a 17-year-old (white) suburban teenager, spending all his time locked up in his room writing bad reviews on Chamillionaire.
Cham pokes fun at himself, noting some of the complaints and gripes that critics—and fans—have expressed. Lines such as, "He don't rap about sippin' syrup/he don't rap that Houston rap/if I ever saw him in person, he'd be the rapper I'd refuse to dap," and, "Anyway, I heard a rumor he ain't beefin' what a lame/he didn't even dis 50 back when 50 Cent called out his name," shows that Cham does indeed keep his ears to the streets.
This provides a deep, introspective track that lacks from much of the mixtape. And lastly, the standout "2 MPH" featuring Bun B and Chamillionaire's former best friend and partner, Paul Wall, is a cousin of the famous "Still Tippin" anthem that talks about ridin' and drivin' slow while bangin' "Screw" through the streets of H-town.Mixtape Messiah 4 is full of witty punchlines and Chamillionaire getting back to his mixtape roots, because as he says, he left the mixtape game and no one grabbed it. However, in between the clever lyrics and him taking other rappers instrumentals and making them into songs that almost sound original, the "baller rap" can be overkill. Cham's talk of how much money he has and where he's been and who he knows gets annoying quickly—the mixtape lacks an overall "depth."And while Cham references his still newfound national and international fame, the long time Chamillionaire fan that's been down with him since his Swisha House days may be disappointed that his style and flow, and even subject matter is far apart from earlier in his career and his Color Changing Click era with Paul Wall.Mixtape Messiah 4 stands out and clearly displays Cham's many talents, but lacks the "meat and potatoes" that you know Cham can give.


text:
Q: Find word infront and behind of a Python list This is related to following question - Searching for Unicode characters in Python
I have string like this -
sentence = 'AASFG BBBSDC FEKGG SDFGF'

I split it and get list of words like below -
sentence = ['AASFG', 'BBBSDC', 'FEKGG', 'SDFGF']

I search of part of a word using following code and get whole word -
[word for word in sentence.split() if word.endswith("GG")]

It returns ['FEKGG']
Now i need to find out what is infront and behind of that word.
For example when i search for "GG" it returns ['FEKGG']. Also it should able to get
behind = 'BBBSDC'
infront = 'SDFGF'

A: Using this generator:
If you have the following string (edited from original):
sentence = 'AASFG BBBSDC FEKGG SDFGF KETGG'

def neighborhood(iterable):
    iterator = iter(iterable)
    prev = None
    item = iterator.next()  # throws StopIteration if empty.
    for next in iterator:
        yield (prev,item,next)
        prev = item
        item = next
    yield (prev,item,None)

matches = [word for word in sentence.split() if word.endswith("GG")]
results = []

for prev, item, next in neighborhood(sentence.split()):
    for match in matches:
        if match == item:
            results.append((prev, item, next))

This returns:
[('BBBSDC', 'FEKGG', 'SDFGF'), ('SDFGF', 'KETGG', None)]

A: Here's one possibility:
words = sentence.split()
[pos] = [i for (i, word) in enumerate(words) if word.endswith("GG") ]
behind = words[pos - 1]
infront = words[pos + 1]

You might need to take care with edge-cases, such as "…GG" not appearing, appearing more than once, or being the first and/or last word. As it stands, any of these will raise an exception, which may well be the correct behaviour.
A completely different solution using regexes avoids splitting the string into an array in the first place:
match = re.search(r'\b(\w+)\s+(?:\w+GG)\s+(\w+)\b', sentence)
(behind, infront) = m.groups()

A: This is one way. The infront and behind elements will be None if the "GG" word is at the beginning or end of the sentence.
words = sentence.split()
[(infront, word, behind) for (infront, word, behind) in
 zip([None] + words[:-1], words, words[1:] + [None])
 if word.endswith("GG")]

A: sentence = 'AASFG BBBSDC FEKGG SDFGF AAABGG FOOO EEEGG'

def make_trigrams(l):
    l = [None] + l + [None]

    for i in range(len(l)-2):
        yield (l[i], l[i+1], l[i+2])

for result in [t for t in make_trigrams(sentence.split()) if t[1].endswith('GG')]:
    behind,match,infront = result

    print 'Behind:', behind
    print 'Match:', match
    print 'Infront:', infront, '\n'

Output:
Behind: BBBSDC
Match: FEKGG
Infront: SDFGF

Behind: SDFGF
Match: AAABGG
Infront: FOOO

Behind: FOOO
Match: EEEGG
Infront: None

A: another itertools based option, may be more memory friendly on large datasets
from itertools import tee, izip
def sentence_targets(sentence, endstring):
   before, target, after = tee(sentence.split(), 3)
   # offset the iterators....
   target.next()
   after.next()
   after.next()
   for trigram in izip(before, target, after):
       if trigram[1].endswith(endstring): yield trigram

EDIT: fixed typo

redpajama_set_name: RedPajamaStackExchange


text:
Q: Create a multiple instances for a ViewModel in knockout.js I am creating a Pager control using knockout. I have a viewModel(PaginatorViewModel) which has properties "currentPageIndex", "itemsPerPage", "totalRecords" etc.
In each page, I have two pagination controls one on TOP and the other one on Bottom of the page.
In some cases, I have tabs,in each tab I have two pagination controls (TOP and Bottom).
When I was in Tab1 and moved to page 2 (currentPageIndex=2), the pagination control in the Tab2 also displaying the currentPageIndex as 2.
I want to use the PaginatorViewModel in all the tabs, but want maintain multiple instances i...e one instance for each tab.
How can I achieve this.
Here is my ViewModel,
var CustomPaginator = {
        //The current page index of the post being displayed.
        currentPageIndex: ko.observable(1),
        //specifies the page options
        pageOptions : ko.observableArray([25, 50, 100, 200]),

        //specifies the PageOptions will be shown or not.
        showOptions : ko.observable(true),
        //The maximum number of topics displayed per page.
        itemsPerPage : ko.observable(25),
        //Specifies the total no of records
        totalRecords : ko.observable(1),
        isVisible : ko.observable(false),
        //pageIndex is bounded to the text box, and the CurrentPageIndex contains the actual value.
        // this is to avoid the notifying the subscribers when the user enters the out of range values
        // like 0,and N , where N > no of pages
        pageIndex : ko.observable(1)
  };

How Can I Create an instance for this.
Thanks,
Ramesh

A: Create a viewmodel for each paginator, then bind each one to the element of the page you want it to be used in:
var page1 = new CustomPaginator();
ko.applyBindings(page1, $('#page1')[0]);

Do this for each one. You can also bind the same viewmodel to different parts of the page, if that's something you want to do.
You will need to change how you define your view model, so that you can create new instances of it:
var CustomPaginator = function()
{
    //your view model properies here
}


text:
Q: Why do MCU compilers for chips like AVR or ESP (used widely by Arduino) keep all strings in SRAM heap by default? There is a common technique used in Arduino world, where you can use PROGMEM macros in order to keep strings and other similar data in flash memory instead of SRAM to keep lower RAM usage, while sacrificing some performance - https://www.arduino.cc/reference/en/language/variables/utilities/progmem/
Basically, instead of storing these in SRAM, there is just some reference to a FLASH address where the string is stored and loaded from on the fly, in order to save RAM.
But I can't understand why do MCU compilers put all strings including local strings from functions into heap memory and keep them there all the time in the first place. Also I don't understand how compiler can "store anything in RAM instead of flash" - RAM is volatile, so compiler can hardly "store" anything in there as it's cleared on every reset. These strings still must be present in program image stored on FLASH, so why does it copy them from FLASH to RAM on each launch of the MCU? I was thinking that maybe whole program image must be loaded into RAM for execution, but then that doesn't make sense as these chips use harvard architecture and program is executed from FLASH already (and most of these chips have much bigger FLASH than RAM anyway, so whole image would never fit into RAM).
While I understand how to use workarounds that prevent this behaviour, I can't understand why this behaviour exists in the first place. Can someone shed some light on it? Why are all strings loaded into HEAP on start of the program by default? Is that for performance reasons?

A: The AVR architecture is different from many other common architectures in that the the code and data exist in completely different memory spaces (though the program memory can be accessed as data, as shown in PROGMEM documentation page to which you linked). This is one type of modified Harvard architecture.
Most other architectures that you're likely to use present themselves to the user as having code and data exist in the same memory space. While this is often also done with a modified Harvard architecture, they present themselves to the user as a von Neumann architecture, having a unified code and data memory space.

On AVR, to make initialized global or static data available to use as any other in-memory data, part of the program startup code copies the initialization data from program memory into RAM. This is generally done to program segments with names like .data or .rodata, depending on whether or not the variables in question are const.
Note that, contrary to what you say in your question, this data is not copied to the heap, it's stored in some portion of RAM chosen during program linking.
Using PROGMEM and the associated functions, you can directly access the data stored in the flash memory of the AVR device. This constant data is placed in a segment that won't be copied to RAM on startup, like .progmem.data, and so doesn't have space in RAM reserved for it.

The case with the Xtensa architecture, used by the ESP8266 and some members of the ESP32 family, is completely different. Contrary to what you state in your question, I don't believe that static or global objects which are const are copied into RAM by default, only those which can be modified (the .data segment would be copied as initialization to RAM, while the .rodata segment would not be).


text:
Dear YPG #2: Galley Girl and Trade Show Junkie
Courtesy of futurebook.net
Welcome to the second edition of our monthly Dear YPG series! If you have questions for our knowledgeable columnists, email them to youngtopublishing@gmail.com-–all questioners' identities will be kept anonymous!
What is NetGalley and how does it work? How do books end up on there?
—Galley Girl
Dear Galley Girl,
Before we look into NetGalley let us first investigate the root of the word "galley." Similar to an Advance Reader Copy (ARC), galleys (traditionally printed and bound) are early versions or "passes" of a manuscript. Galleys are sent to reviewers, booksellers, librarians, and various media outlets prior to release. Like ARCs, galleys are not final works, so they best serve as tools for sales, publicity and marketing group initiatives. With so much content being distributed electronically, it might come as no surprise that galleys too are now available in an electronic format. NetGalley is one of the premier third-party distributors for electronic galleys (e-galleys).
NetGalley uses a web-based service for access to its database of e-galleys uploaded directly from publishers. Being web-based means that registering and setting up a personal account is relatively straightforward for those with basic browser familiarity. There is no cost for setting up a personal account. Publishers pay a one-time setup fee and then a small monthly fee based on the amount of e-galleys they make available. Once an e-galley uploads to the server, publishers then select those who may have access to the content. E-galleys uploaded to NetGalley, available from many major publishers, are available on all major reading devices and tablets as long as the reader downloads Adobe Digital Editions software (also a relatively straightforward process). In addition to those restrictions, publishers can set up widgets for distribution that limit access to a specific amount of copies that may be distributed by a recipient. By restricting access in these ways, content is not open to public access, which could result in early copies of the work being illegally distributed.
But while it may be the most prolific, NetGalley is not the only e-galley distributor out there! Some publishing houses (Simon & Schuster most notable among them) have their own proprietary e-galley distribution programs, and Edelweiss (a partner of NetGalley's) handles e-catalogs and digital review copies for many of the major houses. More and more organizations and individuals, specifically bloggers and librarians, are taking advantage of e-galleys. There are still those who do not accept galleys electronically, so printed ARCs and galleys are not obsolete.
Those open to e-galleys are experiencing a full complement of resources and communities. As a result the numbers of reviews that generate from e-galleys are skyrocketing. In a January 2012 article from Media Bistro's online blog GalleyCat, Firebrand Technologies founder Fran Toolan tweeted a big statistic about his company's digital book review service today: "over 45,000 reviews were generated in 2011 from reviewers using NetGalley. A 500% increase over 2010." In spite of this, e-galleys still are yet to garner mainstream acceptance. Many reviewers within large organizations have not adopted the technology, and some notable individual reviewers are unwilling to accept e-galleys. Like all content these days, printed or electronic, e-galleys are traveling down that winding road toward the destination of coexistence.
For further dialogue on the topic, check out this article in Publishing Trends.
—Vincent Hamilton
Production Manager, Bloomsbury Publishing Plc.
What are the biggest trade shows in the industry, including BEA, and what purpose do they serve?
—Trade Show Junkie
Dear Trade Show Junkie,
The biggest trade shows each year are the Frankfurt Book Fair, London Book Fair, BookExpo America (BEA), and the Bologna Children's Book Fair. In the simplest of terms, trade shows exist so that industry professionals can spread the word about their books. The fairs are multifaceted and as a result are attended by a diverse group of publishing professionals. Agents attend to sell manuscripts and proposals to prospective publishers. The editors who attend Frankfurt and London are typically those with international taste, and they are searching for the next big manuscript. The foreign rights departments pitch their upcoming titles to publishers in other countries in hopes of making foreign sales. Scouts meet with foreign rights holders at both publishing houses and agencies in the hopes of finding good titles for their clients. Recently, some of the fairs created a public day where interested readers could see the inner workings of the publishing industry and get a sneak peak of upcoming titles.
In addition to all of the buying and selling that occurs at the trade shows, each day is packed with conferences, panels, and seminars that explore the newest trends and technology in publishing, the future of the industry, and the ever-changing methods of discoverability. These seminars give attendees rare access to the minds of leading industry professionals. At the end of each day there are dinner parties and meetings over drinks to attend. Rumor has it that the majority of deals are sealed during these coveted meeting times. Networking and making good connections is essential in the publishing industry, and, most importantly, the fairs serve as the best time to create and maintain good working relationships with publishers, agents, scouts, and editors throughout the world.
For information about these and other gatherings, check out the Publishing Events page here!
—Darcy Latta
Subsidiary Rights Assistant, Knopf Doubleday Publishing Group
Neither the Association of American Publishers ("AAP") nor the Young To Publishing Group ("YPG") represents nor endorses the accuracy or reliability of any advice, opinion, statement or other information displayed, uploaded or distributed through this website by any member, user, information provider or any other person or entity. Member-generated content published on this website reflects the views of the provider of the content, and does not constitute the opinion of the AAP, the Young To Publishing Group, or any of their respective members or divisions.
Tags: Advice, BEA, bologna, dear ypg, e-galleys, frankfurt, galleys, netgalley, trade shows


Click on the Big Book to listen to an audio version from A.A. World Services.
Click on the 12 & 12 Book to listen to an audio version from A.A. World Services.
Peter M. and Chris S. - Step Workshop - Minneapolis, MN, 2008, and Twelve and Twelve, from District 41 AA, Johnstown, Pa.
Talks by Father Marten, Talks by Father John Doe, Discussions by Sandy B., Saturday Morning Live and more from Silkworth.net.
AA # 3 Bill D.
Please note that many images and text are property of and are used with permission of A.A.. World Services.


To ensure every student gets noticed for his/her skill without any barriers.
#R is a socio engagement platform where you create or join rooms to seek, share and shine.
Hari has more than 19 years of global experience in the Embedded Technologies. Prior to founding Ipomo, he was the Group Head at Product and Engineering Solutions Division, Wipro Technologies. During these years, Hari was instrumental in growing the Industrial Automation group from 25 members to 400+ team in a span of 5 years. Hari was awarded the prestigious Wipro President Award in 2006 for his contribution in incubating and growing new accounts.
Vidyadhara S Talya has more than 17 years of experience in various domains which include Embedded , Entertainment and Automobile. Prior to joining ipomo, he was the Technical manager at Product and Engineering Solutions Division, Wipro.
Vidyadhara was instrumental in managing various projects related to Industrial Automation on the delivery front and growing new account too.
Shankar has more than 29 years of experience in various fields like Marketing, Production Engineering, Contract Manufacturing and Administration at various capacities in both Manufacturing and software industry. Prior to joining ipomo communications in the year 2011, he was heading administration at First Apex Software Technologies, Bangalore.
Shankar is an Electrical Engineer and has degree in Bachelor of Engineering from Bangalore University in the year 1984.
Prashanth has over 18 years of experience of working in various verticals including Advertising, ERP Sales. He was Associate Dean Rai Business School, Rai University, New Delhi (part of Usha Ispat Group). He published a book on Marketing Management for both UG and PG students of Rai University. Prior to joining ipomo, he was Deputy Director Indian Knowledge Corporation Pvt Ltd, heading southern operations based out of Bangalore.
Prashanth has done his MBA from SDM Institute for Management Development, Mysore and Business Management Graduation from University of Mysore, Mysore.
Rajiv has nearly 22 years of management experience with 16 years in Infosys Technologies Ltd a leading global company that provides consulting and IT services. Rajiv was one of the founding members of Infosys BPO (earlier Progeon) , the business process outsourcing (BPO) subsidiary of Infosys Technologies where he was the Head of Operations and subsequently the Head of Business Transformation. Rajiv was COO of On Mobile prior to becoming a prominent Private Investor. Rajiv is an alumni of IIT Delhi.
Rajiv is on the board of ipomo.
Sanjeev Joshi is an investor and an entrepreneur. He is the founder of technology investing outfit Ebhana Technologies and also a director on the board of Invendis Technologies. Sanjeev worked at Infosys technologies for 13 Yrs prior to becoming an investor and an entrepreneur. Sanjeev is an alumni of Xavier Institute of Management.


This study of inflammatory muscle diseases-polymyositis and dermatomyositis and related disorders-will examine what causes these diseases and describe the clinical features (signs and symptoms) associated with them. Inflammation and degeneration of skeletal muscles in these disorders leads to weakness and muscle wasting. The skin, lungs and other organs may also be involved.
Blood sample for genetic studies.
Muscle biopsy-removal of a tissue sample for microscopic examination. Under local anesthetic, a 1/2- to 1-inch long incision is made in the thigh or upper arm, and a small piece of muscle is removed.
Electromyography-measurement of the electrical activity of a muscle. A needle is inserted through the skin into a muscle to record its electrical activity.
Magnetic resonance imaging-visualization of organs or tissues, using a magnetic field and radio waves. The patient lies on a table inside a narrow cylinder (the MRI scanner) with a strong magnetic field for the scanning.
Manual muscle strength testing by a physiotherapist.
Swallowing studies using ultrasound (imaging using sound waves) and X-rays (barium swallow) to evaluate swallowing and speaking abilities.
Pulmonary function tests-measurement of movement of air in and out of the lungs. The patient breathes into a machine to evaluate lung function.
Chest X-rays to evaluate lung function.
Electrocardiogram and, if necessary, Holter monitoring (measurement of the electrical activity of the heart) and echocardiogram (ultrasound imaging of the heart) to evaluate heart function.
Apheresis-collection of white blood cells for research. Whole blood is collected through a needle placed in an arm vein. The blood circulates through a machine that separates it into its components. The white cells are removed and the rest of the blood is returned to the body through the same needle or through a second one placed in the other arm.
MR guided muscle biopsy-measurement of glycogen in muscle tissue using magnetic resonance imaging. Certain patients may undergo this experimental procedure to compare MRI findings with those of muscle biopsy. The affected muscles are identified using MRI and the biopsy incision is made. MRI is then used to guide the biopsy needle to the muscle and a small piece is removed.
Patients who are eligible for experimental treatment studies will be offered the opportunity to join them. Others will be advised of treatment recommendations.
Polymyositis, dermatomyositis and related disorders, also known as the idiopathic inflammatory myopathies (IIM), are an uncommon, heterogeneous group of diseases. This is an omnibus protocol designed to continue our description of this rare group of diseases, further delineate important groups of patients, and obtain useful material for further study of immunological abnormalities, pathogenesis and etiology of IIM. Often the diagnosis of an IIM can be confused with other illness (such as adult-onset dystrophies), and therefore, we will be evaluating patients with other illnesses (who are referred with a preliminary diagnosis of an IIM). Patients evaluated with IIM will receive (with informed consent) the best standard therapies available and consideration for entry into any therapeutic protocols. MRI will be performed on healthy volunteers to help develop a mathematical method for quantitating edema of muscle MRI in patients. MRI/PET will be performed on some patients and on healthy volunteers to evaluate its role in understanding muscle disease.
Plotz PH, Dalakas M, Leff RL, Love LA, Miller FW, Cronin ME. Current concepts in the idiopathic inflammatory myopathies: polymyositis, dermatomyositis, and related disorders. Ann Intern Med. 1989 Jul 15;111(2):143-57. Review.
All eligible patients are invited to participate in this protocol. Patients are adults and minors, aged 16 or higher, with possible idiopathic muscle disease (suspected or confirmed). Since both men and women are affected with the disease, both sexes will be studied. All ethnic and racial groups are at risk and will be included. Healthy volunteers will be eligible only if they are adults aged 18 or older and only if they are willing to provide informed consent.
Subjects with severe active infection (such as requiring intravenous antibiotics) or other co-morbidities that in the opinion of the investigator would warrant exclusion.
Subjects or their legal guardians who are unable or unwilling to give informed consent/assent.


Discerning drivers will appreciate the 2012 Jeep Wrangler Unlimited. Under the hood you'll find a 6 cylinder engine with more than 270 horsepower, providing a smooth and predictable driving experience. Four wheel drive allows you to go places you've only imagined. A wealth of standard features means that you no longer have to sacrifice. Such as remote keyless entry, a trip computer, an outside temperature display, front bucket seats, front fog lights, power door mirrors, skid plates, and 1-touch window functionality. Audio features include a CD player with MP3 capability, steering wheel mounted audio controls, and 7 speakers, providing excellent sound throughout the cabin. Jeep ensures the safety and security of its passengers with equipment such as: dual front impact airbags with occupant sensing airbag, integrated roll-over protection, traction control, brake assist, ignition disabling, and 4 wheel disc brakes with ABS. For added security, dynamic Stability Control supplements the drivetrain. We have the vehicle you've been searching for at a price you can afford. Please don't hesitate to give us a call.


text:
Prosecutor raises concerns about fairness issues for some defendants in Hancock County courts who are not fluent in English
Jessica Karins, Daily Reporter
Sunday, January 24, 2021 11:45 AM
Brent Eaton, Hancock County prosecutor
GREENFIELD — County officials are in dispute after the county's prosecutor raised concerns that some defendants in the court system may be treated unfairly during sentencing because they are not fluent English speakers.
Prosecutor Brent Eaton is advocating for general sentencing guidelines that would help avoid the issue of unequal punishment, but other officials say there is no need for a policy change.
Eaton initially raised the concern with the Hancock County Board of Commissioners, saying some defendants may be rejected from participating in the Hancock County Community Corrections program, rather than serving jail time, because the county is not equipped to provide them services in their native language. At Eaton's request, the county commissioners sent a letter on the subject to community corrections.
The letter was presented to the Hancock County Corrections Board at its most recent meeting, along with a list of potential guidelines.
"The commissioners are concerned the current assessment for individual qualification and participation is not uniform, and is arbitrary and too subjective," the letter said. "The lack of certainty in deciding who qualifies for community corrections is not conducive to the just and expedient resolution of criminal cases in the county."
A list of possible guidelines the board considered included factors like the severity of the pending charges, past criminal history, past-due fees with community corrections and stability of residence.
Hancock County Circuit Court Judge Scott Sirk objected, however, saying community corrections currently does not make any decisions about who is placed into the program. Because the county's work-release program has been suspended due to COVID-19, Sirk said, all decisions made are about whether defendants qualify for home detention, and those determinations are made by judges.
The board of corrections voted to table the guidelines and referred the matter to the county commissioners. It was discussed again at their meeting on Tuesday, Jan. 19.
"Everyone in community corrections was ordered there by a judge," Sirk said at the commissioners' meeting. "…There's nothing we can do to assist you guys with this letter."
Sirk, who was joined at the meeting by fellow judges Dan Marshall and D.J. Davis, said judges making sentencing decisions will take into account input on a defendant they receive from community corrections officials, the same way they will review input from the prosecutor, defendant and the victim, if there is one.
"They often know the defendant better than I do," he said.
However, Sirk said, the judges make the final decision.
Sirk said community corrections is often able to accommodate Spanish speakers by requesting help from Marion County corrections personnel, but they can't always do that if the person in question speaks a language that isn't widely spoken in Indiana.
"If we get a Swahili speaker in there, I'm not going to be able to accommodate them on community corrections," he said. "We accommodate to the extent that we can."
After hearing Sirk's arguments, the commissioners agreed there was no need for revised guidelines at the current time, and said the issue should have been addressed directly with the corrections board.
Community corrections director Wade Kennedy said he believed the matter could be considered settled, saying the board of corrections would not take any further action on sentencing guidelines for the time being, at least until work release resumes.
"I feel like everybody's on the same page now," Kennedy said.
That's not the case for Eaton. From the prosecutor's perspective, he said, there's no getting around the fact that changes have to be made to accommodate a growing non-English-speaking population. The courts, he said, are obligated to make fair and equitable decisions at all times, in every case.
Eaton said the prosecutor's office will be happy to work with other parts of the criminal justice system to make that happen, but more resources will likely have to be allocated to make it possible.
"There may be some costs with it, but it's necessary," he said.
Eaton said he hopes the corrections board will still decide to adopt the proposed guidelines. Many other communities, including Rush and Hamilton counties, have similar protocols in place, he said.
"(Having standardized guidelines) helps us to make good, objective decisions that are congruent with the obligations we have," he said.
Marie Castetter, a former Hancock County judge who has worked as a prosecutor and is now a defense attorney, said she didn't observe any sentencing disparities during her time with the county courts between those who are native English speakers and those who aren't. However, she said, the issue does pose a challenge.
"It is difficult for a lot of courts to be able to provide those types of services," she said.
In order to provide translation for the court, an individual must be a certified court interpreter, and those are not easy to find. Castetter said the county courts currently have one person who can provide Spanish translation, and that person provides the service in other counties and isn't available every day of the week.
"The system can always use more resources," Castetter said.
© 2022 Daily Reporter


The popular cartoon Teenage Mutant Ninja Turtles (TMNT or Ninja Turtles) became very famous in the late 1980s. Comprising of Leonardo, Donatello, Raphael and Michelangelo, the four fictional anthropomorphic turtles were trained by their anthropomorphic rat sensei, Splinter, in the art of ninjutsu. Specialising in fighting petty criminals, evil overlords, mutated creatures and aliens' invaders, they thrive to protect New York City residents.
City Centre Muscat, the first and largest lifestyle shopping destination in Oman, owned and operated by Majid Al Futtaim will present a world-class entertainment 'The Nickelodeon's Teenage Mutant Ninja Turtles (TMNT)' show during Muscat Festival.
Going to make their first-ever stage appearance in the Sultanate, the powerful turtles will present three power-packed shows 'Turtle Power' at City Centre Muscat at 5:00 pm, 6:30 pm and 8:00 pm from 24 - 30 January.


text:
President Donald Trump speaks from Victory Lane prior to the NASCAR Cup Series 62nd Annual Daytona 500 at Daytona International Speedway on Feb. 16, 2020, in Daytona Beach, Florida. (Chris Graythen / Getty Images)
Trump Commandeers Radio To Send All 40 Drivers a Message Before Daytona 500: 'God Bless'
President Donald Trump addressed all the drivers and their crews at the Daytona 500 race in Florida on Sunday, using the official radio to wish them a safe race and God's blessing.
"Drivers, this is President Trump," he said, as the racers circled the track awaiting the green flag.
"It was an honor to open the Daytona 500. Have a phenomenal day. Have a great race. Be safe. God bless you. We love you," added Trump, who served as grand marshal for the 62nd running of the event.
Trump made an impressive entrance to the event, doing a flyby on Air Force One before the aircraft landed at neighboring Daytona Beach International Airport.
"I have been to a lot of Daytona 500s," Fox commentator and NASCAR legend Jeff Gordon, who won the contest three times, said.
"Never have I felt the excitement and energy."
"We've had great races on the track, but we've got the president landing right now and the fans are pumped up. I mean, wow, what a day!" he added.
Air Force One, carrying President @realDonaldTrump, arrived in Daytona, where he served as Grand Marshal for the Daytona 500.
Race coverage continues today at 4p ET on FOX. pic.twitter.com/pC1At3YKeF
— FOX: NASCAR (@NASCARONFOX) February 17, 2020
Did you like Trump's entrance to the Daytona 500?
Yes: 100% (192 Votes)
Fellow NASCAR great Jamie McMurray, who came in first in 2010 at Daytona, agreed.
"It's one of the most incredible things I've ever seen!" he exclaimed.
"They say that plane's 800 feet above the race track right now. What an entrance by the president of the United States."
KTLA reported an estimated 100,000 people were on hand for the race.
Wild Video: 1983 Subaru Flies Over Helicopter at 160 MPH in Jaw-Dropping Stunt in Florida
"The Daytona 500 is a legendary display of roaring engines, soaring spirits and the American skill, speed and power that we've been hearing about for so many years," Trump told the crowd.
"The tens of thousands of patriots here today have come for the fast cars and the world-class motorsports. But NASCAR fans, never forget that no matter who wins the race, what matters most is God, family and country,'' he continued, drawing cheers from the crowd.
Trump's armored limousine, known as The Beast, led the racers in a warm-up lap on Sunday.
#DAYTONA500 pic.twitter.com/fT8L0EZqXh
— Donald J. Trump (@realDonaldTrump) February 17, 2020
Later, the president kicked off the race with those iconic words, "Gentlemen, start your engines!"
After running 20 laps, the Daytona 500 was rain-delayed until Monday afternoon at 4 p.m. Eastern Time.
Trump returned to Washington on Sunday evening and is slated to make a four-stop western swing, starting in Los Angeles on Tuesday for a fundraiser, followed by "Keep America Great" campaign rallies in Phoenix, Arizona, on Wednesday, Colorado Springs, Colorado, on Thursday, and Las Vegas, Nevada, on Friday.
Donald Trump, Florida, NASCAR, US news


text:
Police respond to 2 unrelated incidents within a mile of each other
Police arrested Chance Bellanceau, 29 of Portland, and Lydia Mills, 41, of Bethel, in separate unrelated incidents in Bethel this week.
Police vehicles line Androscoggin Road near where Lydia Mills, 41, of Bethel was arrested after a four-hour standoff at her 7 Acres Road residence in Bethel on Jan. 14. Rose Lincoln/Bethel Citizen
BETHEL — The Oxford County Sheriff's deputies were in Bethel for two unrelated incidents this week.
On Saturday, January 14, six police cars a lined Androscoggin Road off Barker Street. Two more vehicles were at the house and an ambulance was across Baker Street on standby.
"There is a single person in the house that we're talking to," said Deputy Matthew Baker. He was blocking entry to where 41 year-old, Lydia Mills had assaulted her husband. She would not exit the house and police believed she had a gun.
At 1:41 p.m., Amy and David Hanscom had been waiting on standby in their ambulance for two hours and would wait another two hours before police made the arrest.
Mills surrendered to deputies after 2 p.m. She was charged with two counts of domestic violence assault and was transported to Oxford County Jail.
Chance Bellanceau, 29, of Portland is charged with assaulting three Oxford County Sheriff's deputies with saw blades and other items Thursday night at this home at 339 West Bethel Road in Bethel, Chief Deputy James Urquhart said. He is being held at the Oxford County Jail in Paris. Rose Lincoln/Bethel Citizen
West Bethel Road
Two days earlier, on Thursday January 12, and less than a mile away at 339 West Bethel Road, police arrested a Portland man, Chance Bellanceau, age 29.
The Sheriff's Office had received a call at 8:45 p.m. Thursday from the homeowner at 339 West Bethel Road for a reported unwanted, out-of-control person identified as Bellanceau.
According to Oxford County Chief Deputy Chief James Urquhart, Bellanceau was confronted by deputies and was highly agitated and combative. During the incident, he began throwing saw blades, shovels and other items at them. After deputies called for additional law enforcement units, Bellanceau was taken into custody after a physical altercation with officers.
During the altercation and arrest, three deputies were injured. They were either treated at the scene or at a local hospital and released and are back on duty, Urquhart said.
Bellanceau was charged with three counts of assault on an officer and one count each of reckless conduct with a weapon, aggravated criminal mischief, refusing to submit to arrest and violation of conditions of release, Urquhart said in a news release.
Comments are not available on this story.
It's a new year, start fresh: reuse, recycle, reduce, Part 1
After three visits to Ukraine last year, Bethel man continues to be inspired by the strength of its people
bethel maine
Read the ePapers
Bethel Citizen Headlines
Sign up and get local news headlines in your inbox every Thursday at 5 a.m.


text:
Q: How to serialize transient fields in the model via FlexJson? I am using Play Framework to expose REST API, which returns some JSON objects.
To simplify the API usage, I would like to return a "calculated" field in the response.
Unfortunately, in my tests, while FlexJson does not ignore the transient model fields completely, but always sets them to 'null'.
More details:
In the model class, I define:
@Transient
public String currencyName;

The only constructor of the class set the value to "dollar" (for debugging purposes):
this.currencyName = "dollar";

When serializing the class using FlexJson, when the 'currencyName' field is not specified in the include/ exclude - the result always looks like:
"currencyName":null

Any idea what got wrong, and how to get the field value serialized into JSON?
Thanks in advance.

A: By definition if your field is transient it will not be serialized. Perhaps this field should not be transient in your application if the state matters.


The Ohio Nature Blog: Garlic Mustard!
Garlic Mustard Identification and Control from Barbara Lucas on Vimeo.
Take a second to check out this video about Garlic Mustard, a nasty invasive plant here in eastern and midwest woodlands. Our natural resource managers spend time and money managing invasive plants- I think some tend to discount the threat of invasives, but this video by Wisconsin Family Forests puts it all out there. It humanizes invasives a little too much for my taste, but overall, it is very well done.
Very interesting and the plant looks familiar to me, so I will have the check the woods that I visit this spring looking for it. It is attractive, so it is a shame it is also invasive. With all the deer in this area, I'm sure it would spread like wild fire. I don't know how some of these invasive plants can be stopped. Even when you know about it, what can you do?
I have been pulling this plant up and tossing it on the ground when it starts to bloom but didn't know it could still produce seed. So, that's why I haven't eradicated it from our woods (although I definitely have decreased its spread). From now on, I will put the plants in plastic bag or bucket--then put the plants in my firepit when I make a fire. That should do it! Great video.
Thanks for the info. I'll have to see if that grows in our zone, too.
Mary- I bet you have GM in Evansville. You can do what they show in the video- Pick it, bag it, and get rid of it.
Appalachian Lady- Glad you enjoyed the video. The plants can go to seed, so they definitely have to be destroyed.
Lana- Good question- Not sure if GM is naturalized in your area or not.
It is the norm for me to see garlic mustard when I got out and naturalize in Ohio.
I'm glad it's here. I like to eat it!
Don't you think that is just a wee bit selfish of a perspective? On the whole, Garlic mustard is one of the largest threats to eastern North American forests. Hopefully you'll learn to both love and hate garlic mustard. Perhaps you can harvest it commercially, sell it, and make a few bucks while helping the forests too?
My back door neighbors have an infestation of garlic mustard. It is everywhere in their yard. I spend pretty much every week-end pulling garlic mustard from my yard and so do my next door neighbors. (our yards are quite large). I have offered the back door neighbors to pull the garlic mustard from their lot but they will not allow it. They do nothing about it either. Do I have any recourse? Who should I go to to get them to do something about it?
If you are in Ohio, there are no state laws that would require someone to remove garlic mustard from their property. Again, this advice is if you live in Ohio, but you do not have any options beyond working with them.


For a very young nation, we have accomplished so much. We have produced some of the world's greatest cultural success stories in music, film, sports, as well as visual, literary, and performing arts, science and innovation. We have a lot to be proud of. We believe that our greatest asset is our people, those who have succeeded and those who will be inspired to follow in their footsteps.
Canada's Walk of Fame believes that Canada is an amazing country. We are peaceful, diverse and harmonious. We are socially responsible, creative, driven, confident and successful. We are also polite and humble.


A little earlier this year we found a New Zealand pressing of Paul McCartney and Wings controversial 'Give Ireland Back to the Irish' dating from 1972. As was the case in most of the rest of the world this was on a custom Apple label.
This entry was posted in Beatles, Beatles Collecting, Paul McCartney, Wings and tagged Apple Records, Beatles, Beatles Collecting, Give Ireland Back to the Irish, Paul McCartney, Wings by beatlesblogger. Bookmark the permalink.


Emerson's Rosemount Analytical OPM 3000 Opacity Dust Density Monitor stackmounting transmissometer sensor system includes a retro reflector mounted on one side of the stack and an optical transceiver on the other. The OPM 3000 ratio measurement technique gives incessant automatic compensation to secure prolonged instrument stability and precision for variations in light source intensity. The OPM 3000 is unaffected by light source aging due to its insensitivity to the absolute intensity of the light source.