Question:
I'm still a student, but the same books keep getting named by my tutors (Rudin, Royden).
I've read Baby Rudin and begun Royden though I'm unsure if there are other books that I "should" be working on if I want to study beyond Masters. I'm not there yet as I'm on a four year course and had a gap year between Years 3 and 4.
Please recommend for Algebra, Linear Algebra and Categories - Analysis, Set Theory, Measure theory (an area I have seen too little books dedicated for).
E.g. Spivak is very good for self learning basic real analysis, but Rudin really cuts to the heart.

EDIT: I now think that this list is long enough that I shall be maintaining it over time--updating it whenever I use a new book/learn a new subject. While every suggestion below should be taken with a grain of salt--I will say that I spend a huge amount of time sifting through books to find the ones that conform best to my (and hopefully your!) learning style.

Here is my two cents (for whatever that's worth). I tried to include all the topics I could imagine you could want to know at this point. I hope I picked the right level of difficult. Feel absolutely free to ask my specific opinion about any book.
Basic Analysis: Rudin--Apostol
Measure Theory: Royden (only if you get the newest fourth edition)--Folland
General Algebra: D&F--Rotman--Lang--Grillet
Finite Group Theory: Isaacs-- Kurzweil
General Group Theory: Robinson--Rotman
Ring Theory: T.Y. Lam-- times two
Commutative Algebra: Eisenbud--A&M--Reid
Homological Algebra: Weibel--Rotman--Vermani
Category Theory: Mac Lane--Adamek et. al--Berrick et. al--Awodey--Mitchell
Linear Algebra: Roman--Hoffman and Kunze--Golan
Field Theory: Morandi--Roman
Complex Analysis: Ahlfors--Cartan--Freitag
Riemann Surfaces: Varolin(great first read, can be a little sloppy though)--Freitag(overall great book for a second course in complex analysis!)--Forster(a little more old school, and with a slightly more algebraic bend then a differential geometric one)--Donaldson
SCV: Gunning et. al--Ebeling
Point-set Topology: Munkres--Steen et. al--Kelley
Differential Topology: Pollack et. al--Milnor--Lee
Algebraic Topology: Bredon--May-- Bott and Tu (great, great book)--Rotman--Massey--Tom Dieck
Differential Geometry: Do Carmo--Spivak--Jost--Lee
Representation Theory of Finite Groups: Serre--Steinberg--Liebeck--Isaacs
General Representation Theory: Fulton and Harris--Humphreys--Hall
Representation Theory of Compact Groups: Tom Dieck et. al--Sepanski
(Linear) Algebraic Groups: Springer--Humphreys
"Elementary" Number Theory: Niven et. al--Ireland et. al
Algebraic Number Theory: Ash--Lorenzini--Neukirch--Marcus--Washington
Fourier Analysis--Katznelson
Modular Forms: Diamond and Shurman--Stein
Local Fields:

Lorenz and Levy--Read chapters 23,24,25. This is by far my favorite quick reference, as well as "learning text" for the basics of local fields one needs to break into other topics (e.g. class field theory).
Serre--This is the classic book. It is definitely low on the readability side, especially notationally. It also has a tendency to consider things in more generality than is needed at a first go. This isn't bad, but is not good if you're trying to "brush up" or quickly learn local fields for another subject.
Fesenko et. al--A balance between 1. and 2. Definitely more readable than 2., but more comprehensive than 1. If you are wondering whether or not so-and-so needs Henselian, this is the place I'd check.
Iwasawa--A great place to learn the bare-bones of what one might need to learn class field theory. I am referencing, in particular, the first three chapters. If you are dead-set on JUST learning what you need to, this is a pretty good reference, but if you're likely to wonder about why so-and-so theorem is true, or get a broader understanding of the basics of local fields, I recommend 1.

Class Field Theory:

Lorenz and Levy--Read chapters 28-32, second only to Iwasawa, but with a different flavor (cohomological vs. formal group laws)
Tate and Artin--The classic book. A little less readable then any of the alternatives here.
Childress--Focused mostly on the global theory opposed to the local. Actually deduces local at the end as a result of global. Thus, very old school.
Iwasawa (read the rest of it!)
Milne--Where I first started learning it. Very good, but definitely roughly hewn. A lot of details are left out, and he sometimes forgets to tell you where you are going.

Metric Groups: Markley
Algebraic Geometry: Reid--Shafarevich--Hartshorne--Griffiths and Harris--Mumford


Question:
Just like this guy's, the color of my stove's flames were affected by the humidifier as well.
Why does this happen?
Is it a good thing or a bad thing ?

OK, this question appears to have generated some controversy. On the one hand is the answer by niels nielsen (currently accepted), which implies that the orange color is from sodium. On the other hand is the answer by StessenJ, which implies that the orange is normal black body radiation from the soot. Plus there are lots of commentators arguing about rightness or wrongness of the sodium answer.
The only good way to settle the matter is an experiment. I did it, with some modifications. First, instead of gas stove I used a jet lighter (ZL-3 ZENGAZ). Second, instead of humidifier I used a simple barber water spray. The third necessary component is a diffraction grating, a cheap one I had bought on AliExpress. I inserted it into colorless safety goggles to avoid necessity for a third hand.
When I lit the lighter I saw a set of images in the first diffraction order: violet, blue, green, yellow and some blurred dim red. So far consistent with the spectrum of blue flame given on Wikipedia. Then I sprayed water in the air, simultaneously moving the lighter trying to find the place where the flame will change color. As the flame got orange jets instead of initial blue, I noticed orange image of the flame appear between red and yellow images in the diffraction grating.
Below is a photo I could take with the grating attached to a photo camera's lens, having mounted the camera on a tripod and holding the lighter and spray in both hands while 10s exposure was in progress (sorry for bad quality). Notice the yellow/orange (colors are not calibrated) tall spike at the RHS: that is the part only present in the orange flame. (The jet indeed became visibly taller when it changed its color to orange.)

From this follows that the orange color indeed comes from sodium, otherwise the orange flame's image would be much wider and spread into multiple colors like the flame from a candle or a non-jet lighter.
The readers are welcome to replicate this experiment.
EDIT
OK, I've managed to measure some spectra using my Amadeus spectrometer with custom driver. I used 15 s integration time with the flame about 3-5 cm from the SMA905 connector on the spectrometer body.
Below the two spectra are superimposed, with the blue curve corresponding to the blue flame, and the orange one corresponds to the flame with some orange. I've filtered the data with 5-point moving average before plotting. The spectrometer has lower sensitivity near  UV and IR, so disregard the noise there.
(Click the image for a larger version.)

What's worth noting is that not only the sodium 590 nm line is present in the orange flame, but also two potassium lines – 766 nm and 770 nm.
EDIT2
Just tried the same with a humidifier instead of the spray. The result with filtered tap water is the same: orange flame with sodium peak. With distilled water, although the experiment with the spray still resulted in orange flame (basically the same as with tap water), with the humidifier I got no orange at all.
Anyway, in no one case was I able to make the lighter emit continuous spectrum. Whenever I got orange flame, it always appeared to be sodium D doublet, not continuous spectrum.


Question:
One of the major issues that we have to deal with in molecular simulations is the calculation of distance-dependent forces. If we can restrict the force and distance functions to have even powers of the separation distance $r$, then we can just compute the square of the distance $r^2 = {\bf r \cdot r}$ and not have to worry about $r$. If there are odd powers, however, then we need to deal with $r = \sqrt{r^2}$.
My question is: how expensive is computing $\sqrt{x}$ as implemented in the libraries of common languages (C/C++, Fortran, Python), etc.? Is there really a lot of performance improvements to be had by hand-tuning the code for specific architectures?

As an extension to moyner's answer, the on-chip sqrt is usually an rsqrt, i.e. a reciprocal square root that computes $a \rightarrow 1/\sqrt{a}$. So if in your code you're only going to use $1/r$ (if you're doing molecular dynamics, you are), you can compute r = rsqrt(r2) directly and save yourself the division. The reason why rsqrt is computed instead of sqrt is that its Newton iteration has no divisions, only additions and multiplications.
As a side-note, divisions are also computed iteratively and are almost just as slow as rsqrt in hardware. If you're looking for efficiency, you're better off trying to remove superfluous divisions.
Some more modern architectures such as IBM's POWER architectures do not provide rsqrt per-se, but an estimate accurate to a few bits, e.g. FRSQRTE. When a user calls rsqrt, this generates an estimate and then one or two (as many as required) iterations of Newton's or Goldschmidt's algorithm using regular multiplications and additions. The advantage of this approach is that the iteration steps may be pipelined and interleaved with other instructions without blocking the FPU (for a very nice overview of this concept, albeit on older architectures, see Rolf Strebel's PhD Thesis).
For interaction potentials, the sqrt operation can be avoided entirely by using a polynomial interpolant of the potential function, but my own work (implemented in mdcore) in this area show that, at least on x86-type architectures, the sqrt instruction is fast enough.
Update
Since this answer seems to be getting quite a bit of attention, I would also like to address the second part of your question, i.e. is it really worth it to try to improve/eliminate basic operations such as sqrt?
In the context of Molecular Dynamics simulations, or any particle-based simulation with cutoff-limited interactions, there is a lot to be gained from better algorithms for neighbour finding. If you're using Cell lists, or anything similar, to find neighbours or create a Verlet list, you will be computing a large number of spurious pairwise distances. In the naive case, only 16% of particle pairs inspected will actually be within the cutoff distance of each other. Although no interaction is computed for such pairs, accessing the particle data and computing the spurious pairwise distance carries a large cost.
My own work in this area (here, here, and here), as well as that of others (e.g. here), show how these spurious computations can be avoided. These neighbour-finding algorithms even out-perform Verlet lists, as described here.
The point I want to emphasize is that although there may be some improvements to gain from better knowing/exploiting the underlying hardware architecture, there are also potentially larger gains to be had in re-thinking the higher-level algorithms.


Question:
We have a lot of Illumina sequenced exome data. Currently we are using spring for its great lossless compression, but we are looking if there is anything better (and most preferably opensource) which can let us compress our fastq files.
We also want to compress or reduce file size of BAM, but using CRAM in lossless mode didn't yield good results. The space savings were decent, roughly ~10% (IMO was expecting more), but the biggest hit came when using it with IGV. We have set up a  and stream bams to IGV (Helped us immensely as people wouldn't have to download and visualize bam files). With Cram, the loading times were significantly high, requiring users to commit more memory for IGV. Sometimes we would have to wait around a minute for reads to show up. With Bam it is near instantaneous.
Can't use lossy compression as these BAM files might be subject to future downstream analysis (Ex. CNV calling, variant calling or something else).
What are some good ways to compress fastq and bam files so we can maximize our storage?

