text:
\section{Conclusions}
\label{sec:conclusions}

In this paper, we propose an alternative solution for solving the source device identification problem on stabilized videos.
Specifically, we re-synchronize video frames and device reference fingerprint by estimating the re-alignment transformation with a modified version of the Fourier-Mellin transform.
In doing so, we search the scaling and rotation parameters in the frequency domain, whereas unknown translations can be estimated leveraging global optimization strategies.
Moreover, we propose to use a reduced amount of Fourier-Mellin transform samples to estimate the warping configuration, thus enabling fast computations.

The experimental campaign is conducted on a publicly available dataset.
Results are promising and show enhanced performance with respect to state-of-the-art.
This is especially true in situations where only scale and rotation parameters should be estimated: experiments performed in a synthetic set-up reveal that the proposed method can be much faster and accurate than existing methodologies.
\section{Introduction}
\label{sec:intro}
Multimedia forensics keeps developing technologies to identify the camera originating a digital image or a digital video.
Currently, the most promising technique
 is based on the analysis of \gls{spn} or \gls{prnu}, left by the acquisition device into the visual content.
This trace is useful to identify the video source since it is universal (i.e., every camera sensor introduces one) and unique (i.e., \gls{prnu} from two different sensors  are uncorrelated)~\cite{lukas2006digital, mondaini2007detection}.
Moreover, \gls{prnu}  has proved to be significantly robust to commonly used processing, like JPEG compression~\cite{lukas2006digital}, or uploading to social media platforms~\cite{castiglione2013experimentations,  bertini2016social}.

\gls{prnu}-based source identification process consists in verifying the match between a query image or video frame and a fingerprint characterizing a reference camera.
The strategy involves two main steps:
i) a reference fingerprint is derived from still images or videos acquired by the source device;
ii) the query fingerprint is estimated from the investigated content and then compared with the reference to verify the possible match, in form of a correlation.
If the query content was acquired by the reference camera, then a high correlation is expected.

The previous scheme works under the hypothesis of perfect geometrical alignment between the reference and test fingerprints.
If a geometrical transformation is applied to the query content, a pixel grid misalignment between the query and the reference fingerprint arises, thus hindering the detection.
Such a case occurs in multiple scenarios:
when an image or a video has been acquired with different resolution settings or it is cropped and resized due to the upload in a social media;
if a malicious user slightly distorts the content to remove the sensor traces;
when a query video is tested against a reference estimated from still images;
when a video has been created in presence of electronic image stabilization.
In all these cases, the \gls{prnu}  extracted from the query is misaligned with the reference fingerprint, and thus a geometric re-synchronization between them has to be carried out before the matching operation.

The first solution to this problem was proposed in~\cite{goljan2008camera}, where the case of cropped and downscaled images was studied.
The authors show that it is possible to parameterize the \gls{ncc}  between the reference fingerprint and the query noise with respect to the scaling factor.
The \gls{ncc} peak position for a given scaling factor provides an estimate of the shift.
While the \gls{ncc} can be efficiently computed in the Fourier domain, a brute force search is needed to determine the scaling factor.
By following the same rationale, more recent papers \cite{taspinar2016source, iuliani2019hybrid, Mandelli2019} extend the proposed methodology also considering rotation and the more challenging scenario of video analysis.
As a matter of fact, modern acquisition pipelines usually include electronic stabilization that undermines \gls{prnu}-based attribution technique. In these cases, \gls{prnu}-based techniques only work if geometric transformations are properly estimated and compensated for, which is a computational complex operation.

In this paper, we focus on the problem of camera attribution of stabilized video sequences based on \gls{prnu}.
Specifically, we propose a method to align frame fingerprints with the reference \gls{prnu}
by recovering the scaling, shift and rotation parameters introduced by electronic stabilization.
We overcome the problem of computational complexity by searching for scaling and rotation parameters in the frequency domain thanks to a modified version of the \gls{fm}.
Results obtained on the well known Vision dataset \cite{shullani2017vision} show that the proposed method provides extremely efficient results whenever rotation and scaling operations are applied to video frames.
When also shift is taken into account, the gain compared against the state-of-the-art \cite{Mandelli2019} depends on the video content.

\section{Proposed method}
\label{sec:method}
In order to attribute a video frame $\I$ to a device whose reference fingerprint is $\Kiv$, we follow a pipeline based on a few steps:
(i) noise extraction;
(ii) geometric transformation estimation;
(iii) geometric compensation and matching.
In the following, we illustrate all the steps of the pipeline.

\vspace{.5em}\textbf{Noise extraction.}
As in the common \gls{prnu}-based attribution algorithm, we extract the noise residual $\W$ from frame $\I$.
This is done using the strategy proposed in \cite{lukas2006digital, chen2008determining}:
(i) the noise is extracted through wavelet-based denoising;
(ii) a series of post-processing steps (e.g., zero-averaging rows and columns, Wiener filtering, etc.) are applied to further enhance the noise residual $\W$.

\vspace{.5em}\textbf{Geometric transformation estimation.}
In order to match $\W$ and the fingerprint $\Kiv$, we first need to search for the geometrical transformation that might link them.
In principle, assuming that video frames warping can be approximated by a similarity transformation \cite{iuliani2019hybrid, Mandelli2019}, aligning a noise residual and a reference device fingerprint by means of Fourier-Mellin may seem straightforward.
In practice, differently from the Fourier-Mellin theory presented in Section~\ref{subsec:fm_theory}, the two terms to compare (i.e., $\W$ and $\Kiv$) are not exactly one the transformed version (by means of a similarity transformation) of the other.
First, the geometric transformation introduced by stabilization is not necessarily a similarity, but can include perspective distortions (on the entire frame or a localized portion of it) as well \cite{Grundmann2018, Wang2018}.
Second, the noise residuals of video frames may contain scene content and noise contributions which are not present in the reference device fingerprint.

The primary consequence of this dissimilarity is that selecting only the Fourier magnitudes for estimating scale and rotation between the two terms, as reported in \eqref{eq:02_logpolar_theory_magnitude}, may be not precise.
Indeed, we verified that phase correlation between $\FMT \{ \Kiv \}$ and $\FMT \{\W\}$ does not show a pronounced peak, thus leading to a strongly hindered estimation of scale, rotation and shift.
In order to overcome this issue we modify the Fourier-Mellin pipeline in two ways.

First, we propose to embed the phase term of the Fourier transform in addition to the magnitude to the Fourier-Mellin pipeline.
The modified Fourier-Mellin transform of $\I$ can be thus defined as:
\begin{equation}
\MFMT\{\I\} = \LP \{\F\},
\end{equation}
where $\LP \{\F\} $ is the log-polar mapping of the image Fourier transform (including magnitude and phase).
On one hand, phase adds more information, which is very useful for angle and scale estimation.
On the other hand, this operation comes with a cost.
The natural drawback of this approach is that we cannot isolate anymore the estimation of scale and rotation from the estimation of the shift.
Indeed, in this case, phase correlation does not exclusively depend on scale and rotation transformations, but also on translation between the two terms.
The Fourier-Mellin pipeline works only if $ \W $ and $\Kiv$ are almost perfectly aligned in terms of translation, i.e., if their mutual shift is basically $ 0 $ pixels in both horizontal and vertical directions.
In other words, including the Fourier phase term, we first have to correctly realign the \gls{prnu} traces left on the noise residual with those on the reference fingerprint for what concerns the relative shift, then we can convert the Fourier transforms into log-polar domain and estimate the remaining parameters.

The second proposed modification helps enabling faster computations.
It has been shown that a properly selected portion of the \gls{prnu} frequency spectrum can be sufficient to achieve good attribution performance (e.g., through subsampling \cite{bondi2019improving}).
In this vein, notice that a 2D frequency band becomes a rectangular band if the frequency spectrum is converted in log-polar domain.
We propose to literally cut the frequency content of $\Kiv$ and $\W$ by cropping the log-polar Fourier transform of $\Delta_{\rho}$ samples along the $\rho$ dimension.
The cropping center corresponds to the coordinate of the highest energy peak of $\MFMT \{ \K \}$ evaluated as a function of $\rho$.
Despite this step might seem irrelevant, this \textit{strongly} reduces the amount of frequency samples to be correlated, thus lowering the computational cost.
We define the modified Fourier-Mellin transform followed by cropping as:
\begin{equation}
\MFMT_{\Delta_{\rho}}\{\I\} = [\LP \{\F\} ]_{\Delta_{\rho}}.
\end{equation}

\begin{figure}[t]
	\centering
	\includegraphics[width=\columnwidth]{figures/fm_pipeline.pdf}
	\caption{Scheme of the proposed method for similarity estimation between noise residual $\W$ and reference device fingerprint $\Kiv$. The global optimizer searches for shift candidates, while the proposed $\MFMT_{\Delta_{\rho}}$ transform provides an estimate of scale and rotation for each shift.}
	\vspace{-1.3em}
	\label{fig:fm_pipeline}
\end{figure}

By considering the added phase term and the frequency cropping step, the best similarity parameters can be estimated solving a maximization problem.
Formally,
\begin{equation}
\hat{s}, \hat{\alpha}, \hat{\c} =\underset{s \in \SR,\alpha \in \TR, \c \in \CR}{\arg \max}  \phi [ \MFMT_{\Delta_{\rho}} \{\W\},  \MFMT_{\Delta_{\rho}} \{\Kiv(\x - \c) \} ],
\label{eq:fm_max_problem}
\end{equation}
where $\phi$ represents the phase correlation and vector $\x$ refers to horizontal and vertical pixel coordinates.

Notice that, for each shift candidate value, scale and rotation parameters can be very quickly estimated in closed form through phase correlation.
Therefore, we only need to optimize over different shift values.
However,
gradient descent strategies to solve \eqref{eq:fm_max_problem} suffer from the non-convex behavior of phase correlation as a function of the shift.
Especially in video sequences characterized by outdoor scenarios or user motion, the actual peak value can be hard to find with gradient descent algorithms.
The maximization problem as a function of the shift can be solved by resorting to global optimization techniques.
It is worth noting that the translation between $ \W $ and $\Kiv$ can be assumed with slight approximation to imply integer shift in horizontal and vertical directions, i.e., to represent a certain number of pixels.
We propose to exploit a global optimization algorithm known as genetic algorithm that allows an efficient estimation of integer parameters \cite{matlab_opt}.
In a nutshell, our
method is shown in Fig.~\ref{fig:fm_pipeline}.

\vspace{.5em}\textbf{Geometric compensation and matching.}
After estimating the similarity transformation $\Txf$, last steps consist in:
(i) applying $\Txf$ to $\Kiv$ in order to realign the \gls{prnu} traces left on $\Kiv$ with those of $\W$;
(ii) resorting to \gls{pce} as strategy for a correct source device identification.
We compute $ \Pfm $ as
\begin{equation}
	\Pfm = \textrm{PCE} (\W,  \Txf(\Kiv)).
	\label{eq:fm_pce_test}
