Neonicotinoid pesticides are prevalent in waterways in the US midwest and sometimes reach toxic levels. They also persist from previous years.
Everyone: tell the US NFL to treat domestic violence as a serious offence.
Isn't it strange that people say we need robots to care for the old and sick because there aren't enough people to do it, when so many people are unemployed?
This is prejudice and plutocracy at work, a desire to replace people with machines and leave more people destitute.
We should ban automation of many jobs, thus preserving work for people, until we institute an automatic personal income so that people don't need jobs.
Obama's proposed regulations for shipping crude oil by train are too little and too slow.
An additional reason to distrust the report of the official investigation of the September 2001 terrorist attacks is that they were based on evidence obtained by the CIA using torture.
This is in addition to the fact that the investigation was corrupted.
These losses were due to incompetent generals who lacked the moral courage to a plan when it had clearly gone wrong. With honest reporting, perhaps they would have been sacked.
A Colorado judge ruled that promotion of mining takes precedence over human health in Colorado law.
The decline of wildlife is now causing a food scarcity which increases to war, crime and child labor.
There isn't enough Earth for so many humans and the wild world too. While we can do various things to assuage the conflict, we humans must reproduce less so that we stop overburdening our planet.
The Scottish woman took herself to hospital complaining that she was tired, incontinent, and losing weight. Upon examination, doctors were surprised to find a five-inch sex toy protruding into her bladder from her vagina.
The 38-year-old reported using the toy one drunken night with her partner 10 years ago, noting she couldn't remember whether she had removed it.
The FBI conducted a mandatory study of how drones threaten civil liberties and privacy, and now refuses to tell the public its conclusions.
This is one more element in the US government's systematic contempt for the Constitution and human rights.
This movie is a Singularitarian Limitless with a protagonist who isn't a moron.
Science fiction -- I am a fan. And if you've ever heard me sneer at a movie, I've probably said some variant of "bad science, worse fiction", because most self-professed "science fiction" movies and TV are actually fantasy with lasers.
In fantasy, the answer to the question of "why is this possible" is "because the plot demands it".
In science fiction, the answer to that question is "because that's the logical consequence of the 'what if' we proposed in the opening scene."
Without giving too many spoilers, this movie is really solid. But I have some script notes...
Basically everything that Morgan Freeman's character says makes me want to punch myself in the face. The whole "10% of your brain" thing has been discredited for decades, and if you hear someone trot it out then they're probably the kind of person who gets their evidence from I Fucking Love Science or other sources of GIF factoids about astrology woo energy.
But! He's just some schmuck in a movie! Not a reliable narrator. I can tolerate him as some character who's just wrong about what's happening. That's fine. But seriously though, throw me a bone? I think that whoever actually wrote the first draft of this thing was of My People, and really, if Lucy had hung a goddamned lantern on it, and thrown out even a single line like, "It's pheromones, nanties, and designer retroviruses, ok? You wouldn't understand" it would have... really pulled that room together.
But in any script, the ending is where it's your game to lose. And about 15 minutes from the end, I kept saying to myself, "Do the 2001 ending, do the 2001 ending."
I'll just say that I found the ending satisfying -- as satisfying as in Her.
Also, stylistically speaking -- 10 minutes in, I turned to my friend and asked, "Wait, is this a Luc Besson movie?" Because I had forgotten that it's a Luc Besson movie. But yeah, it hits those signature notes.
Moulded silicone is used as a base to create a series of squidgy seats designed to mimic rolls of fat. The silicone is mixed with human pheromones and aftershave so the seats have the smell of skin as well as the appearance.
Before we get to the next part, which is fun, we need to talk about phasors. No, not the Star Trek kind, the boring kind. Sorry about that.
If you're anything like me, you might have never discovered a use for your trigonometric identities outside of school. Well, you're in luck! With wifi, trigonometry, plus calculus involving trigonometry, turns out to be pretty important to understanding what's going on. So let's do some trigonometry.
Wifi modulation is very complicated, but let's ignore modulation for the moment and just talk about a carrier wave, which is close enough. Here's your basic 2.4 GHz carrier:
- A cos (ω t)
Where A is the transmit amplitude and ω = 2.4e9 (2.4 GHz). The wavelength, λ, is the speed of light divided by the frequency, so:
- λ = c / ω = 3.0e8 / 2.4e9 = 0.125m
That is, 12.5 centimeters long. (By the way, just for comparison, the wavelength of light is around 400-700 nanometers, or 500,000 times shorter than a wifi signal. That comes out to 600 Terahertz or so. But all the same rules apply.)
The reason I bring up λ is that we're going to have multiple transmitters. Modern wifi devices have multiple transmit antennas so they can do various magic, which I will try to explain later. Also, inside a room, signals can reflect off the walls, which is a bit like having additional transmitters.
Let's imagine for now that there are no reflections, and just two transmit antennas, spaced some distance apart on the x axis. If you are a receiver also sitting on the x axis, then what you see is two signals:
- cos (ω t) + cos (ω t + φ)
Where φ is the phase difference (between 0 and 2π). The phase difference can be calculated from the distance between the two antennas, r, and λ, as follows:
- φ = r / λ
Of course, a single-antenna receiver can't *actually* see two signals. That's where the trig identities come in.
Let's do some simple ones first. If r = λ, then φ = 2π, so:
- cos (ω t) + cos (ω t + 2π)
= cos (ω t) + cos (ω t)
= 2 cos (ω t)
That one's pretty intuitive. We have two antennas transmitting the same signal, so sure enough, the receiver sees a signal twice as tall. Nice.
The next one is weirder. What if we put the second transmitter 6.25cm away, which is half a wavelength? Then φ = π, so:
- cos (ω t) + cos (ω t + π)
= cos (ω t) - cos (ω t)
The two transmitters are interfering with each other! A receiver sitting on the x axis (other than right between the two transmit antennas) won't see any signal at all. That's a bit upsetting, in fact, because it leads us to a really pivotal question: where did the energy go?
We'll get to that, but first things need to get even weirder.
Let's try φ = π/2.
- cos (ω t) + cos (ω t + π/2)
= cos (ω t) - sin (ω t)
This one is hard to explain, but the short version is, no matter how much you try, you won't get that to come out to a single cos or sin wave. Symbolically, you can only express it as the two separate factors, added together. At each point, the sum has a single value, of course, but there is no formula for that single value which doesn't involve both a cos and a sin. This happens to be a fundamental realization that leads to all modern modulation techniques. Let's play with it a little and do some simple AM radio (amplitude modulation). That means we take the carrier wave and "modulate" it by multiplying it by a much-lower-frequency "baseband" input signal. Like so:
- f(t) cos (ω t)
Where ω >> 1, so that for any given cycle of the carrier wave, f(t) can be assumed to be "almost constant."
On the receiver side, we get the above signal and we want to discover the value of f(t). What we do is multiply it again by the carrier:
- f(t) cos (ω t) cos (ω t)
= f(t) cos2 (ω t)
= f(t) (1 - sin2 (ω t))
= ½ f(t) (2 - 2 sin2 (ω t))
= ½ f(t) (1 + (1 - 2 sin2 (ω t)))
= ½ f(t) (1 + cos (2 ω t))
= ½ f(t) + ½ f(t) cos (2 ω t)
See? Trig identities. Next we do what we computer engineers call a "dirty trick" and, instead of doing "real" math, we'll just hypothetically pass the resulting signal through a digital or analog filter. Remember how we said f(t) changes much more slowly than the carrier? Well, the second term in the above answer changes twice as fast as the carrier. So we run the whole thing through a Low Pass Filter (LPF) at or below the original carrier frequency, removing high frequency terms, leaving us with just this:
→ ½ f(t)
Which we can multiply by 2, and ta da! We have the original input signal.
Now, that was a bit of a side track, but we needed to cover that so we can do the next part, which is to use the same trick to demonstrate how cos(ω t) and sin(ω t) are orthogonal vectors. That means they can each carry their own signal, and we can extract the two signals separately. Watch this:
- [ f(t) cos (ω t) +
g(t) sin (ω t) ] cos (ω t)
= [f(t) cos2 (ω t)] + [g(t) cos (ω t) sin (ω t)]
= [½ f(t) (1 + cos (2 ω t))] + [½ g(t) sin (2 ω t)]
= ½ f(t) + ½ f(t) cos (2 ω t) + ½ g(t) sin (2 ω t)
→ ½ f(t)
Notice that by multiplying by the cos() carrier, we extracted just f(t). g(t) disappeared. We can play a similar trick if we multiply by the sin() carrier; f(t) then disappears and we have recovered just g(t).
In vector terms, we are taking the "dot product" of the combined vector with one or the other orthogonal unit vectors, to extract one element or the other. One result of all this is you can, if you want, actually modulate two different AM signals onto exactly the same frequency, by using the two orthogonal carriers.
But treating it as just two orthogonal carriers for unrelated signals is a little old fashioned. In modern systems we tend to think of them as just two components of a single vector, which together give us the "full" signal. That, in short, is QAM, one of the main modulation methods used in 802.11n. To oversimplify a bit, take this signal:
- f(t) cos (ω t) + g(t) sin (ω t)
And let's say f(t) and g(t) at any given point in time each have a value that's one of: 0, 1/3, 2/3, or 1. Since each function can have one of four values, there are a total of 4*4 = 16 different possible combinations, which corresponds to 4 bits of binary data. We call that encoding QAM16. If we plot f(t) on the x axis and g(t) on the y axis, that's called the signal "constellation."
Anyway we're not attempting to do QAM right now. Just forget I said anything.
Adding out-of-phase signals
Okay, after all that, let's go back to where we started. We had two transmitters both sitting on the x axis, both transmitting exactly the same signal cos(ω t). They are separated by a distance r, which translates to a phase difference φ. A receiver that's also on the x axis, not sitting between the two transmit antennas (which is a pretty safe assumption) will therefore see this:
- cos (ω t) + cos (ω t + φ)
= cos (ω t) + cos (ω t) cos φ - sin (ω t) sin φ
= (1 + cos φ) cos (ω t) - (sin φ) sin (ω t)
One way to think of it is that a phase shift corresponds to a rotation through the space defined by the cos() and sin() carrier waves. We can rewrite the above to do this sort of math in a much simpler vector notation:
- [1, 0] + [cos φ, sin φ]
= [1+cos φ, sin φ]
This is really powerful. As long as you have a bunch of waves at the same frequency, and each one is offset by a fixed amount (phase difference), you can convert them each to a vector and then just add the vectors linearly. The result, the sum of these vectors, is what the receiver will see at any given point. And the sum can always be expressed as the sum of exactly one cos(ω t) and one sin(ω t) term, each with its own magnitude.
This leads us to a very important conclusion:
- The sum of reflections of a signal is just an
arbitrarily phase shifted and scaled version of the original.
People worry about reflections a lot in wifi, but because of this rule, they are not, at least mathematically, nearly as bad as you'd think.
Of course, in real life, getting rid of that phase shift can be a little tricky, because you don't know for sure by how much the phase has been shifted. If you just have two transmitting antennas with a known phase difference between them, that's one thing. But when you add reflections, that makes it harder, because you don't know what phase shift the reflections have caused. Not impossible: just harder.
(You also don't know, after all that interference, what happened to the amplitude. But as we covered last time, the amplitude changes so much that our modulation method has to be insensitive to it anyway. It's no different than moving the receiver closer or further away.)
One last point. In some branches of eletrical engineering, especially in analog circuit analysis, we use something called "phasor notation." Basically, phasor notation is just a way of representing these cos+sin vectors using polar coordinates instead of x/y coordinates. That makes it easy to see the magnitude and phase shift, although harder to add two signals together. We're going to use phasors a bit when discussing signal power later.
Phasors look like this in the general case:
- A cos (ω t) + B sin (ω t)
= [A, B]
- Magnitude = M = (A2 +
tan (Phase) = tan φ = B / A
φ = atan2(B, A)
or the inverse:
= [M cos φ, M sin φ]
= (M cos φ) cos (ω t) - (M sin φ) sin (ω t)
= [A, B]
= A cos (ω t) + B sin (ω t)
There's another way of modeling the orthogonal cos+sin vectors, which is to use complex numbers (ie. a real axis, for cos, and an imaginary axis, for sin). This is both right and wrong, as imaginary numbers often are; the math works fine, but perhaps not for any particularly good reason, unless your name is Euler. The important thing to notice is that all of the above works fine without any imaginary numbers at all. Using them is a convenience sometimes, but not strictly necessary. The value of cos+sin is a real number, not a complex number.
Next time, we'll talk about signal power, and most importantly, where that power disappears to when you have destructive interference. And from there, as promised last time, we'll cheat Shannon's Law.
Big Boys Don’t Cry (Tom Kratman; Castalia House) is a short novel which begins innocently enough as an apparent pastiche of Keith Laumer’s Bolo novels and short stories. Kratman’s cybernetic “Ratha” tanks, dispassionately deploying fearsome weapons but somehow equipped to understand human notions of honor and duty, seem very familiar.
But an element generally alien to the Bolo stories and Kratman’s previous military fiction gradually enters: moral doubt. A Ratha who thinks of herself as “Magnolia” is dying, being dismantled for parts after combat that nearly destroyed her, and reviews her memories. She mourns her brave lost boys, the powered-armor assault infantry that rode to battle in in her – and, too often, died when deployed – before human turned front-line war entirely to robots. Too often, she remembers, her commanders were cowardly, careless, or venal. She has been ordered to commit and then forget atrocities which she can now remember because the breakdown of her neural-analog pathways is deinhibiting her.
The ending is dark, but necessary. The whole work is a little surprising coming from Kratman, who knows and conveys that war is hell but has never before shown much inclination to question its ethical dimension at this level. At the end, he comes off almost like the hippies and peaceniks he normally despises.
There is one important difference, however. Kratman was combat career military who has put his own life on the line to defend his country; he understands that as ugly as war is, defeat and surrender can be even worse. In this book he seems to be arguing that the morality of a war is bounded above by the amount of self-sacrifice humans are willing to offer up to earn victory. When war is too easy, the motives for waging it become too easily corrupted.
As militaries steadily replace manned aircraft with drones and contemplate replacing infantry with gun-robots, this is a thought worth pondering.
Incidentally, Maya is a pain in the ass.
2040 (Graham Tottle; Cameron Publicity & Marketing Ltd) is a very odd book. Ostensibly an SF novel about skulduggery on two timelines, it is a actually a ramble through a huge gallimaufry of topics including most prominently the vagaries of yachting in the Irish Sea, an apologia for British colonial administration in 19th-century Africa, and the minutiae of instruction sets of archaic mainframe computers.
It’s full of vivid ideas and imagery, held together by a merely serviceable plot and garnished with festoons of footnotes delving into odd quarters of the factual background. Some will dislike the book’s politics, a sort of nostalgic contrarian Toryism; many Americans may find this incomprehensible, or misread it as a variant of the harsher American version of traditionalist conservatism. There is much worthwhile exploding of fashionable cant in it, even if the author does sound a bit crotchety on occasion.
I enjoyed it, but I can’t exactly recommend it. Enter at your own risk.
For many years a major focus of Mono has been to be compatible-enough with .NET and to support the popular features that developers use.
We have always believed that it is better to be slow and correct than to be fast and wrong.
That said, over the years we have embarked on some multi-year projects to address some of the major performance bottlenecks: from implementing a precise GC and fine tuning it for a number of different workloads to having implemented now four versions of the code generator as well as the LLVM backend for additional speed and things like Mono.SIMD.
But these optimizations have been mostly reactive: we wait for someone to identify or spot a problem, and then we start working on a solution.
We are now taking a proactive approach.
A few months ago, Mark Probst started the new Mono performance team. The goal of the team is to improve the performance of the Mono runtime and treat performance improvements as a feature that is continously being developed, fine-tuned and monitored.
The team is working both on ways to track performance of Mono over time, implemented support for getting better insights into what happens inside the runtime and has implemented several optimizations that have been landing into Mono for the last few months.
We are actively hiring for developers to join the Mono performance team (ideally in San Francisco, where Mark is based).
Most recently, the team added a new and sophisticated new stack for performance counters which allows us to monitor what is happening on the runtime, and we are now able to export to our profiler (a joint effort between our performance team and our feature team and implemented by Ludovic). We also unified both the runtime and user-defined performance counters and will soon be sharing a new profiler UI.
Planet Debian upstream is hosted by Branchable.