EDIT: I am rewriting the answer in response to updates to the original question.
TL;DR: use CRAM
Background 1: quality binning and FASTQ compression
In the old days, base callers outputted base quality at full resolution – you could see quality from Q2 to Q40 in full range. As a result, quality strings were like semi-random strings and very difficult to compress. Later people gradually realized that keeping base quality in low resolution wouldn't affect downstream analysis. The Illumina basecaller started to output quality in 8 distinct values and later changed that to 4 bins. This change greatly simplified quality string and made them compressed better. For example, in old days, a 30X BAM would take ~100 GB. With quality binning, it would only take ~60 GB.
Background 2: GATK Base quality recalibration
In early 2010s, Illumina base quality was not calibrated well. GATK people introduced BQSR to correct that and observed noticeable improvement in SNP accuracy. Nonetheless, with improved Illumina base caller, their base quality became more accurate. Meanwhile, the world moved to 30X deep sequencing. The depth overwhelms slight inaccuracy in quality. I would say around 2015, BQSR was already unnecessary for data produced at the time.
Does it hurt to apply BQSR? Yes. First, BQSR introduces subtle biases towards the reference and towards known SNPs. Second, BQSR distorts the data. At least for some datasets, I observed that SNP accuracy dropped with variant quality after BQSR; I didn't observe this with raw quality. Third, BQSR is slow. Fourth, for new sequencers producing data at higher quality, BQSR is likely to decrease data quality. Last, related to the question, BQSR added another semi-random quality string and made compression even harder. Nowadays, running BQSR is a waste of resource for worse results. The official GATK best practice no longer uses BQSR according to their WDL file.
CRAM
These days a 30X human CRAM only takes ~15 GB (see this file). This is a huge contrast to ~100 GB BAM in early 2010s. OP only saw ~10% saving probably due to a) BQSR and/or b) old data with full quality resolution.
On encoding/decoding speed, CRAM was much slower than BAM. Not any more. The latest htslib implementation of CRAM is faster than BAM on encoding and only slightly slower on decoding. The poor performance of IGV on CRAM could be that the Java CRAM decoder is not as optimized.
It is true that CRAM is not as widely supported as BAM. However, all the other alternatives are much worse. Petagene said they had IGV-PG (PDF) for their format. That is not official IGV and I couldn't find more recent update beyond the 2019 press release. I don't see other viable options.
Note that the common practice is to keep all raw reads, mapped or not, in BAM or CRAM such that you can get raw reads back later. BAM/CRAM additionally keeps metadata like read group, sample name, run information etc and is actually more popular than FASTQ in large sequencing centers. Also note that you don't need to sort CRAM by coordinate. Unsorted CRAM is only a little larger than sorted CRAM.
CRAM and its competitors
The core CRAM developer, James Bonfield, is one of the most knowledgeable researchers on compression (and one of the best C programmers) in this field. He has done a lot of compression evaluation over the years. The conclusion is that on a fair benchmark, CRAM is comparable to the best tools so far in terms of compression ratio.
Petagene could compress better in the plot @terdon showed mostly because it has a special treatment of the OQ tag generated by GATK BQSR. It is a typical trick marketing people use to make their methods look better. With BQSR phased out, this plot is no longer relevant.
On commercial software
In general, I welcome commercial tools and think they are invaluable to users. I also have huge respect to DRAGEN developers. However, on FASTQ storage, I would strongly recommend against closed-source compressors. If those tools go under, you may lose your data. Not worth it.


Question:
A thought experiment: Imagine the Sun is suddenly removed. We wouldn't notice a difference for 8 minutes, because that's how long light takes to get from the Sun's surface to Earth.
However, what about the Sun's gravitational effect? If gravity propagates at the speed of light, for 8 minutes the Earth will continue to follow an orbit around nothing. If however, gravity is due to a distortion of spacetime, this distortion will cease to exist as soon as the mass is removed, thus the Earth will leave through the orbit tangent, so we could observe the Sun's disappearance more quickly.
What is the state of the research around such a thought experiment? Can this be inferred from observation?

Since general relativity is a local theory just like any good classical field theory, the Earth will respond to the local curvature which can change only once the information about the disappearance of the Sun has been communicated to the Earth's position (through the propagation of gravitational waves).
So yes, the Earth would continue to orbit what should've been the position of the Sun for 8 minutes before flying off tangentially. But I should add that such a disappearance of mass is unphysical anyway since you can't have mass-energy just poofing away or even disappearing and instantaneously appearing somewhere else. (In the second case, mass-energy would be conserved only in the frame of reference in which the disappearance and appearance are simultaneous - this is all a consequence of GR being a classical field theory).
A more realistic situation would be some mass configuration shifting its shape non-spherically in which case the orbits of satellites would be perturbed but only once there has been enough time for gravitational waves to reach the satellite.


Question:
Principal component analysis (PCA) can be used for dimensionality reduction. After such dimensionality reduction is performed, how can one approximately reconstruct the original variables/features from a small number of principal components?
Alternatively, how can one remove or discard several principal components from the data?
In other words, how to reverse PCA?

Given that PCA is closely related to singular value decomposition (SVD), the same question can be asked as follows: how to reverse SVD?