\end{equation}
As in standard \gls{prnu} attribution tests, by thresholding  $ \Pfm $ it is possible to detect whether the frame under analysis belongs to the tested device.
In case multiple frames are available, it is possible to repeat the whole procedure and fuse the results obtained with different frames (e.g., maximum \gls{pce} picking, majority voting, etc.).

\section{Background and problem statement}
\label{sec:problem}
In this section we introduce the background on Fourier-Mellin (FM) transform and define the problem we are tackling in this paper.

\vspace{.5em}\textbf{Fourier-Mellin Transform.}
\label{subsec:fm_theory}
The \gls{fm} transform enables to estimate scale, rotation and shift transformations between two images in closed form \cite{reddy1996fft}.

Given an image $\I$, the \gls{fm} transform is expressed as the log-polar mapping of the magnitude of the image Fourier transform, i.e.,
\begin{equation}
\FMT\{\I\} = \LP \{|\F| \},
\end{equation}
where $ \LP \{ \cdot \} $ is the operator computing the log-polar mapping, and $|\F|$ is the magnitude of the Fourier transform.

Let us consider two images $\Ia$ and $\Ib$ that are linked through a similarity transformation, i.e.,  $\Ia = \Txab \lbrace\Ib\rbrace$, where $\Txab$ applies the transformation identified by the matrix
\begin{equation}
\Tab= \left[\begin{matrix}
\sab \cdot \cos \alphaab, & -\sab \cdot \sin \alphaab, &\cabx\\
\sab \cdot \sin \alphaab, & \sab \cdot \cos \alphaab, &\caby
\end{matrix}\right],
\end{equation}
where $\sab$ represents scaling, $\alphaab$ rotation and $\c = [\cabx, \caby]$ horizontal and vertical shift.
In this scenario, it is possible to show that $\FMT\{ \Ia \}$ is a shifted version of $\FMT\{ \Ib \}$.
More formally,
\begin{equation}
\FMT\{ \Ia \}(\rho, \alpha) = \FMT\{ \Ib \}(\rho - \log \sab, \alpha - \alphaab),
\label{eq:02_logpolar_theory_magnitude}
\end{equation}
where $ \rho $ is the radial coordinate and $ \alpha $ the rotational coordinate.
It is therefore possible to estimate scale $\sab$ and rotation $\alphaab$ by looking at the peak position of the phase correlation function between $\FMT\{ \Ia \}$ and $\FMT\{ \Ib \}$ independently from shift \cite{reddy1996fft}.
Once $\sab$ and $\alphaab$ are estimated, the two images can be realigned apart from translation.
The relative shift can then be estimated by looking at the peak position of the phase correlation computed between the two realigned images in the pixel domain \cite{reddy1996fft}.

\vspace{.5em}\textbf{Problem formulation.}
\gls{prnu} is typically modeled as a multiplicative noise pattern introduced by any device in all acquired images or videos \cite{lukas2006digital, chen2008determining}.
In the field of forensics analysis, it is well known that \gls{prnu} can be exploited for inferring whether an image was shot by a certain device.
For instance, given a test image $\I$ and a device PRNU $ \K$, we can compute the \gls{pce} between the noise residual $\W$ extracted from the image and the \gls{prnu} pixel-wise scaled by $\I$, i.e., $\textrm{PCE}(\W, \K \cdot \I )$.
Indeed, $\textrm{PCE}$ measures the correlation between the noise traces left on $\I$ and the device \gls{prnu} independently of potential shift misalignment, as the correlation peak is searched over all possible mutual shifts between them.
If the \gls{pce} is greater than a confidence threshold, we attribute $\I$ to the device \cite{lukas2006digital, chen2008determining}.

The extension of \gls{prnu}-based strategies for attributing video frames to a specific device suffers from some issues due, for instance, to higher compression rates and lower pixel resolutions.
As a matter of fact, the previously described \gls{pce} test cannot be directly performed, being the \gls{prnu} resolution typically higher than the size of the recorded video frames.
Moreover, in-camera video stabilization techniques, which are now becoming one of the must-have device specifications, strongly hinder the traces left by \gls{prnu}, as video frames may be warped by means of geometrical transformations (e.g., cropping, rotation, scaling, etc.) in order to generate a stable video sequence \cite{Mandelli2019, Grundmann2018}.
As a consequence, the attribution of a video frame to a specific device can represent a much more challenging task than common image-camera attribution.

In this paper, we exploit \gls{prnu}-based traces to investigate the problem of device attribution when testing in-camera stabilized video frames.
Specifically, given a device fingerprint $ \Kiv $ and a frame $\I$ coming from a stabilized video sequence, we aim at exploiting the \gls{prnu} traces left on $\I$ in order to detect whether it has been recorded by the analyzed device.
To do so, we assume that geometric transformations can be approximated by similarities \cite{iuliani2019hybrid, Mandelli2019} and we propose a geometrical realignment strategy based on a modified version of \gls{fm} transform applied to both the device fingerprint and the frame noise residual.
Specifically, the proposed \gls{mfm} enables comparing a device fingerprint and a noise residual independently from scaling and rotation operations.
The next section provides all the details of the proposed method.
\section{Experimental analysis}
\label{sec:results}
In this section we report all the details about the performed experimental campaign and the achieved results.

\vspace{.5em}\textbf{Dataset.}
Our datasets have been extracted from Vision dataset, which includes both images and videos from $11$ major brand devices \cite{shullani2017vision}.
For building the \gls{prnu} related to each device, we select all the available images taken by the device depicting flat scenes \cite{chen2008determining}.
Then, each fingerprint $\Kiv$ is built by scaling and cropping the \gls{prnu}, using the image to video warping parameters reported in \cite{Mandelli2019}.
Regarding video frames, we select only devices with Full-HD video resolution (i.e., $ 1920 \times 1080 $ pixels).
For the sake of clarity, we make use of the same device nomenclature presented in \cite{shullani2017vision}, creating two test datasets: a \emph{non-stabilized} dataset, selecting non-stabilized devices D03, D11, D17, D21, D24
from $5$ different brands, and a \emph{stabilized} dataset that includes all the $14$ available stabilized devices.

Notice that the considered video frames contain both static and motion scenes, depicted as \emph{still, panrot, move} in \cite{shullani2017vision}, and can include almost flat content as well as significant texture presence, denoted as \emph{flat, indoor, outdoor} in \cite{shullani2017vision}.
In particular, we only make use of the I-frames, as the \gls{prnu} traces left on them are likely to be more reliable than those left on inter-predicted frames \cite{taspinar2016source, chuang2011exploringa}.
Furthermore, in light of past investigations about the first I-frame of stabilized video sequences, we always discard it from the experiments \cite{Mandelli2019, Grundmann2018}.

\vspace{.5em}\textbf{\gls{mfm} parameters.}
To compute the $\MFMT$ transform, we evaluate the 2D Fourier transform over $4096 \times 4096$ samples after zero-padding residue and reference fingerprint in the pixel domain, in order not to introduce undesired border effects. Then, we convert both terms into log-polar domain, following the default parameters provided by \cite{matlab_images_logpolar}, ending up with $\MFMT$ transforms having $2896$ $\rho$-samples and $2281$ $\alpha$-samples.
We verified that the sampling grid for $\rho$ and $\alpha$ dimensions allows a correct estimation of scaling factor and rotation angle.
Eventually, we crop $\MFMT$ transforms along $\rho$ dimension according to the chosen number of samples $\Delta_{\rho}$.

The exploited genetic algorithm mimics biological evolution to find a reliable shift estimation. Precisely, it has the following parameter configuration: a population size of $50$ individuals, which iteratively update the cost function for a maximum of $50$ iterations. Remaining parameters are those defined in \cite{matlab_opt}.

\vspace{.5em}\textbf{Performance in a controlled scenario.}
In order to assess the accuracy in attributing video frames to the correct device, we investigate the proposed method in a controlled scenario.
Specifically, considering the \emph{non-stabilized} dataset, we randomly select $27$ I-frames per device, taking care of equally distributing motion and static scenes, as well as flat and textured content.
We end up with a total amount of $135$ video frames.
In particular, we select only frames which report acceptable \gls{pce} values with the device fingerprint (i.e., \gls{pce} $\geq 60$, as suggested in \cite{taspinar2016source, Mandelli2019}).
Then, we warp each frame by means of a similarity transformation, randomly selecting the parameters from some realistic ranges \cite{Grundmann2018}, namely $\SR = [0.9, 1.1]$, $\TR = [-3, 3] \, \textrm{deg}$, $\CR = [-90, 90] \, \textrm{pixels}$, related to scale, rotation angle, horizontal and vertical shifts, respectively.
We verified these ranges include the vast majority of possible similarity transformations between stabilized video frames and reference fingerprint.

\begin{figure}[t]
	\centering
	\includegraphics[width=\columnwidth]{figures/no_stab_V.pdf}
	\caption{Accuracy on synthetically warped non-stabilized video frames: \textit{(a)} only scale and rotation are applied; \textit{(b)} a complete similarity is applied. The proposed method (orange) can be tuned to used different amount of frequency samples ($\Delta_{\rho}$), thus becoming slower but more accurate.}
	\vspace{-1.3em}
	\label{fig:no_stab}
\end{figure}

We aim at estimating the applied transformation using the proposed strategy, comparing the performance with the method presented in \cite{Mandelli2019}.
Specifically, we exploit the same parameter configuration for the particle swarm strategy \cite{matlab_opt, Kennedy2011} as reported in \cite{Mandelli2019}, which enables to estimate the similarity transformation returning the highest \gls{pce} between $\W$ and $\Kiv$.
For what regards the search bounds of scale and rotation parameters, we suppose these to be known at investigation side, thus they coincide with $\SR$ and $\TR$.
Notice that method \cite{Mandelli2019} does not need to fix bounds for the shift parameters as these can be estimated without the need of optimization.
Following similar considerations, the proposed $\MFMT$ strategy fixes the search range for shift parameters exactly to $\CR$, while scale and rotation do not require optimization.

Computational time and true positive rate evaluated for a PCE threshold of $60$ (i.e., $\mathrm{TPR}_{[60]}$) are the chosen accuracy metrics to compare the two strategies.
The average time for estimating the similarity transformation on each frame with the method \cite{Mandelli2019} is $41 \, \textrm{s}$, while $\MFMT$ strategy changes its temporal requirement depending on $\Delta_{\rho}$ (e.g, using $\Delta_{\rho} = 200$ requires only $21 \, \textrm{s}$ on average). Generally, the required time linearly grows with $\Delta_{\rho}$.

Fig.~\ref{fig:no_stab} shows results as a function of the scene content of video frames (i.e., flat, indoor and outdoor).
Specifically, Fig.~\ref{fig:no_stab}\textit{(a)} reports results where only scale-rotation transformations were applied.
The shift between noise residuals and $\Kiv$ is assumed to be known.
Fig.~\ref{fig:no_stab}\textit{(b)} reports results where a complete similarity transformation has been applied.
It is worth noting that, in case the shift parameter is known and only scale and rotation parameters should be estimated, our proposal can be a viable solution for very fast identification.
Since scale and rotation can be estimated without the need of optimization, the computational time reduces to less than one second.
The more the selected $\Delta_{\rho}$ samples, the better the accuracy of $\MFMT$ strategy, which overcomes results of \cite{Mandelli2019}.
Furthermore, in this case there is no need for global optimizers, thus the potential optimization error reduces to zero.
In case \textit{(b)}, $\MFMT$ shows better or basically equivalent results to \cite{Mandelli2019} for flat and indoor scenarios, while outdoor frames seem to be more challenging for the proposed method.

\vspace{.5em}\textbf{Performance on stabilized videos.}
In order to show the potentiality of $\MFMT$ approach in dealing with source device identification problem on real videos, we apply the proposed method to the stabilized video sequences.
Following previous considerations, we set as search range for the mutual shift $\CR = [-90, 90]$ both in horizontal and vertical directions.
For clarity's sake, we use the very same accuracy metrics presented in \cite{Mandelli2019}, i.e., the area-under-the-curve $ \mathrm{AUC} $ and $ \mathrm{TPR}_{@0.01} $ of ROC curves, averaged over all devices.
Precisely, $ \mathrm{TPR}_{@0.01} $ corresponds to the rate of correct attributions evaluated when the false positive attribution rate is equal to $0.01$.

\begin{figure}[t]
	\centering	\includegraphics[width=.7\columnwidth]{figures/icip2020_ROC_fm}
	\caption{ROC curves obtained testing $ 10 $ I-frames with the proposed strategy, as a function of the number of used frequency samples, i.e., $\Delta_{\rho}$. Results are compared to those of \cite{Mandelli2019} evaluated using $10$ I-frames.}
	\label{fig:fm_roc}
\end{figure}
\begin{table}[t]
	\caption{$ \mathrm{AUC} $ and $ \mathrm{TPR}_{@0.01} $ testing $ 10 $ random I-frames per video query, together with average computational time per frame, evaluated with $\MFMT$ and \cite{Mandelli2019} methods. }
	\label{tab:fm_table}
	\centering
	\def1.3{1.3}
	\resizebox{\columnwidth}{!}{
		\begin{tabular}{cccccc} \toprule[1.5pt]

			$\mathrm{Method}$	  &$\MFMT_{\Delta_{\rho} = 200} $   &$\MFMT_{\Delta_{\rho} = 400} $   &$\MFMT_{\Delta_{\rho} = 600} $  &$\MFMT_{\Delta_{\rho} = 800} $   &\cite{Mandelli2019}  	\\  \midrule[1.5pt]

			$ \mathrm{AUC} $      				& $ 0.93 $				   				& $0.93$										& $ 0.94$                                              & $ 0.97$ 								& $0.97$\\ \midrule[0.1pt]
			$ \mathrm{TPR}_{@0.01} $      & 	$ 0.85 $							& $0.86$									  & $  0.90$                                          & $ 0.94 $ 								& $0.91$ \\ \midrule[0.1pt]
			Time [s]      								&$ 22 $										& $46$									  		& $  69$                                          	& $105$ 								& $57$ \\ \midrule[0.1pt]

		\end{tabular}
	}
\end{table}
We show the attribution results achieved by testing $ 10 $ random I-frames per video query and picking the maximum value among the computed \gls{pce}s.
Specifically, we test different values for the number of used frequency samples (i.e., $\Delta_{\rho}$) and always report results achieved by \cite{Mandelli2019} over the same dataset.
Fig.~\ref{fig:fm_roc} draws the ROC curves and Table~\ref{tab:fm_table} depicts the achieved $ \mathrm{AUC} $ and $ \mathrm{TPR}_{@0.01} $ as a function of $\Delta_{\rho}$.
Moreover, last row of Table~\ref{tab:fm_table} reports the average required computational time [seconds] for testing one query frame according to the chosen strategy, considering matching cases as well as non-matching ones.
It is worth noticing that the proposed approach can overcome results of \cite{Mandelli2019}, provided that a sufficient amount of frequency samples is selected.
Furthermore, the $\MFMT$ strategy enables fast computations as well, at the expense of a slightly reduced accuracy, but still acceptable.

redpajama_set_name: RedPajamaArXiv


Gods Compass Movie License On Sale! $199.00 / ea.
*Available in U.S. and Canada only.
Gods Compass Find your true North Suzanne Waters (Karen Abercrombie) has just passed the baton as the principal of the local high school. Having spent a lifetime teaching life lessons, the journey into retirement is about to bring her one of her greatest lessons. her lesson plan will come from a troubled young man, Eli, as she invests in his life. Suzanne also becomes a first-time grandmother, and the new life of the baby brings renewed hope to the family as each member discovers their core value in Gods path for their lives. As Suzanne reflects back on her life of faithfulness, we are reminded that there are no accidents in Gods Kingdom, no chance meetings, no purposeless steps taken.


week, month or as long as you need.
high cost of hiring extra offices and staff.
and consulting without having to pay fixed costs.
Cerrito and Santa Fe Avenue, without the traffic restrictions of downtown.
minutes from Aeroparque Jorge Newbery.


3.2 Cookies may be either "persistent" cookies or "session" cookies: a persistent cookie will be stored by a web browser and will remain valid until its set expiry date, unless deleted by the user before the expiry date; a session cookie, on the other hand, will expire at the end of the user session, when the web browser is closed.
4.1 We use both session and persistent cookies on our website.
5.3 The information generated relating to our website is used to create reports about the use of our website.
6.1 Our website also uses third party cookies.
7.2 Blocking all cookies will have a negative impact upon the usability of many websites.
7.3 If you block cookies, you will not be able to use all the features on our website.
8.2 Deleting cookies will have a negative impact on the usability of many websites.
9.1 This website is owned and operated by You Unlimited s.r.o.
9.2 We are registered in the Czech Republic under registration number 24280666, and our registered office is at 141 00 Praha 4, Vnější 896/17.
(b) by email, using the email address published on our website.


Customer Acquisition Cost: Blending - Outlier AI, Inc.
For Ads this is easy; it's just your average cost per click or impression. For PR it's the time you spend courting the media, as well as the cost of your PR firm (amortized). For sending e-mails it's more complex, as it includes the time you spend writing them as well as what it might have cost to get the customer's e-mail address in the first place. In all cases, you should be able to determine an average cost for that channel action.
There you go! You can calculate this for each customer (hard) or segment your customers into common cohorts (easier) depending on how accurate you need your CAC estimate to be. In businesses where margins are measured in pennies, the CAC is usually measured at the individual customer level (e.g. mobile gaming) and in high margin businesses (e.g. enterprise software) by cohort.
As I mentioned yesterday, there are tools and services that will do all of this for you, but it's up to you if you want to use them. Even if you do, it's important to understand the fundamentals of what they do!


As an API provider, the portal expose APIs, educate developers about our APIs, sign up developers and lets you register your apps. Exposing APIs to developers is only part of creating accentuating and dynamic community. It's also a way for developer/s community to provide feedback, ask for support and submit their own content that can be accessed by other developers.
RBL Bank provides you with a Developer Services portal that you can use to build your own customized financial services and for development of community.
The developer portal is essentially a content management system. The developer portal lets you access API documentation, supports, blogs, and provides forums to share your views on technological changes in the industry.
Developers make up the community of users that build apps by using APIs. App developers can use the portal to learn about APIs through an API console, to register an account on the portal, to register apps that use your APIs, to interact with the developer community, and to view statistical information about their app usage on a dashboard.
API team is the API provider that creates portal content, makes APIs available to developers, provides Swagger, API documentation, and a mechanism for developers to register apps and obtain API keys.
Community-contributed content viz. blogs, discussion forums etc.
New developer registers through the developer portal.
In response, the portal sends an email to administrators to approve the account.


In 2013, IIGF has completed the development of an E-Procurement application for the procurement of goods and services.
Through the E-Procurement system, goods and services vendors could register their companies as registered supplier, obtain information on goods and services packages being offered for tender, submit their bids, and track the bid status and tender result, all through a convenient online process. This makes the procurement process more efficient as well as transparent.
The E-Procurement system handles the procurement of goods and services needed in the daily operational activities of IIGF, such as office equipment, office stationery, print materials, computer and IT equipment, and other such items. The E-Procurement system has been fully implemented since April 2013.


WESTBOROUGH, MA- New England sent five Section Champions to the USTA League Nationals from October 27-29 in Orlando and Fort Lauderdale, FL. Men's and women's teams from the Adult 40 & Over and 55 & Over divisions competed for a shot at the National Championship.
The top New England finish of the weekend came from the Men's 55 & Over 8.0 team from Rally Point Racquet Club in Greenville, RI. John Mannix and Russell Steere's team finished third in their five-team flight in Orlando going 2-2 with a position record of 5-7. New England picked up wins against teams from Dayton, OH and Honolulu, HI.
Women's 3.5- Team Simply Smashing, out of Chelsea Piers in Stamford, CT, was led by captain Emily Catto. The team finished 0-3 (6-14) in their five-team flight in Fort Lauderdale.
Men's 3.5- Randy Law captained his Chip 'n Charge squad out of Solaris Racquet Club in Stamford CT. The team went 0-3 (5-10) in its four-team flight in Fort Lauderdale.
Women's 8.0- Catherine Arkins led her squad from Bass River Tennis Club in Beverly, MA to Orlando for the 55 & Over Nationals. The team finished third in a four-team flight that was separated by one position win from top to bottom. The top two teams finished 2-1 (5-4) while New England and a team from Scottsdale, AZ went 1-2 (4-5) overall. Arkins' team picked up its lone win against Arizona.
Women's 6.0- The Women's 6.0 team also competed at the USTA Nationals Campus in Orlando. Sonja Mason captained her team from Berkshire West Athletic Club to a 1-2 (2-7) record, good for third place in the flight. New England picked up its win against a team from Illinois.
The next League Nationals will take place from November 3-5 in Mobile, AL. New England will send all its Mixed 18 & Over teams ranging from NTRP Ratings 6.0-10.0.


text:
Movies>
20 Facts About The Predator (Yautja)
The Predator (also known as Yautja or Hish-Qu-Ten) is a fictional extraterrestrial species featured in the Predator science-fiction franchise, characterized by its trophy hunting of other species for sport. First introduced in 1987 as the main antagonist of the film Predator, the Predator creatures returned in the sequels Predator 2 (1990), Predators (2010) and The Predator (2018), as well as the crossover films Alien vs. Predator (2004) and Aliens vs. Predator: Requiem (2007).
The Predator has been the subject of numerous novels, video games and comic books, both on their own and as part of the Alien vs. Predator crossover imprint. Although a definitive name for the species is not given in the films, the names Predators, Yautja (ya-OOT-ja), and Hish-qu-Ten have been alternatively used in the expanded universe. Created by brothers Jim and John Thomas, the Predators are depicted as large, sapient and sentient humanoid creatures who possess advanced technology, such as active camouflage, directed-energy weapons, and interstellar travel. Both the Yautja and the Hish-Qu-Ten compete for a chance to enter the ritual of becoming "Blooded", a rank given to predators that have killed prey that has been deemed worthy.
20 Predator Facts
For Fanboys and Fangirls who want to know all they can about this superior hunter, we've put together a list of 20 facts fans probably don't know about The Predator (Yautja).
References: Wikipedia, Aliens Fandom, Mental Floss, AVP Fandom
For more great content, check out our anime, comic, movie and gaming sections. You can find the latest videos and trailers on our YouTube channel as well.