PCA computes eigenvectors of the covariance matrix ("principal axes") and sorts them by their eigenvalues (amount of explained variance). The centered data can then be projected onto these principal axes to yield principal components ("scores"). For the purposes of dimensionality reduction, one can keep only a subset of principal components and discard the rest. (See here for a layman's introduction to PCA.)
Let $\mathbf X_\text{raw}$ be the $n\times p$ data matrix with $n$ rows (data points) and $p$ columns (variables, or features). After subtracting the mean vector $\boldsymbol \mu$ from each row, we get the centered data matrix $\mathbf X$. Let $\mathbf V$ be the $p\times k$ matrix of some $k$ eigenvectors that we want to use; these would most often be the $k$ eigenvectors with the largest eigenvalues. Then the $n\times k$ matrix of PCA projections ("scores") will be simply given by $\mathbf Z=\mathbf {XV}$.
This is illustrated on the figure below: the first subplot shows some centered data (the same data that I use in my animations in the linked thread) and its projections on the first principal axis. The second subplot shows only the values of this projection; the dimensionality has been reduced from two to one:

In order to be able to reconstruct the original two variables from this one principal component, we can map it back to $p$ dimensions with $\mathbf V^\top$. Indeed, the values of each PC should be placed on the same vector as was used for projection; compare subplots 1 and 3. The result is then given by $\hat{\mathbf X} = \mathbf{ZV}^\top = \mathbf{XVV}^\top$. I am displaying it on the third subplot above. To get the final reconstruction $\hat{\mathbf X}_\text{raw}$, we need to add the mean vector $\boldsymbol \mu$ to that:
$$\boxed{\text{PCA reconstruction} = \text{PC scores} \cdot \text{Eigenvectors}^\top + \text{Mean}}$$
Note that one can go directly from the first subplot to the third one by multiplying $\mathbf X$ with the $\mathbf {VV}^\top$ matrix; it is called a projection matrix. If all $p$ eigenvectors are used, then $\mathbf {VV}^\top$ is the identity matrix (no dimensionality reduction is performed, hence "reconstruction" is perfect). If only a subset of eigenvectors is used, it is not identity.
This works for an arbitrary point $\mathbf z$ in the PC space; it can be mapped to the original space via $\hat{\mathbf x} = \mathbf{zV}^\top$.
Discarding (removing) leading PCs
Sometimes one wants to discard (to remove) one or few of the leading PCs and to keep the rest, instead of keeping the leading PCs and discarding the rest (as above). In this case all the formulas stay exactly the same, but $\mathbf V$ should consist of all principal axes except for the ones one wants to discard. In other words, $\mathbf V$ should always include all PCs that one wants to keep.
Caveat about PCA on correlation
When PCA is done on correlation matrix (and not on covariance matrix), the raw data $\mathbf X_\mathrm{raw}$ is not only centered by subtracting  $\boldsymbol \mu$ but also scaled by dividing each column by its standard deviation $\sigma_i$. In this case, to reconstruct the original data, one needs to back-scale the columns of $\hat{\mathbf X}$ with $\sigma_i$ and only then to add back the mean vector $\boldsymbol \mu$.

Image processing example
This topic often comes up in the context of image processing. Consider Lenna -- one of the standard images in image processing literature (follow the links to find where it comes from). Below on the left, I display the grayscale variant of this $512\times 512$ image (file available here).

We can treat this grayscale image as a $512\times 512$ data matrix $\mathbf X_\text{raw}$. I perform PCA on it and compute $\hat {\mathbf X}_\text{raw}$ using the first 50 principal components. The result is displayed on the right.

Reverting SVD
PCA is very closely related to singular value decomposition (SVD), see
Relationship between SVD and PCA. How to use SVD to perform PCA? for more details. If a $n\times p$ matrix $\mathbf X$ is SVD-ed as $\mathbf X = \mathbf {USV}^\top$ and one selects a $k$-dimensional vector $\mathbf z$ that represents the point in the "reduced" $U$-space of $k$ dimensions, then to map it back to $p$ dimensions one needs to multiply it with $\mathbf S^\phantom\top_{1:k,1:k}\mathbf V^\top_{:,1:k}$.

Examples in R, Matlab, Python, and Stata
I will conduct PCA on the Fisher Iris data and then reconstruct it using the first two principal components. I am doing PCA on the covariance matrix, not on the correlation matrix, i.e. I am not scaling the variables here. But I still have to add the mean back. Some packages, like Stata, take care of that through the standard syntax. Thanks to @StasK and @Kodiologist for their help with the code.
We will check the reconstruction of the first datapoint, which is:
5.1        3.5         1.4        0.2

Matlab
load fisheriris
X = meas;
mu = mean(X);

[eigenvectors, scores] = pca(X);

nComp = 2;
Xhat = scores(:,1:nComp) * eigenvectors(:,1:nComp)';
Xhat = bsxfun(@plus, Xhat, mu);

Xhat(1,:)

Output:
5.083      3.5174      1.4032     0.21353

R
X = iris[,1:4]
mu = colMeans(X)

Xpca = prcomp(X)

nComp = 2
Xhat = Xpca$x[,1:nComp] %*% t(Xpca$rotation[,1:nComp])
Xhat = scale(Xhat, center = -mu, scale = FALSE)

Xhat[1,]

Output:
Sepal.Length  Sepal.Width Petal.Length  Petal.Width
   5.0830390    3.5174139    1.4032137    0.2135317

For worked out R example of PCA reconstruction of images see also this answer.
Python
import numpy as np
import sklearn.datasets, sklearn.decomposition

X = sklearn.datasets.load_iris().data
mu = np.mean(X, axis=0)

pca = sklearn.decomposition.PCA()
pca.fit(X)

nComp = 2
Xhat = np.dot(pca.transform(X)[:,:nComp], pca.components_[:nComp,:])
Xhat += mu

print(Xhat[0,])

Output:
[ 5.08718247  3.51315614  1.4020428   0.21105556]

Note that this differs slightly from the results in other languages. That is because Python's version of the Iris dataset contains mistakes.
Stata
webuse iris, clear
pca sep* pet*, components(2) covariance
predict _seplen _sepwid _petlen _petwid, fit
list in 1

  iris   seplen   sepwid   petlen   petwid    _seplen    _sepwid    _petlen    _petwid
setosa      5.1      3.5      1.4      0.2   5.083039   3.517414   1.403214   .2135317


Question:
Yesterday I was debugging some things in R trying to get a popular Flow Cytometry tool to work on our data. After a few hours of digging into the package I discovered that our data was hitting an edge case, and it seems like the algorithm wouldn't work correctly under certain circumstances.
This bug is not neccessarily the most significant issue, but I'm confident that it has occurred for other users before me, perhaps in a more insidious and less obvious way.
Given that since this tool was released, literature has been published that utiltised it, how does the profession handle the discovery of bugs in these widely used packages?
I'm sure that given the piecemeal nature of a lot of the libraries out there, this is going to happen in a much more significant way at some point (i.e. invalidating a large number of published results)
For some context I'm a programmer who's been working across various other parts of software development, and is quite new to Bioinformatics.

I prefer to treat software tools and computers in a similar fashion to laboratory equipment, and in some sense biology in general. Biologists are used to unexpected things happening in their experiments, and it's not uncommon for a new discovery to change the way that people look at something. Things break down, cells die off quicker on a Wednesday afternoon, results are inconsistent, and that third reviewer keeps on about doing that thing that's been done a hundred times before without anything surprising happening (just not this time). It's a good idea to record as much as can be thought of that might influence an experiment, and for software that includes any input data or command line options, and especially software version numbers.
In this sense, a discovered software bug can be treated as a new discovery of how the world works. If the discovery is made public, and other people consider that it's important enough, then some people might revisit old research to see if it changes things.
Of course, the nice thing about software is that bugs can be reported back to the creators of programs, and possibly fixed, resulting in an improved version of the software at a later date. If the bug itself doesn't spark interest and the program gets fixed anyway, people unknowingly use newer versions, and there might be a bit more confusion and discussion about why results don't match similar studies carried out before the software change.
If you want a bit of an idea of the biological equivalent of a major software bug, have a look at the barcode index switching issue, or the cell line contamination issue.


Question:
I'm interested in finding all tennis courts (and other similar well defined features like basketball courts) in my county, and I have aerial imagery of good (but varying) resolution, but I'm not sure of the best way to find them. Here are two examples of the imagery:

I've looked at the various methods, and I think template matching wouldn't work as it would be very slow since there can be arbitrary scale and rotation, and also the color can vary. The Hough transform sounds promising, but once I get all the lines I'm not sure how to find lines that constitute a rectangle with the appropriate ratio (about 36x29 feet), or better yet to account for the other marked lines.
For background, I'm aiming to add all tennis courts in my county to OpenStreetMap.

You have some very strong color and geometry cues you can leverage. I would try the following:

Extract the Green channel & apply watershed type algorithm on it, followed by connected components. Subsequently compute component statistics (area & bounding box) for each component. Retain only the components with area ~= bounding box size. This will be true only for rectangular objects and will eliminate forests/wooded areas etc.
Isolate the white channel (R=G=B) and apply hough transform on the output. This will give you the lines.
Combine 1 & 2 to get your tennis courts.


Question:
Experiment description:
In Lagrange interpolation, the exact equation is sampled at $N$ points (polynomial order $N - 1$) and it is interpolated at 101 points. Here $N$ is varied from 2 to 64. Each time $L_1$, $L_2$ and $L_\infty$ error plots are prepared. It is seen that, when the function is sampled at equi-spaced points, the error drops initially (it happens till $N$ is less than about 15 or so) and then the error goes up with further increase in $N$.
Whereas, if the initial sampling is done at Legendre-Gauss (LG) points (roots of Legendre polynomials), or Legendre-Gauss-Lobatto (LGL) points (roots of Lobatto polynomials), the error drops to machine level and doesn't increase when $N$ is further increased.
My questions are,
What exactly happens in the case of equi-spaced points?
Why does increase in polynomial order cause the error to rise after a certain point?
Does this also mean that if I use equi-spaced points for WENO / ENO reconstruction (using Lagrange polynomials), then in the smooth region, I would get errors? (well, these are only hypothetical questions (for my understanding), it is really not reasonable to reconstruct polynomial of the order of 15 or higher for WENO scheme)
Additional details:
Function approximated:
$f(x) =  \cos(\frac{\pi}{2}~x)$, $x \in [-1, 1]$
$x$ divided into $N$ equispaced (and later LG) points. The function is interpolated at 101 points each time.
Results:

a) Equi-spaced points (interpolation for $N = 65$):

b) Equi-spaced points (error plot, log scale):

a) LG points (Interpolation for $N = 65$):

b) LG points (error plot, log scale):

The problem with equispaced points is that the interpolation error polynomial, i.e.
$$ f(x) - P_n(x) = \frac{f^{(n+1)}(\xi)}{(n+1)!} \prod_{i=0}^n (x - x_i),\quad \xi\in[x_0,x_n] $$
behaves differently for different sets of nodes $x_i$. In the case of equispaced points, this polynomial blows up at the edges.
If you use Gauss-Legendre points, the error polynomial is significantly better behaved, i.e. it doesn't blow up at the edges. If you use Chebyshev nodes, this polynomial equioscillates and the interpolation error is minimal.


Question:
If I have highly skewed positive data I often take logs. But what should I do with highly skewed non-negative data that include zeros? I have seen two transformations used:

$\log(x+1)$ which has the neat feature that 0 maps to 0.
$\log(x+c)$ where c is either estimated or set to be some very small positive value.

Are there any other approaches? Are there any good reasons to prefer one approach over the others?

No-one mentioned the inverse hyperbolic sine transformation. So for completeness I'm adding it here.
This is an alternative to the Box-Cox transformations and is defined by
\begin{equation}
f(y,\theta) = \text{sinh}^{-1}(\theta y)/\theta = \log[\theta y + (\theta^2y^2+1)^{1/2}]/\theta,
\end{equation}
where $\theta>0$. For any value of $\theta$, zero maps to zero. There is also a two parameter version allowing a shift, just as with the two-parameter BC transformation. Burbidge, Magee and Robb (1988) discuss the IHS transformation including estimation of $\theta$.
The IHS transformation works with data defined on the whole real line including negative values and zeros. For large values of $y$ it behaves like a log transformation, regardless of the value of $\theta$ (except 0). The limiting case as $\theta\rightarrow0$ gives $f(y,\theta)\rightarrow y$.
It looks to me like the IHS transformation should be a lot better known than it is.


Question: How is using a 1:1 transformer safer than using the mains straight off? Is it because you can limit the current coming from the transformer whereas straight from the mains its not current limited? I fail to see how its "safer" when playing with electricity is dangerous. Could someone please explain why it is considered safer to be isolated by a transformer.

Without a transformer the live wire is live relative to ground.
If you are at "ground" potential then touching the live wire makes you part of the return path.