redpajama_set_name: RedPajamaCommonCrawl


Boeing has moved from conceptual design to a flying prototype in just a year.
The aircraft maker completed its first outdoor test of an electric flying autonomous auto that it hopes will one day whisk people away from congested roads and along a highway in the sky.
The company is engaged in competition with Airbus SE and numerous other firms to create a small, self-flying vehicle capable of vertical takeoff and landing for everyday use.
The craft is more broadly part of Boeing's NeXt program dedicated to urban mobility efforts and was designed by Boeing subsidiary Aurora Flight Sciences for Uber Air's flying taxi service which looks to begin ferrying passengers as early as 2023.
These companies and a bunch of others seem determined to have scaled-down aircraft in the air in the not so distant future, acting as short-distance means of transportation for city dwellers.
Boeing is not the only company trying to build self-driving taxis: UPS, Intel Corp. and Airbus also have autonomous-flight units of their own.
"Certifiable autonomy is going to make quiet, clean and safe urban air mobility possible".
Flying cars may still be the stuff of science fiction, but Boeing is a little closer to bringing one to the masses. At 30 feet long and 28 feet wide, the prototypes airframe design integrates both the propulsion and wing system for improved efficiency.
Propelled by electricity, the model is designed for fully autonomous flight, with a range of as much as 50 miles, Boeing said.
As envisioned by Uber CEO Dara Khosrowshahi, Uber Air will have passengers calling for a lift, then heading to rooftop sky ports where the aircraft take off. That one has already completed an indoor test, with outdoor tests to come later this year.
Boeing is working with startup SparkCognition Inc and the U.S. Federal Aviation Administration to develop a traffic-management system for three-dimensional highways, as well as the regulatory framework that will allow waves of autonomous vehicles to zip safely around buildings, the company has said. Forward wing-borne flight will also be tested.


text:
More than 450 landlords attend show in London
Over 450 buy-to-let landlords and property investors attended the Olympia Conference Centre in London last week where they were able to obtain free expert advice to help guide them with their investments.
The National Landlord Investment Show attracted a diverse range of existing and prospective buy-to-let investors, with visitors able to attend seminars and stands covering all the biggest industry issues from the phasing out of mortgage interest relief to Brexit and its impact on the private rented sector.
The show featured a series of expert property panel discussions, including guest speaker Iain Duncan Smith (IDS), former Secretary of State for Work and Pensions 2010-2016.
A number of topics were discussed, including universal credit, the Autumn Budget, market trends and interest rates.
IDS said that he had been lobbying the chancellor Phillip Hammond in advance of the publication of his first Autumn Statement on 22 November, and urged landlords to write to him with their thoughts and fears.
IDS also spoke further about Universal Credit, tax changes and which conditions can work in the favour of the landlord now and in the future.
The event also saw over 100 Property related services exhibit, in addition 37 seminars on a broad range of subjects in PRS were delivered throughout the day including a packed auditorium with David Smith, economist editor of The Sunday Times, who delivered an outlook for landlords including, interest rates, Brexit and the Budget.
To access the 2018 dates, click here.
The National Landlord Investment Show
Phillip Hammond
National Landlord Investment Show to address important issues today ...
A number of buy-to-let landlords and property enthusiasts will visit the...
Landlord show to address key issues affecting landlords ahead of election ...
Journalist and broadcaster Andrew Neil will once again chair the Government...
Political broadcaster Andrew Neil to chair major landlord debate in London ...
Journalist and broadcaster Andrew Neil will chair the Government Panel Debate...
Iain Duncan Smith criticises former chancellor's housing polices ...
Former Conservative Party leader Iain Duncan Smith has criticised policies of...


text:
Voting rights and civic engagement were the hottest topics at a town hall Wednesday night hosted by the National Urban League on the campus of Howard University to unveil its annual State of Black America report, titled this year Occupy the Vote: Educate, Employ & Empower.
Each year NUL documents equality gaps between African-Americans and whites in a variety of areas, including income, health, education and social justice. Scores for civic engagement showed the biggest decrease in the four areas measured, from 101.8 percent to 98.3 percent.
The Urban League reckons that the civic engagement score has declined in part due to new voting laws that make it more challenging for African-Americans, young adults, senior citizens and low income people to cast ballots by requiring that they present a state-sanctioned photo identification card or that limit early voting periods and opportunities for groups to conduct voter registration drives.
"We must occupy the vote so we have a voice in the future of this nation," NUL President Marc Morial said. "Not now and not on our watch are we going to allow a nation, which spends a trillion dollars to defend democracy abroad, erect fences and barriers here at home."
Education also was at the center of an impassioned discussion because it serves as a pathway to economic empowerment and inadequate level of education, from finishing high school to earning college degrees, is widely believed to play a key role in the African-American community's high unemployment rate.
Participants on the town hall panel that focused on education stressed the need for more people of color to become teachers.
"Sixty-eight percent of inner-city principals are white. We know that the majority of public school students are minorities. However, they don't have access to a diverse teaching body. This is a travesty," said activist Kevin Powell. "We know that there are academic and social benefits when they are taught by Black teachers. They are less likely to be referred for special education, less likely to be suspended and more likely to graduate. This country must diversify its teaching force."
BET National News - Keep up to date with breaking news stories from around the nation, including headlines from the hip hop and entertainment world.
(Photo: Courtesy National Urban League)
Written by Joyce Jones
National Urban League


The International Financial Reporting Standards (IFRS) are widely regarded as the global language of accounting, with more than 113 countries around the world, including all of Europe, currently requiring or permitting IFRS reporting and 85 purely requiring IFRS reporting for all domestic listed companies.
However, the use of IFRS audit has a significant impact on your balance sheets and ratios if you used another method before. Furthermore, a change in your method of accounting will impact your inventory cost, depreciation expense, interest & dividend expenses, asset valuation and much more.
Inventories are physical products that your company will eventually sell to generate revenue and profit. Inventory costs represent a significant part of your Balance Sheet and ratios. Here are the most three common inventory cost methods: First-in, First-out (FIFO) and Weighted Average Cost. However, the First-in and First-out (LIFO) method is not permitted under IFRS.
Long-term assets such as Property and Machinery & Equipment are assets that are expected to provide your company long-term economic benefits. Usually they represent a significant investment from your part and have specific accounting depreciation method & expenses rules to be applied. The most common depreciation methods that are permitted under IFRS are: the Straight-line method, the Accelerated method and the Unit of production method.
Interest & dividend expenses appear on the statement of cash flow. In this statement, the different cash flow is classified according to three different categories: Operating Activities, Investing Activities & Financing Activities. The classifications have a significant impact on your business financial statements.
Long-term assets have a significant factor in a company's real & book values. There are two methods of valuing long-term assets and the method chosen will have a significant impact on the company's value. The two methods allowed under IFRS standard are: Historical cost & Revaluation method.
How can LehmanBrown support with IFRS Audit Services?
LehmanBrown is proficient in the most up-to-date IFRS methods and we take pride in our consistent and quality application of IFRS Audit standards and our capability to apply our knowledge to those organizations transitioning. Furthermore, our experts can explain and provide you examples of the differences between IFRS audit and any others countries GAAP and the application of these to your business.
In addition our experts are aware of different regulations in IFRS auditing (presentation of financial statements, consolidation statement, fixed & intangible assets (goodwill, for example), inventories, deferred taxes, equity and ratios) that could make a difference concerning your company's revenue and profitability.
To make an enquiry, please contact us at enquiries@lehmanbrown.com. To learn more about the IFRS Audit Services in China offered by LehmanBrown, please see the relevant webpages.


Eyewitnesses describe their terror as a building containing a school collapsed in Lagos, Nigeria.
The building, which had been identified as "distressed" and listed for demolition, collapsed early morning of Wednesday.
There were frantic scenes at the site as rescuers and local men searched for survivors, and family members crowded the area in the hope of finding their loved ones alive.


text:
using System;
using Google.Apis.Auth.OAuth2;
using Google.Apis.Services;

namespace YouTubeDataApiWrapper.Util.GoogleApiExtensions
{
    public static class IClientServiceExtensions
    {
        /// <summary>
        /// Determines wether two services use the same AccessTokens or ApiKeys
        /// </summary>
        /// <param name="thisService"></param>
        /// <param name="otherService"></param>
        public static bool AreCompatible(this IClientService thisService, IClientService otherService)
        {
            if (GetAccessToken(thisService) == GetAccessToken(otherService) && thisService.ApiKey == otherService.ApiKey)
                return true;
            return false;
        }
        private static string GetAccessToken(IClientService service)
        {
            try
            {
                return ((UserCredential)service.HttpClientInitializer).Token.AccessToken;
            }
            catch (NullReferenceException)
            {
                return null;
            }
        }

        private static string GetApiKey(IClientService service)
        {
            return service.ApiKey;
        }
    }

}

redpajama_set_name: RedPajamaGithub


text:
<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[mattpearson blog]]></title><description><![CDATA[computer science and quantiative finance]]></description><link>https://mattpearson.github.io</link><generator>RSS for Node</generator><lastBuildDate>Sun, 11 Dec 2016 22:05:01 GMT</lastBuildDate><atom:link href="https://mattpearson.github.io/rss/" rel="self" type="application/rss+xml"/><ttl>60</ttl><item><title><![CDATA[S&P500 December Seasonality]]></title><description><![CDATA[

As we approach the last weeks of the year, something to keep in mind for December’s seasonality. X axis is day of month, and Y axis is cumulative return of S&P500 over December for years 1953 to 2016.

Average returns are nice, but knowing how volatilite it is would also be good to know. Utilizing a pivot table to calculate, the annualized standard deviation for each day is plotted below:

Python Code

import datetime
import pandas_datareader as web
import pandas as pd
import numpy as np

gspc = web.DataReader( '^GSPC', 'yahoo', datetime.datetime(1953,1,1), datetime.datetime(2016, 12, 10))

df = pd.DataFrame( [ gspc['Adj Close'] ] ).transpose()
df.columns=['SPY']
r = df['SPY'].pct_change().shift(-1)
df['SpyRet'] = r
df['DOM'] = df.index.day
df['Month'] = df.index.month

df_dec = df[ df['Month'] == 12 ]
t = pd.pivot_table( df_dec, values='SpyRet', columns='DOM', aggfunc=np.mean)
(t.cumsum()*100.0).plot( grid=True)

t = pd.pivot_table( df_dec, values='SpyRet', columns='DOM', aggfunc=np.std)
(t*np.sqrt(252)*100).plot( grid=True, title='December Return Annualized Volatility By Day')

]]></description><link>https://mattpearson.github.io/2016/12/11/S-P00-December-Seasonality.html</link><guid isPermaLink="true">https://mattpearson.github.io/2016/12/11/S-P00-December-Seasonality.html</guid><pubDate>Sun, 11 Dec 2016 00:00:00 GMT</pubDate></item><item><title><![CDATA[Decoding CME's MDP 3.0]]></title><description><![CDATA[

MDP stands for Market Data Protocol, and CME is on their third revision of it. In this latest revision, they decomissioned FAST encoding and replaced it with SBE, which stands for Simple Binary Encoding. Real Logic, a firm based in the UK, has developed an example SBE implementation that generates code in both Java and C++ from a SBE template file. CME’s confluence wiki page has a good primer on SBE and is a must-read for anybody serious in connecting with CME’s market data feed.

Once you are familiar with SBE you can jump right in to see the different types of messages by perusing their template file.

Note, Real Logic’s tool requires that you have Java JDK installed, so if you don’t, then run:

su -c "yum install java-1.8.0-openjdk-devel"

Next, use git to download and install Real Logic’s simple binary encoding example implementation. The following linux commands will walk you through getting the latet snapshot from their github repository, building the software, downloading the CME SBE template file, and generating C++ code that implements SBE to the CME’s spec.

$ git clone https://github.com/real-logic/simple-binary-encoding.git
$ ./gradlew
$ cd ./sbe-tool/build/libs
$ wget ftp://ftp.cmegroup.com/SBEFix/NRCert/Templates/templates_FixBinary.xml
$ java -jar -Dsbe.target.language=cpp -Dsbe.keyword.append.token=_ sbe-tool-1.5.2-SNAPSHOT-all.jar templates_FixBinary.xml

Once these commands are completed, you will have a new folder called 'mktdata' with classes (using the namespace 'mktdata') created for you by the Real Logic SBE tool using the CME-provided template file.

A huge plus is that it supports and utilizes C++11 features.

]]></description><link>https://mattpearson.github.io/2016/10/07/Decoding-CM-E-MDP-30.html</link><guid isPermaLink="true">https://mattpearson.github.io/2016/10/07/Decoding-CM-E-MDP-30.html</guid><pubDate>Fri, 07 Oct 2016 00:00:00 GMT</pubDate></item><item><title><![CDATA[Hedging Factors]]></title><description><![CDATA[

Review

The CAPM suggests that a firm’s expected excess return (Ri) above the risk-free rate (Rf) is simply a scaled version of the market portfolio (Rm) expected excess return. Risk-free rate can be the rate of return on US treasury bonds. In other words:  ( Ri - Rf ) = scaling factor * ( Rm - Rf ). Put differently,

( Ri - Rf ) = alpha + beta * ( Rm - Rf ).

Gene Fama and Ken French argued convincingly that there are additional risk factors that can better describe the expected excess return, namely a size premium (SMB) and a value premium (HML). Recent research has shown that the expected return can further be improved with additional factors beyond size and value. Cliff Asness eloquently  describes them as follows:

Premium Factors

RM-RF - The return spread between the capitalization weighted stock market and cash.

SMB - The return spread of small minus large stocks (i.e., the size effect).

HML - The return spread of cheap minus expensive stocks (i.e., the value effect).

RMW - The return spread of the most profitable firms minus the least profitable.

CMA - The return spread of firms that invest conservatively minus aggressively.

With this knowledge, how can you evaluate the exposure a portfolio has to these risk factors?

Regression

By re-expressing the CAPM to use the additional risk factors, the regression can be expressed as:

( Ri - Rf ) = alpha + beta1 * ( Rm - Rf ) + beta2 * HML + beta3 * SMB + beta4 * RWM + beta5 * CMA

Ken French maintains a library of factors for doing exactly these kinds of regressions. You can access it here.

One of the most famous portfolio managers of the 20th century is Peter Lynch, who was the PM for Fidelity’s Magellan Fund. What were his factor exposures during the time he was managing the fund, from 1977 to 1990?

The regression results follow:

Obviously, his fund had a statistically strong positive relationship with the market (MKT-RF), and clearly a statistically strong negative relationship with HML and RMW factors. The negative relationship with HML suggests he was exposed to more growth stocks than value stocks, and firms that were least profitable rather than most profitable. Given the small t-statistics to SMB and CMA we can not make statistically significant conclusions as to his portfolio’s exposures to these risk factors.

Remember when you are running such regressions, subtract out the risk free rate from the returns of the market and the security or fund you are analyzing. While the current ZIRP regime we’re currently in won’t make much of a difference, when you go back to the 80s and 90s it definitely will.

How to hedge?

The analysis above, the risk factors are not tradable. Within the past few years, however, there has been a large increase in the number of exchange traded funds that provide factor exposure. If you, as an investor in the Magellan fund, wanted to hedge the exposure to growth stocks (HML factor), you can simply buy $0.30 worth of a fund that tracks HML for each $1.00 that is invested in Magellan:

After running the same regression, you can now see that the coefficient and t-statistic for the HML factor are effectively zero. In practice, use an ETF that is both easily shortable with low short-rate fee to achieve the best results.

Python Code

This code is adapted from the solid work by nakulnayyar. It has been changed to use the new five factor model, and show an example of hedging.

import pandas as pd
import numpy as np
from StringIO import StringIO
from zipfile import ZipFile
from urllib import urlopen
import pandas.io.data as web
import statsmodels.api as sm
url = urlopen("http://mba.tuck.dartmouth.edu/pages/faculty/ken.french/ftp/F-F_Research_Data_5_Factors_2x3_CSV.zip")
zipfile = ZipFile(StringIO(url.read()))
FFdata = pd.read_csv(zipfile.open('F-F_Research_Data_5_Factors_2x3.CSV'),
                     header = 0, names = ['Date','MKT-RF','SMB','HML','RMW','CMA','RF'],
                     skiprows=3)

FFdata = FFdata[:638]

//#Convert YYYYMM into Date
FFdata['Date'] = pd.to_datetime(FFdata['Date'], format = "%Y%m")
FFdata.index = FFdata['Date']
FFdata.drop(FFdata.columns[0], axis=1,inplace=True)

#Drop Days in YYYY-MM-DD
FFdata.index = FFdata.index.map(lambda x: x.strftime('%Y-%m'))

#Convert into float
FFdata = FFdata.astype('float')
FFdata.tail()

#Get Data from Yahoo
start = datetime(1980,1,1)
end = datetime(1990,10,1)
f = web.get_data_yahoo("FMAGX", start, end, interval='m')

#Delete Columns
f.drop(f.columns[[0,1,2,3,4]], axis=1, inplace=True)
#Fix Date Column
f.index = f.index.map(lambda x: x.strftime('%Y-%m'))

f['Return'] = f['Adj Close'].pct_change().shift(0) * 100.0
f.head()

data2 = pd.concat([f,FFdata], axis = 1)
data2['XRtrn'] = (data2['Return'] - data2['RF'])
df = data2[np.isfinite(data2['XRtrn'])]
df.tail()

y = df['XRtrn']

X = df.ix[:,[2,3,4,5,6]]
X = sm.add_constant(X)
model = sm.OLS(y, X)
results = model.fit()
print(results.summary())

y.plot()

#Hedge HML
y1 = y - results.params[3] * df['HML']

model = sm.OLS(y1, X)
results = model.fit()
print(results.summary())

]]></description><link>https://mattpearson.github.io/2016/09/27/Hedging-Factors.html</link><guid isPermaLink="true">https://mattpearson.github.io/2016/09/27/Hedging-Factors.html</guid><pubDate>Tue, 27 Sep 2016 00:00:00 GMT</pubDate></item><item><title><![CDATA[Linux Security]]></title><description><![CDATA[

What should be the first thing you do with a new linux installation? Make it more secure! They include:

Disable root login from sshd

Allow authentication only through pre-configured ssh keys.

Install fail2ban

sshd changes

First, edit /etc/ssh/sshd_config  (sudo vi /etc/ssh/sshd_config), and change

#PermitRootLogin yes
#AuthorizedKeysFile      .ssh/.authorized_keys

to

PermitRootLogin no
AuthorizedKeysFile      .ssh/.authorized_keys

Next, generate a ssh key on your local computer for authentication. There are plenty of how-to guides to do this (such as https://devops.profitbricks.com/tutorials/use-ssh-keys-with-putty-on-windows/  for Windows and https://www.digitalocean.com/community/tutorials/how-to-set-up-ssh-keys—2 for linux) but the essence is as follows for Windows users:

Download PuTTYgen and generate a key.

For "key comment", enter your username

For "key passphrase", you can enter a passphrase for extra security if wanted.

click "Save private key" and note location and filename.

In PuTTY, create a new session, and go to Connection→SSH→Auth→Browse and choose your private key.  Save this session with the IP address.

On your linux box, edit ~/.ssh/.authorized_keys and paste in the content stored in PuTTYgen section titled "Public key for pasting into OpenSSH authorized_keys file". Make sure you copy ALL of it, including the beginning "ssh-rsa" text, AND the ending text after the "==" symbols.

Confirm the .authorized_keys file is mode 600 (chmod 600 .authorized_keys).

Wrap up these changes with a sshd restart:

sudo service sshd restart

fail2ban

Fail2ban is a service that modifies your iptables rules based on activity that is seen in your log files. If someone attempts to repeatedly log in with incorrect credentials, you can choose to have their IP banned from connecting again for a period of time. A good how-to guide for installing and configuring fail2ban is here:

https://www.digitalocean.com/community/tutorials/how-to-protect-ssh-with-fail2ban-on-centos-7

]]></description><link>https://mattpearson.github.io/2016/09/05/Linux-Security.html</link><guid isPermaLink="true">https://mattpearson.github.io/2016/09/05/Linux-Security.html</guid><pubDate>Mon, 05 Sep 2016 00:00:00 GMT</pubDate></item><item><title><![CDATA[CME New Release VPN]]></title><description><![CDATA[

This guide is written to help others go through the process of configuring a system to connect to the Chicago Mercantile Exchange’s New Release environment over a self-hosted VPN connection. It’s meant not to be an in-depth explanation of all terms and concepts, but rather a guide/map to go from a new router to having a working connection for those with only a high level understanding of routers.

Step 1: Router

You will need a router with built-in ISAKMP and IPSEC capabilities. One of the low cost options is to go with an 800 series Cisco router such as the 871W which you can pick up on Ebay in the $50 to $60 range, and it includes 802.11 wireless capabilities. This guide is written using an 871W router.

For those readers who are not networking experts or Cisco CCNAs, there are many acronyms that are used. A few of them are briefly explained here to help get you up to speed.

ISAKMP - This is part of the security mechanism and is a subset of IKE.  http://networkengineering.stackexchange.com/questions/1/whats-the-difference-between-ike-and-isakmp

GRE - Generic Routing Encapsulation. This allows multicast traffic to be sent over the VPN tunnel. http://www.cisco.com/c/en/us/support/docs/ip/ip-multicast/43584-mcast-over-gre.html

PIM - Protocol Independent Multicast. You’ll need to "enable multicast routing" and "pim sparse-mode" on the router for the multicast traffic to work properly.  http://www.cisco.com/c/en/us/td/docs/ios/solutions_docs/ip_multicast/White_papers/mcst_ovr.html