{This image taken from an excellent discussion here
With a transformer the output voltage is not referenced to ground - see diagram (a) below. There is no "return path" so you could (stupidly) safely touch the "live " conductor and ground and not received a shock.

From The Electricians Guide
I say "stupidly" as, while this arrangement is safer it is not safe unconditionally. This is because, if there is leakage or hard connection from the other side of the transformer to ground then there may still be a return path - as shown in (b) above. In the diagram the return path is shown as either capacitive or direct. If the coupling is capacitive then you may feel a "tickle" or somewhat mild "bite" from the live conductor. If the other conductor is grounded then you are back to the original transformlerless situation. (Capacitive coupling may occur when an appliance body is connected to a conductor but there is no direct connection from body to ground. The body to ground proximity forms a capacitor.)
SO a transformer makes things safer by providing isolation relative to ground. Murphy / circumstance will work to defeat this isoation.
This is why, ideally, an isolating transformer should be used to protect only one item of equipment at a time. With one item a fault in the equipment will propbably not produce a dangerous situation. The transformer has done its job. BUT with N items of equipment - if one has a fault from neutral to case or is wired wrongly this may defeat the transformer such that a second faulty device may then present a hazard to the user.  In figure (b) above, the first faulty device provides the link at bottom and the second provides the link at top.

Similarly:


Question:
I'm supposed to calculate:
$$\lim_{n\to\infty} e^{-n} \sum_{k=0}^{n} \frac{n^k}{k!}$$
By using WolframAlpha, I might guess that the limit is $\frac{1}{2}$, which is a pretty interesting and nice result. I wonder in which ways we may approach it.

The probabilistic way:

This is $P[N_n\leqslant n]$ where $N_n$ is a random variable with Poisson distribution of parameter $n$. Hence each $N_n$ is distributed like $X_1+\cdots+X_n$ where the random variables $(X_k)$ are independent and identically distributed with Poisson distribution of parameter $1$.
By the central limit theorem, $Y_n=\frac1{\sqrt{n}}(X_1+\cdots+X_n-n)$ converges in distribution to a standard normal random variable $Z$, in particular, $P[Y_n\leqslant 0]\to P[Z\leqslant0]$.
Finally, $P[Z\leqslant0]=\frac12$ and $[N_n\leqslant n]=[Y_n\leqslant 0]$ hence $P[N_n\leqslant n]\to\frac12$, QED.

The analytical way, completing your try:

Hence, I know that what I need to do is to find $\lim\limits_{n\to\infty}I_n$, where
  $$
I_n=\frac{e^{-n}}{n!}\int_{0}^n (n-t)^ne^tdt.$$

To begin with, let $u(t)=(1-t)e^t$, then $I_n=\dfrac{e^{-n}n^n}{n!}nJ_n$ with
$$
J_n=\int_{0}^1 u(t)^n\mathrm dt.
$$
Now, $u(t)\leqslant\mathrm e^{-t^2/2}$ hence
$$
J_n\leqslant\int_0^1\mathrm e^{-nt^2/2}\mathrm dt\leqslant\int_0^\infty\mathrm e^{-nt^2/2}\mathrm dt=\sqrt{\frac{\pi}{2n}}.
$$
Likewise, the function $t\mapsto u(t)\mathrm e^{t^2/2}$ is decreasing on $t\geqslant0$ hence $u(t)\geqslant c_n\mathrm e^{-t^2/2}$ on $t\leqslant1/n^{1/4}$, with $c_n=u(1/n^{1/4})\mathrm e^{-1/(2\sqrt{n})}$, hence
$$
J_n\geqslant c_n\int_0^{1/n^{1/4}}\mathrm e^{-nt^2/2}\mathrm dt=\frac{c_n}{\sqrt{n}}\int_0^{n^{1/4}}\mathrm e^{-t^2/2}\mathrm dt=\frac{c_n}{\sqrt{n}}\sqrt{\frac{\pi}{2}}(1+o(1)).
$$
Since $c_n\to1$, all this proves that $\sqrt{n}J_n\to\sqrt{\frac\pi2}$. Stirling formula shows that the prefactor $\frac{e^{-n}n^n}{n!}$ is equivalent to $\frac1{\sqrt{2\pi n}}$. Regrouping everything, one sees that $I_n\sim\frac1{\sqrt{2\pi n}}n\sqrt{\frac\pi{2n}}=\frac12$.

Moral:
  The probabilistic way is shorter, easier, more illuminating, and more fun.
Caveat:
  My advice in these matters is, clearly, horribly biased.


Question:
I have a series of data points $(x_i,y_i)$ which I expect to (approximately) follow a function $y(x)$ that asymptotes to a line at large $x$. Essentially, $f(x) \equiv y(x) - (ax + b)$ approaches zero as $x \to \infty$, and the same can probably be said of all the derivatives $f'(x)$, $f''(x)$, etc. But I don't know what the functional form for $f(x)$ is, if it even has one that can be described in terms of elementary functions.
My goal is to get the best possible estimate of the asymptotic slope $a$. The obvious crude method is to pick out the last few data points and do a linear regression, but of course this will be inaccurate if $f(x)$ does not become "flat enough" within the range of $x$ for which I have data. The obvious less-crude method is to assume that $f(x) \approx \exp(-x)$ (or some other particular functional form) and fit to that using all the data, but the simple functions I've tried like $\exp(-x)$ or $\dfrac1{x}$ don't quite match the data at lower $x$ where $f(x)$ is large. Is there a known algorithm for determining the asymptotic slope that would do better, or that could provide a value for the slope along with a confidence interval, given my lack of knowledge of exactly how the data approach the asymptote?

This sort of task tends to come up frequently in my work with various data sets, so I'm mostly interested in general solutions, but by request I'm linking to the particular data set that prompted this question. As described in comments, the Wynn $\epsilon$ algorithm gives a value that, as far as I can tell, is somewhat off. Here is a plot:

(It does look like there's a slight downward curve at high x values, but the theoretical model for this data predicts that it should be asymptotically linear.)

It's a rather rough algorithm, but I'd use the following procedure for a crude estimate: if, as you say, the purported $f(x)$ that represents your $(x_i,y_i)$ is already almost linear as $x$ increases, what I'd do is to take differences $\dfrac{y_{i+1}-y_i}{x_{i+1}-x_i}$, and then use an extrapolation algorithm like the Shanks transformation to estimate the limit of the differences. The result is hopefully a good estimate of this asymptotic slope.

What follows is a Mathematica demonstration. The Wynn $\epsilon$ algorithm is a convenient implementation of the Shanks transformation, and it is built in as the (hidden) function SequenceLimit[]. We try out the procedure on the function
$$\frac4{x^2+3}+2 x+e^{-4 x}+3$$
xdata = RandomReal[{20, 40}, 25];
ydata = Table[(3 + 13*E^(4*x) + 6*E^(4*x)*x + x^2 + 3*E^(4*x)*x^2 +
      2*E^(4*x)*x^3)/(E^(4*x)*(3 + x^2)), {x, xdata}];

SequenceLimit[Differences[ydata]/Differences[xdata],
              Method -> {"WynnEpsilon", Degree -> 2}]
1.999998

I might as well show off how simple the algorithm is:
wynnEpsilon[seq_?VectorQ] :=
 Module[{n = Length[seq], ep, res, v, w}, res = {};
  Do[ep[k] = seq[[k]];
   w = 0;
   Do[v = w; w = ep[j];
    ep[j] =
     v + (If[Abs[ep[j + 1] - w] > 10^-(Precision[w]), ep[j + 1] - w,
         10^-(Precision[w])])^-1;, {j, k - 1, 1, -1}];
   res = {res, ep[If[OddQ[k], 1, 2]]};, {k, n}];
  Flatten[res]]

Last[wynnEpsilon[Differences[ydata]/Differences[xdata]]]
1.99966

This implementation is adapted from Weniger's paper.


Question:
What is your favorite statistical quote?
This is community wiki, so please one quote per answer.

All models are wrong, but some are useful. (George E. P. Box)

Reference: Box & Draper (1987), Empirical model-building and response surfaces, Wiley, p. 424.
Also: G.E.P. Box (1979), "Robustness in the Strategy of Scientific Model Building" in Robustness in Statistics (Launer & Wilkinson eds.), p. 202.


Question: What causes the noise when you crack a joint? Is joint cracking harmful?

The exact mechanism is unclear. Here are some possible causes:

rapid collapsing of cavities inside the joint [1];
rapid ligament stretching [1];
breaking of intra-articular adhesions [1];
escaping gases from synovial fluid [2];
movements of joints, tendons and ligaments [2];
mechanic interaction between rough surfaces [2], mostly in pathological situations like arthritis (and it is called crepitus [3]).

There are no known bad effects of joint cracking [1, 4].

There are no long term sequelae of these noises, and they do not lead to future problems. There is no basis for the admonition to not crack your knuckles because it can lead to arthritis. There are no supplements or exercises to prevent these noises [4].

And no good effects either:

Knuckle "cracking" has not been shown to be harmful or beneficial. More specifically, knuckle cracking does not cause arthritis [5].

References:

Wikipedia contributors, "Cracking joints," Wikipedia, The Free Encyclopedia,  (accessed July 22, 2014).
The Library of Congress. Everyday Mysteries. What causes the noise when you crack a joint? Available from  (accessed 22.07.2014)
Wikipedia contributors, "Crepitus," Wikipedia, The Free Encyclopedia,  (accessed July 22, 2014).
Johns Hopkins Sports Medicine Patient Guide to Joint Cracking & Popping. Available from  (accessed 22.07.2014)
WebMD, LLC. Will Joint Cracking Cause Osteoarthritis? Available from  (accessed 22.07.2014)


Question:
Here is how I have understood nested vs. crossed random effects:
Nested random effects occur when a lower level factor appears only within a particular level of an upper level factor.

For example, pupils within classes at a fixed point in time.
In lme4 I thought that we represent the random effects for nested data in either of two equivalent ways:
(1|class/pupil)  # or
(1|class) + (1|class:pupil)

Crossed random effects means that a given factor appears in more than one level of the upper level factor.

For example, there are pupils within classes measured over several years.
In lme4, we would write:
(1|class) + (1|pupil)

However, when I was looking at a particular nested dataset, I noticed that both model formulas gave identical results (code and output below). However I have seen other datasets where the two formulas produced different results.  So what is going on here?
mydata <- read.csv("
# (the data is no longer at `
# hence the link to web.archive.org)
# Crossed version:
Linear mixed model fit by REML ['lmerMod']
Formula: mathgain ~ (1 | schoolid) + (1 | classid)
   Data: mydata

REML criterion at convergence: 11768.8

Scaled residuals:
    Min      1Q  Median      3Q     Max
-4.6441 -0.5984 -0.0336  0.5334  5.6335

Random effects:
 Groups   Name        Variance Std.Dev.
 classid  (Intercept)   99.23   9.961
 schoolid (Intercept)   77.49   8.803
 Residual             1028.23  32.066
Number of obs: 1190, groups:  classid, 312; schoolid, 107

# Nested version:
Formula: mathgain ~ (1 | schoolid/classid)

REML criterion at convergence: 11768.8

Scaled residuals:
    Min      1Q  Median      3Q     Max
-4.6441 -0.5984 -0.0336  0.5334  5.6335

Random effects:
 Groups           Name        Variance Std.Dev.
 classid:schoolid (Intercept)   99.23   9.961
 schoolid         (Intercept)   77.49   8.803
 Residual                     1028.23  32.066
Number of obs: 1190, groups:  classid:schoolid, 312; schoolid, 107

(This is a fairly long answer, there is a summary at the end)
You are not wrong in your understanding of what nested and crossed random effects are in the scenario that you describe. However, your definition of crossed random effects is a little narrow. A more general definition of crossed random effects is simply: not nested. We will look at this at the end of this answer, but the bulk of the answer will focus on the scenario you presented, of classrooms within schools.
First note that:
Nesting is a property of the data, or rather the experimental design, not the model.
Also,
Nested data can be encoded in at least 2 different ways, and this is at the heart of the issue you found.
The dataset in your example is rather large, so I will use another schools example from the internet to explain the issues. But first, consider the following over-simplified example:

Here we have classes nested in schools, which is a familiar scenario. The important point here is that, between each school, the classes have the same identifier, even though they are distinct if they are nested. Class1 appears in School1, School2 and School3. However if the data are nested then Class1 in School1 is not the same unit of measurement as Class1 in School2 and School3. If they were the same, then we would have this situation:

which means that every class belongs to every school. The former is a nested design, and the latter is a crossed design (some might also call it multiple membership. Edit: For a discussion of the differences between multiple membership and crossed random effects, see here ), and we would formulate these in lme4 using:
(1|School/Class) or equivalently (1|School) + (1|Class:School)
and
(1|School) + (1|Class)
respectively. Due to the ambiguity of whether there is nesting or crossing of random effects, it is very important to specify the model correctly as these models will produce different results, as we shall show below. Moreover, it is not possible to know, just by inspecting the data, whether we have nested or crossed random effects. This can only be determined with knowledge of the data and the experimental design.
But first let us consider a case where the Class variable is coded uniquely across schools:

There is no longer any ambiguity concerning nesting or crossing.  The nesting is explicit. Let us now see this with an example in R, where we have 6 schools (labelled I-VI) and 4 classes within each school (labelled a to d):
> dt <- read.table("
                   header=TRUE, sep=",", na.strings="NA", dec=".", strip.white=TRUE)
> # update 1: Data was previously publicly available from
> #
> # but the link is now broken.
> # update 2: The link is broken again. A new link is used. The previous link was:
> xtabs(~ school + class, dt)

        class
school  a  b  c  d
   I   50 50 50 50
   II  50 50 50 50
   III 50 50 50 50
   IV  50 50 50 50
   V   50 50 50 50
   VI  50 50 50 50

We can see from this cross tabulation that every class ID appears in every school, which satisfies your definition of crossed random effects (in this case we have fully, as opposed to partially, crossed random effects,  because every class occurs in every school). So this is the same situation that we had in the first figure above. However, if the data are really nested and not crossed, then we need to explicitly tell lme4:
> m0 <- lmer(extro ~ open + agree + social + (1 | school/class), data = dt)
> summary(m0)

Random effects:
 Groups       Name        Variance Std.Dev.
 class:school (Intercept)  8.2043  2.8643
 school       (Intercept) 93.8421  9.6872
 Residual                  0.9684  0.9841
Number of obs: 1200, groups:  class:school, 24; school, 6

Fixed effects:
              Estimate Std. Error t value
(Intercept) 60.2378227  4.0117909  15.015
open         0.0061065  0.0049636   1.230
agree       -0.0076659  0.0056986  -1.345
social       0.0005404  0.0018524   0.292

> m1 <- lmer(extro ~ open + agree + social + (1 | school) + (1 |class), data = dt)
summary(m1)

Random effects:
 Groups   Name        Variance Std.Dev.
 school   (Intercept) 95.887   9.792
 class    (Intercept)  5.790   2.406
 Residual              2.787   1.669
Number of obs: 1200, groups:  school, 6; class, 4

Fixed effects:
             Estimate Std. Error t value
(Intercept) 60.198841   4.212974  14.289
open         0.010834   0.008349   1.298
agree       -0.005420   0.009605  -0.564
social      -0.001762   0.003107  -0.567

As expected, the results differ because m0 is a nested model while m1 is a crossed model.
Now, if we introduce a new variable for the  class identifier:
> dt$classID <- paste(dt$school, dt$class, sep=".")
> xtabs(~ school + classID, dt)

      classID
school I.a I.b I.c I.d II.a II.b II.c II.d III.a III.b III.c III.d IV.a IV.b
   I    50  50  50  50    0    0    0    0     0     0     0     0    0    0
   II    0   0   0   0   50   50   50   50     0     0     0     0    0    0
   III   0   0   0   0    0    0    0    0    50    50    50    50    0    0
   IV    0   0   0   0    0    0    0    0     0     0     0     0   50   50
   V     0   0   0   0    0    0    0    0     0     0     0     0    0    0
   VI    0   0   0   0    0    0    0    0     0     0     0     0    0    0

      classID
school IV.c IV.d V.a V.b V.c V.d VI.a VI.b VI.c VI.d
   I      0    0   0   0   0   0    0    0    0    0
   II     0    0   0   0   0   0    0    0    0    0
   III    0    0   0   0   0   0    0    0    0    0
   IV    50   50   0   0   0   0    0    0    0    0
   V      0    0  50  50  50  50    0    0    0    0
   VI     0    0   0   0   0   0   50   50   50   50

The cross tabulation shows that each level of class occurs only in one level of school, as per your definition of nesting. This is also the case with your data, however it is difficult to show that with your data because it is very sparse. Both model formulations will now produce the same output (that of the nested model m0 above):
> m2 <- lmer(extro ~ open + agree + social + (1 | school/classID), data = dt)
> summary(m2)

Random effects:
 Groups         Name        Variance Std.Dev.
 classID:school (Intercept)  8.2043  2.8643
 school         (Intercept) 93.8419  9.6872
 Residual                    0.9684  0.9841
Number of obs: 1200, groups:  classID:school, 24; school, 6

Fixed effects:
              Estimate Std. Error t value
(Intercept) 60.2378227  4.0117882  15.015
open         0.0061065  0.0049636   1.230
agree       -0.0076659  0.0056986  -1.345
social       0.0005404  0.0018524   0.292

> m3 <- lmer(extro ~ open + agree + social + (1 | school) + (1 |classID), data = dt)
> summary(m3)

Random effects:
 Groups   Name        Variance Std.Dev.
 classID  (Intercept)  8.2043  2.8643
 school   (Intercept) 93.8419  9.6872
 Residual              0.9684  0.9841
Number of obs: 1200, groups:  classID, 24; school, 6

Fixed effects:
              Estimate Std. Error t value
(Intercept) 60.2378227  4.0117882  15.015
open         0.0061065  0.0049636   1.230
agree       -0.0076659  0.0056986  -1.345
social       0.0005404  0.0018524   0.292

It is worth noting that crossed random effects do not have to occur within the same factor - in the above the crossing was completely within school. However, this does not have to be the case, and very often it is not. For example, sticking with a school scenario, if instead of classes within schools we have pupils within schools, and we were also interested in the doctors that the pupils were registered with, then we would also have nesting of pupils within doctors. There is no nesting of schools within doctors, or vice versa, so this is also an example of crossed random effects, and we say that schools and doctors are crossed. A similar scenario where crossed random effects occur is when individual observations are nested within two factors simultaneously, which commonly occurs with so-called repeated measures subject-item data. Typically each subject is measured/tested multiple times with/on different items and these same items are measured/tested by different subjects. Thus, observations are clustered within subjects and within items, but items are not nested within subjects or vice-versa. Again, we say that subjects and items are crossed.
Summary: TL;DR
The difference between crossed and nested random effects is that nested random effects occur when one factor (grouping variable) appears only within a particular level of another factor (grouping variable). This is specified in lme4 with:
(1|group1/group2)
where group2 is nested within group1.
Crossed random effects are simply: not nested. This can occur with three or more grouping variables (factors) where one factor is separately nested in both of the others, or with two or more factors where individual observations are nested separately within the two factors. These are specified in lme4 with:
(1|group1) + (1|group2)


Question:
What is the difference between data mining, statistics, machine learning and AI?
Would it be accurate to say that they are 4 fields attempting to solve very similar problems but with different approaches? What exactly do they have in common and where do they differ? If there is some kind of hierarchy between them, what would it be?
Similar questions have been asked previously but I still don't get it:

Data Mining and Statistical Analysis
The Two Cultures: statistics vs. machine learning?

There is considerable overlap among these, but some distinctions can be made.  Of necessity, I will have to over-simplify some things or give short-shrift to others, but I will do my best to give some sense of these areas.
Firstly, Artificial Intelligence is fairly distinct from the rest.  AI is the study of how to create intelligent agents.  In practice, it is how to program a computer to behave and perform a task as an intelligent agent (say, a person) would.  This does not have to involve learning or induction at all, it can just be a way to 'build a better mousetrap'.  For example, AI applications have included programs to monitor and control ongoing processes (e.g., increase aspect A if it seems too low).  Notice that AI can include darn-near anything that a machine does, so long as it doesn't do it 'stupidly'.
In practice, however, most tasks that require intelligence require an ability to induce new knowledge from experiences.  Thus, a large area within AI is machine learning.  A computer program is said to learn some task from experience if its performance at the task improves with experience, according to some performance measure.  Machine learning involves the study of algorithms that can extract information automatically (i.e., without on-line human guidance).  It is certainly the case that some of these procedures include ideas derived directly from, or inspired by, classical statistics, but they don't have to be.  Similarly to AI, machine learning is very broad and can include almost everything, so long as there is some inductive component to it.  An example of a machine learning algorithm might be a Kalman filter.
Data mining is an area that has taken much of its inspiration and techniques from machine learning (and some, also, from statistics), but is put to different ends.  Data mining is carried out by a person, in a specific situation, on a particular data set, with a goal in mind.  Typically, this person wants to leverage the power of the various pattern recognition techniques that have been developed in machine learning.  Quite often, the data set is massive, complicated, and/or may have special problems (such as there are more variables than observations).  Usually, the goal is either to discover / generate some preliminary insights in an area where there really was little knowledge beforehand, or to be able to predict future observations accurately.  Moreover, data mining procedures could be either 'unsupervised' (we don't know the answer--discovery) or 'supervised' (we know the answer--prediction).  Note that the goal is generally not to develop a more sophisticated understanding of the underlying data generating process.  Common data mining techniques would include cluster analyses, classification and regression trees, and neural networks.
I suppose I needn't say much to explain what statistics is on this site, but perhaps I can say a few things.  Classical statistics (here I mean both frequentist and Bayesian) is a sub-topic within mathematics.  I think of it as largely the intersection of what we know about probability and what we know about optimization.  Although mathematical statistics can be studied as simply a Platonic object of inquiry, it is mostly understood as more practical and applied in character than other, more rarefied areas of mathematics.  As such (and notably in contrast to data mining above), it is mostly employed towards better understanding some particular data generating process.  Thus, it usually starts with a formally specified model, and from this are derived procedures to accurately extract that model from noisy instances (i.e., estimation--by optimizing some loss function) and to be able to distinguish it from other possibilities (i.e., inferences based on known properties of sampling distributions).  The prototypical statistical technique is regression.


Question:
When I pet my cat, and then touch her on the nose, I get a little shock. Sometimes, when she walks up to something, her nose sparks and she jumps back and puffs out. I was wondering how I might go about measuring the capacitance of my cat.
So how many micro-farads does my cat have? I don't think I can just attach the black thing on the multimeter to her tail and then touch the red side to her nose as in this wikihow article. Neither the wiki article on Body capacitance nor this stack exchange question on the same topic tell me anything about measuring.
I have an I2C capsense chip for my Arduino, but that just seems to throw out randomish numbers between 200 and a couple of thousand, and I'm not sure what to do with those numbers even if there was any repeatability to them.
Would it be possible to create a strap on display for my cat that would show "current charge" for my cat on a bright orange LED grid? Or do I necessarily need to have a reference voltage (my understanding of electricity is that voltage is always relative, does this apply for static electricity as well?)
Thanks in advance,
Tim
EDIT: While Russell McMahon's answer in theory seems to work, I don't think his method is as easy to implement as George Herold's. Both answers do seem to answer the immediate question as posed in the title. However, neither is entirely complete. They both hinge on the requirement of having a fully charged cat. But how do we know how many times to pat our cats before they are fully charged.
It is vital to also be able to measure the charge in real time, as per JRE's response in order to set a foundation for Herold's or McMahon's methods. Using JRE's technique, we can charge the cat until the charge stops rising, THEN measure the cat's capacitance.
Ideally, if we are to verify the potential for petting power as the purrfect post-fosil fuel energy source we will need reliable real time measurement of the cat's stored milliwatt hours as well as purrcentage charge and charge stored purr pat.

"Touch Not The Cat, Bot a Glove"

DTTAH / ACNR / IANAL / YMMV *
Equipment:
High impedance voltmeter / oscilloscope with HV probe.
High voltage low capacitance capacitors (1 10 100 1000 pF) x 2 of each.
Pretest - charge capacitors to some semi known high voltage and measure with voltmeter to determine measurement ability.
For purrfect results there should be minimal paws between first and second iterations of 2.3.4.

Select cap - say 100 pF.
Discharge cap (short)
Connect one end of cap to ground - one end of cap to cat.
.... (   How "to cat" is achieved is left as an exercise for the reader.)
.... (Cap and cat are now at same purrtential)
Disconnect cap from cat
Measure Vcap
repeat 2. 3. 4.
Compare readings.
Repeat with higher and lower caps. Aim is range where V1 / V2 is usefully high - say about 2:1.

Processing.
When cap connects to cat cap is charged. Cat and cap share charge in proportion to capacitances. Overall voltage drops to reflect increase in system capacitance from addin cap to Ccat. If Vcat before and after transfer was known you could calculate Ccat.
But Vcat 'a bit hard' to determine.
Repeating process gives a second point and 2 simultaneous equations can be solved to give Ccat.
If Ccap << Ccat the delta V is small and results are ill conditioned.
If Ccap >> Ccat the delta V is large and results are ill conditioned.
If Ccap ~~~= Ccat the porridge is just right and the bed is just right.
If Ccap = Ccat then voltage will halve on second reading.
V = Vcat_original / 2
Otherwise ratio change is related to inverse proportion to capacitances.
V2 = V1 x Ccat/(Ccat + Ccap) or
Say V1/V2 = 0.75
Ccat = 3 x Ccap.
E&OE ....

DTTAH ......  Don't try this at home
ACNR ........ All care, no responsibility
IANAL ....... I am not a lawyer
YMMV  ....... Your mileage WILL vary
E&OE  ........ Errors & Omissions excepted.


Question:
If you watched the last Olympics like me you probably also observed that most medallists in running events were black. Why is that? I discussed this with university grad friends and researchers and we only came up with hypotheses but nobody had an actual explanation. Is it cultural, genetic, other reasons or nobody really know?
Update:
Sprint and distance running requiring different attributes for being the best, let separate this question in two parts: 1) Sprint (i.e. 100m) and 2) Distance running (@Forest already provided a great answer for this).
Note: I know this question can potentially bring disrespectful answers/comments, but I'm hopeful that this site and its members can answer this interesting question. Otherwise, I'll simply erase my question.

It's an interesting question and one that has been asked before. NPR did a story in 2013 on this topic, but their question was a bit more focused than just "why are so many black people good runners?"
The observation that led to their story wasn't just that black people in general were over-represented among long-distance running medalists, but that Kenyans in particular were over-represented. Digging deeper, the story's investigators found that the best runners in Kenya also tended to come from the same tribal group: the Kalenjin.
I'm not going to repeat all the details in that story (which I encourage you to read), but the working answer that the investigators came up with is that there are both genetic traits and certain cultural practices that contribute to this tribe's success on the track. Unfortunately, from the point of view of someone who wants a concise answer, it is very difficult to separate and quantify the exact contributions that each genetic and cultural modification makes to the runners' successes.
Pubmed also has a number of peer-reviewed papers detailing the Kalenjin running phenomenon, but I could only find two with free full-access and neither had the promising title of "Analysis of the Kenyan distance-running phenomenon," for which you have to pay. Insert annoyed frowning face here.
I did a quick search of some Kenyan gold medalist runners in the 2016 Olympics and sure enough, several (though certainly not all) are Kalenjin. I'm less sure about the Ethiopian runners, since most research that I found online seems to focus on the Kenyans, but I'd feel safe hypothesizing that something similar can explain their dominance at the podium.
So, the short answer to your question is that it's not just "black people" who dominate the world of competitive long-distance running, but that very specific subsets of people (who, as it turns out, are black) do display a competitive advantage and that both genetics and culture account for much of this advantage.


Question:
Why does evolution not make life longer for humans or any other species?
Wouldn't evolution favour a long life?

Why do we age is a classical question in Evolutionary Biology. There are several things to consider when we think of how genes that cause disease, aging, and death to evolve.
One explanation for the evolution of aging is the mutation accumulation (MA) hypothesis. This hypothesis by P. Medawar states that mutations causing late life deleterious (damaging) effects can build up in the genome more than diseases that cause early life disease. This is because selection on late acting mutations is weaker. Mutations that cause early life disease will more severely reduce the fitness of its carrier than late acting mutations. For example, if we said in an imaginary species that all individuals cease to reproduce at 40 years old and a mutation arises that causes a fatal disease at 50 years old then selection can not remove it from the population - carriers will have as many children as those who do not have the gene. Under the mutation accumulation hypothesis it is then possible for mutations to drift through the population.
Another hypothesis which could contribute to aging is the antagonistic pleiotropy (AP) hypothesis of G.C. Williams. Pleiotropy is when genes have more than one effect, such genes tend to cause correlations between traits, height and arm length probably have many of the same genes affecting them, otherwise there would be no correlation between arm length and height (though environment and linkage can also cause these patterns)... Back to AP as an explanation for aging, if a gene improves fitness early in life, but causes late life disease it can spread through the population via selection. The favourable early effect spreads well because of selection and, just as with MA, selection can not "see" the late acting disease.
Under both MA and AP the key point is that selection is less efficient at removing late acting deleterious mutations, and they may spread more rapidly thanks to beneficial early life effects. Also if there is extrinsic mortality (predation etc.) then the effect of selection is also weakened on alleles that affect late life. The same late-life reduction in the efficacy of selection also slows the rate at which alleles increasing lifespan spread.
A third consideration is the disposable-soma model, a description by T. Kirkwood of life-history trade-offs which might explain why aging and earlier death could be favoured. The idea is that individuals have a limited amount of resources available to them - perhaps because of environmental constraints or ability to acquire/allocate the resources. If we then assume that individuals have to use their energy for two things, staying alive via repair and maintenance (somatic-maintenance) and making offspring (reproductive-investment), then any energy devoted to one will take away from the other. If an individual carries a gene that makes it devote all of its energy to somatic maintenance then its fitness will be very low (probably 0!) and that gene will not spread. If the level of maintenance required to live forever costs more energy than an individual can spare without suffering from low fitness (very likely) or can even acquire and efficiently convert in the first place (also very likely) then high-maintenance alleles will not spread (and aging & death will continue to occur).
To go a little further, it is common for sexes to age differently (this is what I work on) and one possible explanation is that the sexes favour different balances of the trade off between somatic-maintenance and reproductive investment, this can lead to conflict over the evolution of genes affecting this balance and slow the rates of evolution to sex specific optima. This paper provides a good review of the area.
To summarise, evolution has not managed to get rid of death via genetic disease etc. (intrinsic mortality) because the effect is only weakly selected against, and those alleles may provide some early life benefit, and resource limitation may also reduce the potential to increase lifespan due to trade-offs with reproductive effort. Adaptive evolution is not about the survival of the fittest but the reproduction of the fittest - the fittest allele is the one which spreads the most effectively.
EDIT: Thanks to Remi.b for also pointing out some other considerations.
Another thought is that of altruistic aging - aging for the good of the population (the population is likely to contain related individuals, you are related to all other humans to some degree). In this model aging is an adaptive process (unlike in MA where it is just a consequence of weak selection). By dying an individual makes space for it's offspring/relatives to survive (because resources are then less likely to limit populations). This will stop excessive population growth which could lead to crashes in the population and so, by dying earlier, an individual promotes the likelihood that its progeny will survive. Arguments of altruistic sacrifice are often hard to promote but recent work suggests that this is a more plausible model than once thought.
Evolvabilty theories also suggest that aging is an adaptive process. These suggest that populations, composed of a mixture of young and old, have biases in how well adapted the members of the population are - where younger individuals are better adapted (because they were produced more recently it is likely that the environment is similar to the environment they are favoured in). Thus by removing the less well adapted individuals from a population via senescence and freeing up resources for younger better adapted individuals, a population evolves more rapidly towards it optimal state.


Question: Maybe the concept, why it's used, and an example.

First, we need to understand what is a Markov chain. Consider the following weather example from Wikipedia. Suppose that weather on any given day can be classified into two states only: sunny and rainy. Based on past experience, we know the following:
$P(\text{Next day is Sunny}\,\vert \,\text{Given today is Rainy)}=0.50$
Since, the next day's weather is either sunny or rainy it follows that:
$P(\text{Next day is Rainy}\,\vert \,\text{Given today is Rainy)}=0.50$
Similarly, let:
$P(\text{Next day is Rainy}\,\vert \,\text{Given today is Sunny)}=0.10$
Therefore, it follows that:
$P(\text{Next day is Sunny}\,\vert \,\text{Given today is Sunny)}=0.90$
The above four numbers can be compactly represented as a transition matrix which represents the probabilities of the weather moving from one state to another state as follows:
$P = \begin{bmatrix}
& S & R \\
S& 0.9 & 0.1 \\
R& 0.5 & 0.5
\end{bmatrix}$
We might ask several questions whose answers follow:

Q1: If the weather is sunny today then what is the weather likely to be tomorrow?
A1: Since, we do not know what is going to happen for sure, the best we can say is that there is a $90\%$ chance that it is likely to be sunny and $10\%$ that it will be rainy.

Q2: What about two days from today?
A2: One day prediction: $90\%$ sunny, $10\%$ rainy. Therefore, two days from now:
First day it can be sunny and the next day also it can be sunny. Chances of this happening are: $0.9 \times 0.9$.
Or
First day it can be rainy and second day it can be sunny. Chances of this happening are: $0.1 \times 0.5$.
Therefore, the probability that the weather will be sunny in two days is:
$P(\text{Sunny 2 days from now} = 0.9 \times 0.9 + 0.1 \times 0.5 = 0.81 + 0.05 = 0.86$
Similarly, the probability that it will be rainy is:
$P(\text{Rainy 2 days from now} = 0.1 \times 0.5 + 0.9 \times 0.1 = 0.05 + 0.09 = 0.14$

In linear algebra (transition matrices) these calculations correspond to all the permutations in transitions from one step to the next (sunny-to-sunny ($S_2S$), sunny-to-rainy ($S_2R$), rainy-to-sunny ($R_2S$) or rainy-to-rainy ($R_2R$)) with their calculated probabilities:

On the lower part of the image we see how to calculate the probability of a future state ($t+1$ or $t+2$) given the probabilities (probability mass function, $PMF$) for every state (sunny or rainy) at time zero (now or $t_0$) as simple matrix multiplication.
If you keep forecasting weather like this you will notice that eventually the $n$-th day forecast, where $n$ is very large (say $30$), settles to the following 'equilibrium' probabilities:
$P(\text{Sunny}) = 0.833$
and
$P(\text{Rainy}) = 0.167$
In other words, your forecast for the $n$-th day and the $n+1$-th day remain the same. In addition, you can also check that the 'equilibrium' probabilities do not depend on the weather today. You would get the same forecast for the weather if you start of by assuming that the weather today is sunny or rainy.
The above example will only work if the state transition probabilities satisfy several conditions which I will not discuss here. But, notice the following features of this 'nice' Markov chain (nice = transition probabilities satisfy conditions):
Irrespective of the initial starting state we will eventually reach an equilibrium probability distribution of states.
Markov Chain Monte Carlo exploits the above feature as follows:
We want to generate random draws from a target distribution. We then identify a way to construct a 'nice' Markov chain such that its equilibrium probability distribution is our target distribution.
If we can construct such a chain then we arbitrarily start from some point and iterate the Markov chain many times (like how we forecast the weather $n$ times). Eventually, the draws we generate would appear as if they are coming from our target distribution.
We then approximate the quantities of interest (e.g. mean) by taking the sample average of the draws after discarding a few initial draws which is the Monte Carlo component.
There are several ways to construct 'nice' Markov chains (e.g., Gibbs sampler, Metropolis-Hastings algorithm).


Question:
I'm learning Haskell and I'm fascinated by the language. However I have no serious math or CS background. But I am an experienced software programmer.
I want to learn category theory so I can become better at Haskell.
Which topics in category theory should I learn to provide a good basis for understanding Haskell?

In a previous answer in the Theoretical Computer Science site, I said that category theory is the "foundation" for type theory.  Here, I would like to say something stronger.  Category theory is type theory.  Conversely, type theory is category theory.  Let me expand on these points.
Category theory is type theory
In any typed formal language, and even in normal mathematics using informal notation, we end up declaring functions with types $f : A \to B$.  Implicit in writing that is the idea that $A$ and $B$ are some things called "types" and $f$ is a "function" from one type to another.  Category theory is the algebraic theory of such "types" and "functions".  (Officially, category theory calls them "objects" and "morphisms" so as to avoid treading on the set-theoretic toes of the traditionalists, but increasingly I see category theorists throwing such caution to the wind and using the more intuitive terms: "type" and "function".  But, be prepared for protests from the traditionalists when you do so.)
We have all been brought up on set theory from high school onwards.  So, we are used to thinking of types such as $A$ and $B$ as sets, and functions such as $f$ as set-theoretic mappings.  If you never thought of them that way, you are in good shape.  You have escaped set-theoretic brain-washing.  Category theory says that there are many kinds of types and many kinds of functions.  So, the idea of types as sets is limiting.  Instead, category theory axiomatizes types and functions in an algebraic way.  Basically, that is what category theory is.  A theory of types and functions.  It does get quite sophisticated, involving high levels of abstraction.  But, if you can learn it, you will acquire a deep understanding of types and functions.
Type theory is category theory
By "type theory," I mean any kind of typed formal language, based on rigid rules of term-formation which make sure that everything type checks.  It turns out that, whenever we work in such a language, we are working in a category-theoretic structure.  Even if we use set-theoretic notations and think set-theoretically, still we end up writing stuff that makes sense categorically.  That is an amazing fact.
Historically, Dana Scott may have been the first to realize this.  He worked on producing semantic models of programming languages based on typed (and untyped) lambda calculus.  The traditional set-theoretic models were inadequate for this purpose, because programming languages involve unrestricted recursion which set theory lacks.  Scott invented a series of semantic models that captured programming phenomena, and came to the realization that typed lambda calculus exactly represented a class of categories called cartesian closed categories.  There are plenty of cartesian closed categories that are not "set-theoretic".  But typed lambda calculus applies to all of them equally.  Scott wrote a nice essay called "Relating theories of lambda calculus" explaining what is going on, parts of which seem to be available on the web.  The original article was published in a volume called "To H. B. Curry: Essays on Combinatory Logic, Lambda Calculus and Formalism", Academic Press, 1980.  Berry and Curien came to the same realization, probably independently.  They defined a categorical abstract machine (CAM) to use these ideas in implementing functional languages, and the language they implemented was called "CAML" which is the underlying framework of Microsoft's F#.
Standard type constructors like $\times$, $\to$, $List$ etc. are functors.  That means that they not only map types to types, but also functions between types to functions between types.  Polymorphic functions preserve all such functions resulting from functor actions.  Category theory was invented in 1950's by Eilenberg and MacLane precisely to formalize the concept of polymorphic functions.  They called them "natural transformations", "natural" because they are the only ones that you can write in a type-correct way using type variables.  So, one might say that category theory was invented precisely to formalize polymorphic programming languages, even before programming languages came into being!
A set-theoretic traditionalist has no knowledge of the functors and natural transformations that are going on under the surface when he uses set-theoretic notations.  But, as long as he is using the type system faithfully, he is really doing categorical constructions without being aware of them.

All said and done, category theory is the quintessential mathematical theory of types and functions.  So, all programmers can benefit from learning a bit of category theory, especially functional programmers.  Unfortunately, there do not seem to be any text books on category theory targeted at programmers specifically.  The "category theory for computer science" books are typically targeted at theoretical computer science students/researchers.  The book by Benjamin Pierce, Basic category theory for computer scientists is perhaps the most readable of them.
However, there are plenty of resources on the web, which are targeted at programmers.  The Haskellwiki page can be a good starting point.  At the Midlands Graduate School, we have lectures on category theory (among others).  Graham Hutton's course was pegged as a "beginner" course, and mine was pegged as an "advanced" course.  But both of them cover essentially the same content, going to different depths.  University of Chalmers has a nice resource page on books and lecture notes from around the world.    The enthusiastic blog site of "sigfpe" also provides a lot of good intuitions from a programmer's point of view.
The basic topics you would want to learn are:

definition of categories, and some examples of categories
functors, and examples of them
natural transformations, and examples of them
definitions of products, coproducts and exponents (function spaces), initial and terminal objects.
adjunctions
monads, algebras and Kleisli categories

My own lecture notes in the Midlands Graduate School covers all these topics except for the last one (monads).  There are plenty of other resources available for monads these days.  So that is not a big loss.
The more mathematics you know, the easier it would be to learn category theory.  Because category theory is a general theory of mathematical structures, it is helpful to know some examples to appreciate what the definitions mean.  (When I learnt category theory, I had to make up my own examples using my knowledge of programming language semantics, because the standard text books only had mathematical examples, which I didn't know anything about.)  Then came the brilliant book by Lambek and Scott called "Introduction to categorical logic" which related category theory to type systems (what they call "logic").  It is now possible to understand category theory just by relating it to type systems even without knowing a lot of examples.  A lot of the resources I mentioned above use this approach to explain category theory.


Question:
I'm studying pattern recognition and statistics and almost every book I open on the subject I bump into the concept of Mahalanobis distance. The books give sort of intuitive explanations, but still not good enough ones for me to actually really understand what is going on. If someone would ask me "What is the Mahalanobis distance?" I could only answer: "It's this nice thing, which measures distance of some kind" :)
The definitions usually also contain eigenvectors and eigenvalues, which I have a little trouble connecting to the Mahalanobis distance. I understand the definition of eigenvectors and eigenvalues, but how are they related to the Mahalanobis distance? Does it have something to do with changing the base in Linear Algebra etc.?
I have also read these former questions on the subject:

What is Mahalanobis distance, & how is it used in pattern recognition?
Intuitive explanations for Gaussian distribution function and mahalanobis distance (Math.SE)

I have also read this explanation.
The answers are good and pictures nice, but still I don't really get it...I have an idea but it's still in the dark. Can someone give a "How would you explain it to your grandma"-explanation so that I could finally wrap this up and never again wonder what the heck is a Mahalanobis distance? :) Where does it come from, what, why?
UPDATE:
Here is something which helps understanding the Mahalanobis formula:

Here is a scatterplot of some multivariate data (in two dimensions):

What can we make of it when the axes are left out?

Introduce coordinates that are suggested by the data themselves.
The origin will be at the centroid of the points (the point of their averages).  The first coordinate axis (blue in the next figure) will extend along the "spine" of the points, which (by definition) is any direction in which the variance is the greatest.  The second coordinate axis (red in the figure) will extend perpendicularly to the first one.  (In more than two dimensions, it will be chosen in that perpendicular direction in which the variance is as large as possible, and so on.)

We need a scale.  The standard deviation along each axis will do nicely to establish the units along the axes.  Remember the 68-95-99.7 rule: about two-thirds (68%) of the points should be within one unit of the origin (along the axis); about 95% should be within two units.  That makes it easy to eyeball the correct units.  For reference, this figure includes the unit circle in these units:

That doesn't really look like a circle, does it?  That's because this picture is distorted (as evidenced by the different spacings among the numbers on the two axes).  Let's redraw it with the axes in their proper orientations--left to right and bottom to top--and with a unit aspect ratio so that one unit horizontally really does equal one unit vertically:

You measure the Mahalanobis distance in this picture rather than in the original.
What happened here?  We let the data tell us how to construct a coordinate system for making measurements in the scatterplot.  That's all it is.  Although we had a few choices to make along the way (we could always reverse either or both axes; and in rare situations the directions along the "spines"--the principal directions--are not unique), they do not change the distances in the final plot.

Technical comments
(Not for grandma, who probably started to lose interest as soon as numbers reappeared on the plots, but to address the remaining questions that were posed.)

Unit vectors along the new axes are the eigenvectors (of either the covariance matrix or its inverse).

We noted that undistorting the ellipse to make a circle divides the distance along each eigenvector by the standard deviation: the square root of the covariance.  Letting $C$ stand for the covariance function, the new (Mahalanobis) distance between two points $x$ and $y$ is the distance from $x$ to $y$ divided by the square root of $C(x-y, x-y)$.  The corresponding algebraic operations, thinking now of $C$ in terms of its representation as a matrix and $x$ and $y$ in terms of their representations as vectors, are written $\sqrt{(x-y)'C^{-1}(x-y)}$.  This works regardless of what basis is used to represent vectors and matrices.  In particular, this is the correct formula for the Mahalanobis distance in the original coordinates.

The amounts by which the axes are expanded in the last step are the (square roots of the) eigenvalues of the inverse covariance matrix.  Equivalently, the axes are shrunk by the (roots of the) eigenvalues of the covariance matrix.  Thus, the more the scatter, the more the shrinking needed to convert that ellipse into a circle.

Although this procedure always works with any dataset, it looks this nice (the classical football-shaped cloud) for data that are approximately multivariate Normal.  In other cases, the point of averages might not be a good representation of the center of the data or the "spines" (general trends in the data) will not be identified accurately using variance as a measure of spread.

The shifting of the coordinate origin, rotation, and expansion of the axes collectively form an affine transformation.  Apart from that initial shift, this is a change of basis from the original one (using unit vectors pointing in the positive coordinate directions) to the new one (using a choice of unit eigenvectors).

There is a strong connection with Principal Components Analysis (PCA).  That alone goes a long way towards explaining the "where does it come from" and "why" questions--if you weren't already convinced by the elegance and utility of letting the data determine the coordinates you use to describe them and measure their differences.

For multivariate Normal distributions (where we can carry out the same construction using properties of the probability density instead of the analogous properties of the point cloud), the Mahalanobis distance (to the new origin) appears in place of the "$x$" in the expression $\exp(-\frac{1}{2} x^2)$ that characterizes the probability density of the standard Normal distribution.  Thus, in the new coordinates, a multivariate Normal distribution looks standard Normal when projected onto any line through the origin.  In particular, it is standard Normal in each of the new coordinates.  From this point of view, the only substantial sense in which multivariate Normal distributions differ among one another is in terms of how many dimensions they use.  (Note that this number of dimensions may be, and sometimes is, less than the nominal number of dimensions.)


Question: This is a basic question, but I'm thinking that $O(m+n)$ is the same as $O(\max(m,n))$, since the larger term should dominate as we go to infinity? Also, that would be different from $O(\min(m,n))$. Is that right? I keep seeing this notation, especially when discussing graph algorithms. For example, you routinely see: $O(|V| + |E|)$ (e.g. see here).

You are right. Notice that the term $O(n+m)$ slightly abuses the classical big-O Notation, which is defined for functions in one variable. However there is a natural extension for multiple variables.
Simply speaking, since
$$ \frac{1}{2}(m+n) \le \max\{m,n\} \le m+n \le 2 \max\{m,n\},$$
you can deduce that $O(n+m)$ and $O(\max\{m,n\})$ are equivalent asymptotic upper bounds.
On the other hand  $O(n+m)$ is different from $O(\min\{n,m\})$, since if you set $n=2^m$, you get $$O(2^m+m)=O(2^m) \supsetneq O(m)=O(\min\{2^m,m\}).$$


Question:
...assuming that I'm able to augment their knowledge about variance in an intuitive fashion ( Understanding "variance" intuitively ) or by saying: It's the average distance of the data values from the 'mean' - and since variance is in square units, we take the square root to keep the units same and that is called standard deviation.
Let's assume this much is articulated and (hopefully) understood by the 'receiver'. Now what is covariance and how would one explain it in simple English without the use of any mathematical terms/formulae? (I.e., intuitive explanation. ;)
Please note: I do know the formulae and the math behind the concept. I want to be able to 'explain' the same in an easy to understand fashion, without including the math; i.e., what does 'covariance' even mean?

Sometimes we can "augment knowledge" with an unusual or different approach.  I would like this reply to be accessible to kindergartners and also have some fun, so everybody get out your crayons!
Given paired $(x,y)$ data, draw their scatterplot.  (The younger students may need a teacher to produce this for them. :-)  Each pair of points $(x_i,y_i)$, $(x_j,y_j)$ in that plot determines a rectangle: it's the smallest rectangle, whose sides are parallel to the axes, containing those points.  Thus the points are either at the upper right and lower left corners (a "positive" relationship) or they are at the upper left and lower right corners (a "negative" relationship).
Draw all possible such rectangles. Color them transparently, making the positive rectangles red (say) and the negative rectangles "anti-red" (blue).  In this fashion, wherever rectangles overlap, their colors are either enhanced when they are the same (blue and blue or red and red) or cancel out when they are different.

(In this illustration of a positive (red) and negative (blue) rectangle, the overlap ought to be white; unfortunately, this software does not have a true "anti-red" color.   The overlap is gray, so it will darken the plot, but on the whole the net amount of red is correct.)
Now we're ready for the explanation of covariance.
The covariance is the net amount of red in the plot (treating blue as negative values).
Here are some examples with 32 binormal points drawn from distributions with the given covariances, ordered from most negative (bluest) to most positive (reddest).

They are drawn on common axes to make them comparable.  The rectangles are lightly outlined to help you see them.  This is an updated (2019) version of the original: it uses software that properly cancels the red and cyan colors in overlapping rectangles.
Let's deduce some properties of covariance.  Understanding of these properties will be accessible to anyone who has actually drawn a few of the rectangles. :-)

Bilinearity. Because the amount of red depends on the size of the plot, covariance is directly proportional to the scale on the x-axis and to the scale on the y-axis.

Correlation. Covariance increases as the points approximate an upward sloping line and decreases as the points approximate a downward sloping line.  This is because in the former case most of the rectangles are positive and in the latter case, most are negative.

Relationship to linear associations. Because non-linear associations can create mixtures of positive and negative rectangles, they lead to unpredictable (and not very useful) covariances.  Linear associations can be fully interpreted by means of the preceding two characterizations.

Sensitivity to outliers. A geometric outlier (one point standing away from the mass) will create many large rectangles in association with all the other points.  It alone can create a net positive or negative amount of red in the overall picture.

Incidentally, this definition of covariance differs from the usual one only by a constant of proportionality.  The mathematically inclined will have no trouble performing the algebraic demonstration that the formula given here is always twice the usual covariance.  For a full explanation, see the follow-up thread at


Question:
It seems that every website on sexual health advises against using oil-based lubricants with condoms. It is claimed that "oil breaks down latex". One source claimed that a latex condom completely breaks down in only 60 seconds. It made me curious, so I made an experiment.
I took a piece of rubber latex condom and soaked it into regular canola oil I found in the kitchen. I checked the condom after 1 minute, nothing changed. So I let it soak for about 5 minutes more, and then 5 hours more, still nothing. It was able to hold a large amount of water without leaking or breaking.
So I am wondering, is it really true that oil degrades latex? What sort of chemical reaction is supposed to happen? What properties of the latex material and the oil influence this reaction?

First off, may I say that I applaud your decision to test this through an experiment. It's rare to see that than I would like.
Now, on to the matter at hand. It's fairly well known from industrial chemistry that non-polar solvents degrade latex quite heavily.
I work with latex seals a lot, and the hexanes we use routinely break the seals down in under a day. Of course, if you're lubricating your condoms with hexanes, you're a) an idiot or b) absolutely insane.
A paper I managed to find suggests that there really isn't too much direct data on condoms, and it muses that the warnings might have arisen from industry, where nonpolar solvents decidedly do degrade latex.
To find out, they did a burst experiment with condoms that had been treated with various oils. Glycerol and Vaseline-treated condoms showed a very, very minor decrease in strength, while mineral oil/baby oil-treated ones burst at less than 10% of the volume of an untreated condom.
They also found that 10 month-old condoms have half the burst volume of 1-month old ones, so you could argue that using 1-month-old condoms that have been slathered in Vaseline is still much safer than using older ones.
As for the actual chemistry of the weakening, I honestly don't know. If I were to hazard a guess, I would note that the latex looks like a bunch of ethylenes glued together,
so my guess would be that the solvents get between the chains and force them apart, weakening them. For this to happen, the solvent must be nonpolar, but still small enough to slip between the chains of the polymer.
That's probably why vaseline and canola oil don't have much of an effect---they're just too big to fit between the chains. Again though, I don't know for sure, so don't quote me on this last paragraph.