VLAN - Virtual LAN. Note that on the 871W, you can not assign a specific IP or DHCP group to the physical interfaces. You must assign the interfaces to be part of a VLAN and then the VLAN can be assigned a DHCP pool for IP assignment.

Advanced Security or Advanced IP - Cisco offers two flavors of software to run on their routers. The "PIM" capabilities are in the Advanced IP package, not the Advanced Security package despite the need for a VPN tunnel! Make sure you are running a package with the K9 designator because it has AES/3DES encryption.

ACL - Access Lists. These allow you to choose what traffic can and can not go through your router.

NAT - Network Address Translation. This is a technology that allows your router to create a sub network and, through the use of differing ports, pass the traffic through one (public) IP. "ip nat inside" tells the vlan to NAT ip that are connected to it, and "ip nat outside" tells the interface (you would execute this command on your WAN port) to NAT traffic to the outside world.

dot1Q - This is to tell your wireless interface to use a specific vlan. For example "encapsulation dot1Q 10 native" uses vlan 10.

Step 2: Hardware

In addition to the 800 series Router, to get started, you’ll need a so-called "Rollover Cable". http://www.ebay.com/sch/i.html?_nkw=cisco+rollover+usb&_sacat=0
This allows you to configure the router over a serial protocol. Use putty to connect, and choose Serial for the method. For my setup, it was COM3 and 9600 baud.
To connect to CME you’ll need to have two physical interfaces available on your server. One for public IP traffic, and the other for CME New Release traffic.

Step 3: The Big Picture

A high level overview of how your network topology can look is as follows. You will have two separate networks (VLANs), one for public internet traffic, and the other specifically for CME NR traffic. The Vlan IDs (10 and 20, below) correspond to the sample configuration at the end.

You’ll create two VLANs, one for public IP traffic ("Vlan 10"), and the other for CME New Release traffic ("Vlan 20"). For wireless router models, you’ll add the wireless connection to be part of Vlan 10.  Assign two of the fast ethernet ports to vlan 10 (FA0 and FA1), and the other two (FA2 and FA3) to Vlan 20. This will allow you to have two physical connections to public IP and two to New Release. You can always attach a networking switch to a vlan 10 port to expand internet access to other devices.  To have the appropriate IPs assigned to each VLAN, you’ll create two DHCP pools for which IPs can come. On vlan 10, you can stay with the traditional 192.168.1.x range and on vlan 20, you must use the range that the CME assigns you.

Note for Wireless users: In order to get wireless working propertly, you’ll need to create a both a sub interface and a "bridge group". At a high level, a bridge group allows you to connect the physical interface with the wireless interface into the same group. This is important: you won’t assign an IP address range to vlan 10, just tell it to be part of the bridge group and with "no ip address". Then, in the bridge group configuration, you will assign the IP range for which the DHCP pool exits. However, for vlan 20 (because it’s not part of a bridge group with a wireless interface), you will assign an ip range that matches what CME tells you.
This is evident in the sample configuration.

Step 4: Configure Router / "Cisco 101"

To connect to the router, you do not use the Netgear/Linksys approach of pointing your browser to 192.168.1.1. Instead, you need to connect via the serial "rollover" cable.

Once you connect to the router, there will be a few key commands that you’ll use over and over:

"write erase" — This will erase the "running-config" and the "startup-config". These are the file names of the two configuration files on the router.

"copy running-config startup-config" — This will copy the configuration that you have created to be the one run when the router is rebooted.

"enable" — This will bring the router into priviledged mode so you can issue basic show commands.

"config t" — This will bring the router into global configuration mode where you can actually change settings.

"exit" — Go back up one "level" in your configuration. For example if you are configuring a sub-interface and want to return back to the interface level, just type exit.

"shut" — Brings down an interface.

"no XXXX" — Removes or takes away a command. For example, if you type "no shut", then it will bring UP an interface. Likewise, "no ip pim sparse-mode" will REMOVE the "ip pim sparse-mode" from the configuration.

"switchport access" — This tells the router to associate a physical interface to a particular vlan.

A couple notes on wifi connection:
You’ll notice there exists an entry "interface Dot11Radio0.10". This means you are creating a sub-interface off the 802.11 wireless interface (that’s where the ".10" comes in). The number after the period is for the vlan number for which the subinterface should be part of. You also use this vlan number with your dot1Q encapulation command. See the sample configuration.
"guest mode" means that the SSID is broadcast (you’ll pick it up on your access point list on your laptop/phone).

To get started, connect to the router through putty, and follow these instructions:

Execute "write erase" first (to restore factory configuration).

Next, "enable" to go into priviledged mode.

Then, "show running-config" to see what the initial configuration looks like.

Lastly, "config t" so you can start changing settings (you should see the '#' prompt which means you can now issue commands).

Once you are in this mode, type in the commands from the attached configuration file. Replace the XXX.XXX.XXX.XXX IPs with those provided by CME.

Step 5: Configure Linux

In order to get this to work properly, you will need to: 1. diable RP filtering, 2. configure your firewall properly (or just turn it off), and 3. add the appropriate routing table entries so that traffic to CME goes to the correct interface. On the commands that follow, the interface for CME is enp3s0 (change it to match yours).

Routing table:
route add -net XXX.YYY.ZZZ.0 netmask 255.255.255.0 gw AAA.BBB.CCC.1 dev enp3s0
(Change the X,Y,Z, and A,B,C to the IP range assignedby CME).

Also add the route for multicast traffic to the appropriate interface:
sudo route add -net 224.0.0.0/8 dev enp3s0

To join a multicast group on ip 224.0.28.1:14310, you can use the command: iperf -s -u -B 224.0.28.1 -i 1 -p 14310

To see if multicast traffic is coming in on the interface:
tcpdump -i enp3s0 -s0 -vv net 224.0.28.0/24

Note, on Centos 7, the commands to change your interfaces have changed. Here is a helpful cheat-sheet for relevant commands: https://access.redhat.com/sites/default/files/attachments/rh_ip_command_cheatsheet_1214_jcs_print.pdf

Useful Links:

http://stevehardie.com/2013/05/cisco-877w-configure-wireless-and-wired-on-single-subnet/
https://supportforums.cisco.com/discussion/11801006/does-configuring-two-vlans-cisco-871-router-divides-bandwidth-internet-half
https://supportforums.cisco.com/discussion/10567086/change-ip-router-cisco-871

Sample Router Configuration

Current configuration : 4011 bytes

!

version 12.4

no service pad

service timestamps debug datetime msec

service timestamps log datetime msec

no service password-encryption

!

hostname Router

!

boot-start-marker

boot-end-marker

!

!

no aaa new-model

!

resource policy

!

ip cef

!

!

no ip dhcp use vrf connected

ip dhcp excluded-address 192.168.1.32 192.168.1.255

!

ip dhcp pool vlan20pool

   network XXX.XXX.XXX.0 255.255.255.0

   default-router XXX.XXX.XXX.1

   dns-server 8.8.8.8

!

ip dhcp pool vlan10pool

   network 192.168.1.0 255.255.255.0

   default-router 192.168.1.1

   dns-server 8.8.8.8

!

!

ip multicast-routing

!

!

!

!

!

!

crypto isakmp policy 2

 encr 3des

 hash md5

 authentication pre-share

crypto isakmp key SECRET_KEY address XXX.XXX.XXX.XXX

!

!

crypto ipsec transform-set cmevpn esp-3des esp-md5-hmac

!

crypto map cmevpn 1 ipsec-isakmp

 set peer XXX.XXX.XXX.XXX

 set transform-set cmevpn

 match address 100

!

bridge irb

!

!

!

interface Tunnel0

 ip address XXX.XXX.XXX.XXX 255.255.255.252

 ip pim sparse-mode

 tunnel source XXX.XXX.XXX.XXX

 tunnel destination XXX.XXX.XXX.1

!

interface Loopback0

 ip address XXX.XXX.XXX.XXX 255.255.255.255

!

interface FastEthernet0

 switchport access vlan 10

!

interface FastEthernet1

 switchport access vlan 10

!

interface FastEthernet2

 switchport access vlan 20

!

interface FastEthernet3

 switchport access vlan 20

!

interface FastEthernet4

 ip address dhcp

 ip nat outside

 ip virtual-reassembly

 duplex auto

 speed auto

 crypto map cmevpn

!

interface Dot11Radio0

 no ip address

 !

 broadcast-key vlan 10 change 45

 !

 !

 encryption vlan 10 mode ciphers tkip

 !

 ssid YOUR_SSID_NETWORK_NAME

    vlan 10

    authentication open

    authentication key-management wpa

    guest-mode

    wpa-psk ascii 0 YOUR_SSID_PASSWORD

 !

 speed basic-1.0 basic-2.0 basic-5.5 6.0 9.0 basic-11.0 12.0 18.0 24.0 36.0 48.0 54.0

 station-role root

 no cdp enable

!

interface Dot11Radio0.10

 encapsulation dot1Q 10 native

 no cdp enable

 bridge-group 1

 bridge-group 1 subscriber-loop-control

 bridge-group 1 spanning-disabled

 bridge-group 1 block-unknown-source

 no bridge-group 1 source-learning

 no bridge-group 1 unicast-flooding

!

interface Vlan1

 no ip address

 ip access-group 102 in

 shutdown

!

interface Vlan10

 no ip address

 ip access-group 102 in

 ip nat inside

 ip virtual-reassembly

 bridge-group 1

 bridge-group 1 spanning-disabled

!

interface Vlan20

 ip address XXX.XXX.XXX.1 255.255.255.0

 ip pim sparse-mode

 ip nat inside

 ip virtual-reassembly

!

interface BVI1

 ip address 192.168.1.1 255.255.255.0

 ip nat inside

 ip virtual-reassembly

!

ip route XXX.XXX.XXX.1 255.255.255.255 FastEthernet4

ip route XXX.XXX.XXX.0 255.255.255.128 Tunnel0

ip route XXX.XXX.XXX.128 255.255.255.128 FastEthernet4

ip route XXX.XXX.XXX.255 255.255.255.255 Tunnel0

!

!

no ip http server

no ip http secure-server

ip pim rp-address XXX.XXX.XXX.254

ip mroute XXX.XXX.XXX.0 255.255.255.128 Tunnel0

ip nat inside source list 1 interface FastEthernet4 overload

!

access-list 1 permit 192.168.1.0 0.0.0.255

access-list 102 permit ip any any

!

!

!

!

control-plane

!

bridge 1 protocol ieee

bridge 1 route ip

!

line con 0

 no modem enable

line aux 0

line vty 0 4

 login

!

scheduler max-task-time 5000

end

]]></description><link>https://mattpearson.github.io/2016/09/03/CME-New-Release-VPN.html</link><guid isPermaLink="true">https://mattpearson.github.io/2016/09/03/CME-New-Release-VPN.html</guid><pubDate>Sat, 03 Sep 2016 00:00:00 GMT</pubDate></item><item><title><![CDATA[RP Filtering]]></title><description><![CDATA[

Why is my server not receiving multicast traffic?

Out of the box linux installations oftentimes enable so-called "reverse path" filtering. This essentially means that if the source ip of the udp packet is not routable through the interface in which the packet arrived, then it will be dropped.

To turn off (disable) this filtering, and allow multicast traffic through, set the rp_filter to 0:

echo "0" > /proc/sys/net/ipv4/conf/all/rp_filter

Lastly, edit /etc/sysctl.conf and change:
ipv4.conf.all.rp_filter = 0

More information available:
http://www.slashroot.in/linux-kernel-rpfilter-settings-reverse-path-filtering
and
http://centoshowtos.org/network-and-security/rp_filter/

]]></description><link>https://mattpearson.github.io/2016/09/02/RP-Filtering.html</link><guid isPermaLink="true">https://mattpearson.github.io/2016/09/02/RP-Filtering.html</guid><pubDate>Fri, 02 Sep 2016 00:00:00 GMT</pubDate></item></channel></rss>


Dr. Royce Avery has over 30 years of experience in Texas public education. He joined Manor ISD as Superintendent in June 2016. Since then, he has implemented significant programmatic changes at every level of the district. He expanded on the success of Manor New Tech High School and implemented New Tech curriculum at the elementary and middle school levels as well. Manor ISD is now the only district in the state offering K-12 New Tech curriculum. Dr. Avery also started Manor ISD's first Fine Arts academies at two elementary schools and a middle school and set three elementary schools and a middle school on the path to International Baccalaureate certification. Under his leadership every Manor ISD middle and elementary school has received a new focus, offering families choice within the district. Dr. Avery believes that the key to educational outcomes is great leadership, and he looks forward to more innovative practices in the 2018-19 school year.


A nice job for McDonald's, Austria. The ingredients for a wrap qualify as a subject for an old oil painting. It was not really easy to get a chicken like this for the food stylist. This special fast food shoot was outstanding.


text:
Lab Manager AcademySubscribe to Lab Manager
Lab Manager | Run Your Lab Like a Business
Lab Management
All Lab Management
Lab Asset Management
Lab Business Management
Lab Leadership & Staffing
Lab Health & Safety
Lab Design
Lab Industry Surveys
Lab Product Categories
White Papers and Application Notes
Linda Comics
Artificial Intelligence Beats Us in Chess, but Not in Memory
The human brain's strategy for storing memories is more efficient than AI's, a new study reveals
Scuola Internazionale Superiore di Studi Avanzati
In the last decades, artificial intelligence (AI) has shown to be very good at achieving exceptional goals in several fields. Chess is one of them: in 1996, for the first time, the computer Deep Blue beat a human player, chess champion Garry Kasparov. A new piece of research shows now that the brain strategy for storing memories may lead to imperfect memories, but in turn, allows it to store more memories, and with less hassle than AI. The new study, carried out by Scuola Internazionale Superiore di Studi Avanzati (SISSA) scientists in collaboration with the Kavli Institute for Systems Neuroscience & Centre for Neural Computation, Trondheim, Norway, has just been published in Physical Review Letters.
Neural networks, real or artificial, learn by tweaking the connections between neurons. Making them stronger or weaker, some neurons become more active, some less, until a pattern of activity emerges. This pattern is what we call "a memory." The AI strategy is to use complex long algorithms, which iteratively tune and optimize the connections. The brain does it much simpler: each connection between neurons changes just based on how active the two neurons are at the same time. When compared to the AI algorithm, this had long been thought to permit the storage of fewer memories. But, in terms of memory capacity and retrieval, this wisdom is largely based on analyzing networks assuming a fundamental simplification: that neurons can be considered as binary units.
Related Series: AI in the Clinical Lab
The new research, however, shows otherwise: the fewer number of memories stored using the brain strategy depends on an unrealistic assumption. When the simple strategy used by the brain to change the connections is combined with biologically plausible models for single neurons response, that strategy performs as well as, or even better, than AI algorithms. How could this be the case? Paradoxically, the answer is in introducing errors: when a memory is effectively retrieved this can be identical to the original input-to-be-memorized or correlated to it. The brain strategy leads to the retrieval of memories which are not identical to the original input, silencing the activity of those neurons that are only barely active in each pattern. Those silenced neurons, indeed, do not play a crucial role in distinguishing among the different memories stored within a same network. By ignoring them, neural resources can be focused on those neurons that do matter in an input-to-be-memorized and enable a higher capacity.
Overall, this research highlights how biologically plausible self-organized learning procedures can be just as efficient as slow and neurally implausible training algorithms.
- This press release was originally published on the SISSA website. It has been edited for style
Tags: Artificial Intelligencecomputer scienceIndustry NewsLife ScienceMachine LearningNeuroscienceProduct Resource: Industry News
Now part of the LabX Media Group: LabX Media Group | Clinical Lab Manager | Privacy | Terms
© 2022 Lab Manager. All rights reserved.
We've updated our Privacy Policy to make it clearer how we use your personal data.
Please read our Cookie Policy to learn how we use cookies to provide you with a better experience.


4,200°K Green Power color temperature lamps available. High 92 CRI, 33,000 initial lumens (105Lm/W). High 90% lumen maintenance at 8,000 hr/High 85% maintenance at 20,000 hr. Double glass jacketed lamp is rated for either open fixture use (without glass lens) or enclosed fixture use (with glass lens).


Wanting to raise the value of their currency has nothing to do with it, as its' value is right where it should be.
on a tenth of a cent Iraq will go far, btw if the us currency was worth a tenth of a cent what would you do?
Er...how could the US currency possibly be worth a tenth of the US currency i.e a tenth of itself?
And where does this idea come from that all international units of currency must be of equivalent value? Do you think the Japanese yen should be worth the same amount as the US dollar?
if the us and englands currency was woth a tenth of a cent was worth like Iraq we would be in the same position going nowhere does that answer your question how many countriesin the world is worth in the world?
@Jayzze wrote: if the us and englands currency was woth a tenth of a cent was worth like Iraq we would be in the same position going nowhere does that answer your question how many countriesin the world is worth in the world?
But US and England aren't Iraq. I'm not following what you are trying to say.
Again, how could a cent be worth a tenth of a cent? A currency can only be valued against a different currency, not against itself. You're not making sense here.
And who says there needs to be a one-to-one exchange rate? The worth of the British pound has fallen markedly against the US dollar. In 1975 the pound was worth over 2.30 dollars. Earlier last century it was worth 4 dollars. It varies.
Again, at the moment the dollar is worth 113.87 Japanese yen. In other words, the yen is worth less than a cent. That doesn't mean that the yen needs to be revalued.
What a currency is worth IS its exchange rate!
I think the boys may be confusing what a currency is worth with inflation.
But...But...But boys. The IQD has more zeros. Maybe we should remove a few, let say...about 3.
Isn't interesting what a Dinar could buy?


results for the fourth quarter and year ended December 31, 2017.
million impact from the sale of our business in Canada.
$11.2 million impact from the sale of our business in Australia.
Operating income decreased 64.3% to $89.6 million.
and businesses sold in 2016.
Americas outdoor revenues decreased $22.1 million, or 1.7%.
International outdoor revenues decreased $75.5 million, or 5.4%.
Operating income decreased 63.5% to $232.4 million.
end-of-year total of more than 13,500.
out, the number of New World Payphones nationally will be 350.
over 800 screens following the fulfillment of existing contracts.
of the city's busiest locations.
million passengers who pass through the airport annually.
administrative expenses (excludes depreciation and amortization).
ended December 31, 2017 and 2016, respectively.
2017 presentation of financial information throughout the press release.
million impact from the sale of certain businesses.
the $13.7 million impact from the sale of certain businesses.
of our business in Australia in the fourth quarter of 2016.
exchange rates and the impact from the sale of certain businesses.
expenses in the prior year.
costs, partially offset by higher site lease expense.
initiatives compared to $1.2 million in the 2016 period.
fourth quarter of 2017 as compared to the fourth quarter of 2016.
million impact from the sale of our businesses in Australia and Turkey.
Ireland due to the loss of contracts.
sale of our business in Australia in the fourth quarter of 2016.
Company's OIBDAN decreased 12.1% in 2017 compared to 2016.
exchange of outdoor markets in the first quarter of 2017.
$2.2 million impact from the sale of the non-strategic markets.
China, primarily from new contracts and digital expansion.
misappropriation of cash identified at our China subsidiary.
efficiency initiatives compared to $7.3 million in 2016.
CCIBV revenues increased $22.7 million during 2017 as compared to 2016.


I expected "Wonder Park" to be one of the lesser animated pictures of 2019. I didn't expect it to be so bizarre.
The film primarily follows June (Brianna Denski), a young girl with a creative imagination who pretends to run an amusement park with her mom (Jennifer Garner). However, when her mom becomes sick with an undisclosed illness, June stops playing with the imaginary world of Wonderland.
Just when it seems her creative spark is gone, though, through a series of events, she actually stumbles across the park from her imagination. But the park isn't all that great. In fact, it's seemingly fallen into disrepair. As a result, June needs to team with her imaginary friends to restore the park.
It seems like the dragons are trained by this point, but the name still rolls off the tongue nicely.
In the third and likely final film in the series that started in 2010, the main character Hiccup (Jay Baruchel), an expert dragon trainer and rider is now chief of Berk. Since the events of the second picture, the island village where vikings reside has become a sort of safe haven for dragons. Because the people of Berk have become experts in handling dragons, thanks largely to Hiccup's efforts in the past two movies, the dragons are able to live in relative peace.
However because of how many dragons are coming to the island for safety, the land is becoming overcrowded. This is on top of the fact that there are antagonistic forces who want to eliminate dragons, seeing them as a threat. In response, Hiccup decides to find the so called "Hidden World," where dragons can live safely without being found.
The streak, unfortunately, is over.
For roughly a decade, I gave movies made by Disney's animation studio very high marks, usually a 4/5 or higher, and regularly included them in my top 10 lists at the end of the year. However, "Ralph Breaks the Internet," which certainly isn't bad per se, has ended that consistency, as it's simply mediocre.
More on that in a moment, but let's look into what this sequel is all about. Unlike this summer's "Incredibles 2," which picked up immediately after the first, "Ralph breaks the Internet" is set in the present time and acknowledges the six years that have passed since the original picture, released in 2012.
The third "Hotel Transylvania" film, like the second in the franchise, provides some fun moments and creates laughs. Yet, it still doesn't reach the level of the first.
The third movie in the series picks up with Dracula (Adam Sandler) not only being overworked, but also finding himself quite lonely lately. Despite feeling that he wants to remain loyal to his late wife, Drac decides that it might be time to look for another person to start a relationship.
Just as he's having this thought process, Drac's daughter Mavis (Selena Gomez) decides to take her dad on a summer vacation to get away from the stress of running the hotel. So, Dracula and his friends, as well as Mavis and her husband Johnny (Andy Samberg) all go on a mega cruise made specifically for monsters. The only problem is cruise is actually managed by the great granddaughter of Van Helsing, who continues to have a grudge against Dracula.
The film focuses on a young orphan girl named Felicie (Elle Fanning), who's attempting to achieve her dream of being a famous ballet dancer in Paris. With the help of her best friend Victor (Dane DeHaan), the two manage to get away from the orphanage and make it to the City of Lights.
Felicie eventually makes it to the ballet dance school and there she meets a former dancer named Odette (Carly Rae Jepsen), who decides to help her get a spot in the intense learning environment. Not only does Felicie have to deal with a rough dance education, though, she also ends up having a rival with another young dancer named Camille (Maddie Ziegler).


text: ..\..\bin\win32\release\marchingCubes.exe --gridx=7 --gridy=8 --gridz=8 --file=VisMale.raw


text:
The Spruce Best Home Paint
Plants A to Z
Pests & Problems
In the Weeds With Plant People
The Spruce Gardening Review Board
Skills & Specialties
Interior Remodel
Outdoor Building
The Spruce Home Improvement Review Board
The Spruce Cleaning Review Board
Home & Gardening Trends
"One Thing" Video Series
Designer Digs
Big Little Spaces
About Us Editorial Guidelines Press and Media Newsletter Contact Us
Home Improvement Interior Remodel
15 Tips for Building the Perfect Home Theater Room
Lee Wallender
Lee has over two decades of hands-on experience remodeling, fixing, and improving homes, and has been providing home improvement advice for over 12 years.
Learn more about The Spruce's Editorial Process
Deane Biermeier
Reviewed by Deane Biermeier
Deane Biermeier is an expert contractor with nearly 30 years of experience in all types of home repair, maintenance, and remodeling. He is a certified lead carpenter and also holds a certification from the EPA. Deane is a member of The Spruce's Home Improvement Review Board.
Learn more about The Spruce's Review Board
Vostok / Getty Images
Building a home theater room can often be the true endpoint of home remodeling. Once you have concluded the more utilitarian work of fixing windows and installing floors, it's time to reach deeper into the bank account and lavish attention on your entertainment needs. After all, who doesn't need a home movie theater room?
But a home theater room is more than just a sofa and a screen. Certain requirements, like controlling outside light and the ability to cast a large enough picture, should be met in order to call this a proper home movie theater. Requirements apply both to video projectors and screens as well as to large, flat-screen TVs.
Locate the Home Theater Room in a Dedicated Space
A dedicated home theater room is a room solely dedicated to watching videos on a big screen. This means that little else happens in that home theater except for screening-related activities. And today, screening means far more than it ever did, with streaming services like Amazon Prime, Netflix, and Hulu, BluRay movies, video gaming, and conventional cable TV.
When the home theater shares space with other activities, the cinematic experience is lessened. When the non-dedicated home theater shares open floor plan space with the kitchen, cooking sounds and smells invade. When the theater is the living room, kids run around and light is difficult to control.
Spare bedrooms work fine, but they do need to be long enough so that viewers can maintain a proper distance from the screen. This is especially important with video projectors. At the extreme end, a projector needs roughly a 14-foot throw distance in order to cast a 150-inch diagonal picture, though short-throw projectors are available.
Control the Ambient Light
Ambient light means light from sources outside of the theater, such as from other rooms or through windows. With most home remodeling, you're always trying to add more natural light. Home theaters are spaces where you want to limit ambient light, whether natural outdoor light or light from other rooms. Light-bleed kills video projection images and it even makes flat-screen viewing less than enjoyable. On the video projector side, you will need a projector with a high lumens rating if you have some ambient light that you cannot control. But the best way to deal with ambient light is simply to stop it before it starts, by choosing a space that already has little light, such as a basement. If you cannot do this, limit the light with light-blocking curtains and shades.
Control the Ambient Sound
Ambient sound is the unwanted sound coming from outside of your home theater. Even if you do manage to find a dedicated space for your home theater, sounds from outside of that space often ruin the viewing experience. Dishwasher, kids in other rooms, kitchen noises, plumbing noises, and sounds from outside the house are just a few examples of ambient sounds that can crash in and destroy your home theater's audio.
Establishing a dedicated space is the first step to controlling outside noise. But you do need to take it a few steps beyond that:
Soundproof your room by adding a second layer of drywall or replacing it with a special sound-reducing wallboard like QuietRock.
Replacing your hollow-core doors with solid doors also goes a long ways toward soundproofing your home cinema.
If you do have windows in your home theater, put up thicker curtains that both block light and absorb sound.
Build a Proper A/V Component Rack
The audio-visual component rack, or A/V rack, is the central point for your source components. Consider the A/V rack to be the central brain that controls all entertainment-related activities in the theater.
Source components such as a BluRay player, cable box, network media streaming box (like Roku), and home theater tuner will operate from here. This should be located near an electric outlet and you should be able to bring in an Internet source wire.
Properly Ventilate the A/V Rack
The A/V component rack should be well-ventilated since components create heat and can be damaged if the heat build-up is excessive. Metal A/V racks are available for purchase that are open-air in front and back. You can build your own A/V rack, as well. The rack needs to be sturdy enough to hold the electronics. It also should be open in front, back, and even the sides, if possible. Finally, using metal grid as a platform for the electronic devices will help promote ventilation.
Make the Home Theater Look Like a Cinema
What is your vision of a home theater? For some homeowners, it's the classic movie theater with red velvet walls, sconce lights, tiered seating, and a popcorn maker. For others, it's a drastically scaled-down version of this. And for another group of people who didn't grow up going to movie theaters, it might mean something completely different.
Older commercial theaters have sloped floors and contemporary ones have elaborate, steeply tiered seating. Home cinema seat tiering is relatively simple to build with a framework of joists of two-by-six or two-by-eight boards set on edge. Three-quarter inch interior grade plywood forms the top, and carpeting goes on top of the plywood.
Plan a Robust, Flexible Lighting System
Cinema light control means the ability to turn lights on and off or to graduate that light within the cinema space. Soffits, rope lights, dimmers, and recessed lights form the backbone of many owner-built home theaters. Soffits are long trays near the ceiling that run around the room's perimeter and are often inlaid with rope lights. Additionally, small recessed lights may be added to the bottoms of the soffits or in the ceiling to shine downward to form the classic home theater look. Try to keep the majority of these lights behind the viewer to avoid degrading the viewing experience.
Limit Reflective Objects
Anything that isn't the screen itself and which reflects light back at the viewer should be minimized or avoided. This means that your paint should be kept to flatter sheens, preferably matte or flat. Shiny doorknobs, hinges, light fixtures, recessed light trim kits, countertops, and fireplace inserts should all be avoided in the crucial zone between the screen and the viewer. If you do have reflective objects, consider reducing their shininess by spray-painting them with dark-colored matte paint.
Plan for Proper Viewing and Seating
No one in the theater should have their view of the screen blocked or be too close or too far away. Tiered seating is a true luxury and one that can only be accomplished in a dedicated cinema space. The problem of blockage is solved by raising rear seats on a platform. Even a modest 6-inch boost can be enough to clear the sight lines.
Distance from the screen is determined by room size in conjunction with the size of the picture you want to display. For flat-screen TVs, your small converted bedroom space might be able to accommodate up to a 55-inch screen before the closest row of viewers begins to feel overwhelmed.
Seating does not need to be specialty home theater seats costing thousands. Any comfortable seat that faces forward, without a high back to obstruct viewers behind you, will do the job.
Control Sound Within the Home Theater
Home theater audio bounces around the walls, ceiling, and flooring. Limiting that bounce is key to achieving perfect home theater sound.
Even if wall-to-wall carpeting isn't your thing, you'll love it for your home theater since it reduces audio-bounce.
Draperies and other soft materials can be installed on the walls.
Soft, cushiony seating absorbs sound better than furniture with hard elements.
Plan for the Flow of Signals
Your entertainment experience depends on the flow of data. This data is carried by wires and through the air.
The days of the entirely self-contained home theater are gone. You may retain your BluRay player to show disks. In fact, since few of the older shows are being transmitted in 4K or HD streaming formats, the only way to see them in crystal-clear resolution is on BluRay.
Still, more and more entertainment is delivered through hard-wired connections and wi-fi signals. Wires need to be hidden as much as possible. Wires that extend to the front and sides of the home theater can be hidden in the soffits. Some home theater audio systems throw signals to the speakers wirelessly.
Add a Drop-Down Movie Screen
If you have a video projector, one perk is that you can tuck the screen away when you are finished watching your show. Flatscreen TVs, on the other hand, cannot be hidden away.
Movie screens can be manually lowered and raised. Or you can invest in an electric movie screen that lowers and raises at the touch of a button.
Keep Your Home Theater Room Simple
Avoid the temptation to load up your home theater with curios and tchotchkes near the screen. You may have purchased those movie posters at auction and want to display them, but they are only a distraction when they are mounted near the screen. Instead, keep them behind the viewers.
Suspend the Projector
To protect your expensive video projector purchase, suspend it from the ceiling rather than place it on a flat surface. Generic suspension kits are available that attach to most video projectors. One benefit of suspending, too, is that many suspension kits have a lock and key that allow you to keep the projector safe from theft.
Use a Dark Paint for Walls and Ceiling
Home theater lighting can be controlled by using dark-colored paint for the walls. Home theaters even benefit from darker ceilings near the screen. White is usually the color recommended for ceilings because it reflects maximum light. But in home theaters, light reflection is not desirable. So, consider toning down the color of the ceiling with a gray or another neutral paint color.
How to Build a DIY Home Theater for All Your Streaming Needs
How to Create a Great Home Theater for Your Budget
How to Build a DIY Projector Screen Inside
The 8 Best Outdoor Movie Screens of 2022
How High to Mount Your TV for the Best at-Home Viewing Experience
How to Decorate Around a TV on a Wall So It Actually Looks Good
What Size Ceiling Fan Do I Need for Each Room?
The 20 Best Gifts for 12-Year-Old Boys of 2022
Here's How to Make Your Windows Bird-Safe
15 Cute and Cozy Backyard Movie Night Ideas You'll Want to Try Tonight
How to Build a Screened-in Porch From Scratch
The 8 Best Night Lights of 2022
25 Studio Apartment Decor and Layout Ideas to Maximize Space
20 Game Rooms That Make Staying at Home a Total Treat
21 Ideas for a TV Above a Fireplace
10 Ideas for Adding Celestial Decor to Your Room
Get daily tips and tricks for making your best home.
The Spruce is part of the Dotdash publishing family.


Australian born, I travelled extensively throughout Europe, Asia and North America for several years before settling in Stockholm, Sweden. After winning a short film contest I was accepted into Stockholm Film School and my final project went on to win numerous awards at independent film festivals in Sweden.
On returning to Australia, I collaborated on a feature film script which won the ZTudio What IF? Award for Best Unproduced Screenplay in 2005.
Since then I've been commissioned to adapt two novels (one written in Australia, the other was on the NY Best Sellers List) and to write a script based on an original idea by a Sydney based production company. Two of my two original screenplays have also been optioned.
At present, I have several spec scripts in development, enjoy writing short stories and have a novel in progress.