## Sunday, January 15, 2017

### The Line of Death

https://textslashplain.com/2017/01/14/the-line-of-death/
The Metro/Immersive/Modern mode of Internet Explorer in Windows 8 suffered from the same problem; because it was designed with a philosophy of “content over chrome”, there were no reliable trustworthy pixels. I begged for a persistent trustbadge to adorn the bottom-right of the screen (showing a security origin and a lock) but was overruled. One enterprising security tester in Windows made a visually-perfect spoofing site of Paypal, where even the user gestures that displayed the ephemeral browser UI were intercepted and fake indicators were shown. It was terrifying stuff, mitigated only by the hope that no one would use the new mode.

## Tuesday, December 20, 2016

### Popcorn

I really like popcorn.  I often find myself watching TV just as an excuse to eat popcorn.  I've gone months where I had it every night.  A while ago I decided to buy an air popper.  I've built up quite a recipe around the air popper, and I'd like to outline it here.

Why an air popper?
Air poppers are like $20 and the popcorn is much cheaper than the microwave bags. They are a bit faster than a microwave, and you can never burn it. There is nothing to clean because you only put dry popcorn in them, the oil is added afterwards. Air Popper I did a fair bit of research into air poppers, as I tend to do before buying anything. Long story short, they're all the same, and you should get a cheap one. This one is about$20.  It has a built in measuring cup, you dump the dry kernels in the top, and plug it in.  Set a large bowl next to it, and wait a few minutes.  The last 10 or so kernels never pop, so give up on them.  Unplug and that's it.

Kernels
A few people recommended Orville Redenbacher for air poppers.  I started out buying at the grocery store, but you can get a giant jug on Amazon for cheap

Bowl
It sounds silly, but you do need a large bowl.  I always ate popcorn straight from the bag, so I didn't have one.  I just got a 7 L one from Walmart.  Make sure it's at least 6 liters.

Salt
You can just use regular salt, but finer salt will stick better.  Generally you'll waste tons of salt no matter what.  After much research I found this movie theater style salt which is great, and will last like 30 or so bowls.

Salt Shaker
You can just use any regular shaker.  But I'm generally looking for one that has a few, well-separated, smaller holes.  The popcorn salt is much finer, so it comes out very fast of normal sized holes.  This is the best I've found so far, it works, but the holes could be a bit smaller.

Oil
You need oil, basically to make the salt stick.  I've just been buying this generic popcorn oil.  Don't expect much flavor from the oil, it's basically just soybean oil.  I've heard coconut oil is the best flavor, but it's difficult to spray on.

Sprayer
It's basically impossible to drizzle oil evenly.  I bought this spray bottle, which is crazy expensive, but is designed for oil.  There are cheaper oil sprayers but the reviews say they clogged, whereas I've been using this one for months and it's fine.  A word of warning, they spray in a flat fan pattern, which means you have to move the sprayer as you spray.

## Saturday, November 19, 2016

### This just in: Lightning bugs have different flash patterns based on species and sex

https://legacy.mos.org/fireflywatch/images/MOS_FFW_Firefly_Flash_Chart.pdf

Thank you for subscribing to bug facts

How many fireflies would it take to match the brightness of the Sun?

## Saturday, October 1, 2016

### Body Cameras Are Betraying Their Promise

http://www.theatlantic.com/technology/archive/2016/09/body-cameras-are-just-making-police-departments-more-powerful/502421/
In case after case, police departments say officers did not have their body cameras activated when it counted. It can seem as though incidents where body-cam footage helped secure an indictment—such as in Marksville, Louisiana, last November, or as in Cincinnati last July—are more rare than the cases where they don’t.

These are breaches of protocol—incidents where events didn’t happen as the law would require. Often, these violations are never significantly punished. This is the second major threat to body-camera accountability: If there’s not significant discipline for officers who fail to follow local policies—as the officers failed in D.C., Chicago, and Charlotte—then it doesn’t matter what’s in the policy.

### Will Raccoons Trump Rats as the Ultimate Urban Mammal?

http://www.slate.com/articles/health_and_science/science/2016/09/raccoons_are_taking_over_urban_environments.html
And I heard from a friend who works in the State Department about a raccoon that snuck into her building while it was under construction, and then walked across ceiling tiles until it got to her office and hung out above her desk, visible through the mesh-type ceiling panels, perhaps attracted by the scent of her sandwich.

## Saturday, September 3, 2016

### Replacing a modded Xbox with a Raspberry Pi, as a classic game emulation station

As you're likely aware, I'm a big fan of using orginal Xboxes modded to allow playing various NES and SNES (and sometimes N64) games.  Xboxes are cheap, and the software that runs on them has a pretty good UX.  That being said, they are getting pretty long in the tooth, and while the finished product is pretty slick, the process of modding them is annoying enough that I pretty much refuse to actually do it.  They are also rather huge and unwieldy in the age of tiny single board computers that are more powerful and draw far less power.

I have a few Pi 3s so I'd figured I give RetroPie a shot.  This will be less of a how to, and more of a review/comparison to modded Xboxes.

What you need

This is probably the biggest draw back of the Pi vs Xbox.  An Xbox can be had for $40 pretty reliably, or probably free from somewhere. They generally come with everything you need to play, including at least one controller. The Pi costs$40 by itself.  You then need a power adapter, a HDMI cable, a case, and an SD card.  Then you'll need controllers, 2 SNES knock offs will cost $30, or you can use XBOX360 ones if you want wireless and joysticks, but that'll bump the cost up$70 more.

## Tuesday, February 16, 2016

### Kids, forget console gaming—play the FBI’s browser-based game instead

It basically looks like a prequel to the world's first-ever video game. The player uses the left- and right-arrow computer keys to move a running goat to avoid blocks. The blocks apparently represent violent extremists. Hit the block, and the goat explodes.

## Saturday, February 6, 2016

### Nerdwriter1

I've been watching these videos for a while now.  They're interesting discussions of a variety of topics.

## Saturday, January 30, 2016

### Why did crime plummet in the US?

http://www.vox.com/cards/crime-rate-drop/crime-rate

I thought this was a very good compilation of the various proposed reasons for the huge drop in crime in the 90s, and some debate for and against each.

## Friday, January 29, 2016

### Listen to Wikipedia

http://listen.hatnote.com/
Listen to the sound of Wikipedia's recent changes feed. Bells indicate additions and string plucks indicate subtractions. Pitch changes according to the size of the edit; the larger the edit, the deeper the note. Green circles show edits from unregistered contributors, and purple circles mark edits performed by automated bots. You may see announcements for new users as they join the site, punctuated by a string swell.

## Sunday, January 10, 2016

### Powerball Odds

So there is a lot of Powerball talk, and I am again intrigued by the possibility of a positive expected value for a lottery.  If you remember I wrote a post about Megamillions a few years ago, when the jackpot grew to $640 million. The result, after taking into account both taxes and multiple winners, was that it still wasn't worth playing. I decided to quickly do the same thing for this latest Powerball jackpot. In a separate post, I made a model to predict the ticket sales based on jackpot amount. This was quite a bit of work, so I'm not doing that here. I'm just going to use the data for the latest drawing (Jan 9th, 2016) to see if that one drawing had a positive expected value in retrospect. To begin, the expected value of the non jackpot prizes is$0.32, or about $0.28 if you include tax on the$50,000 and $1,000,000 prizes. Note here, I'm ignoring the "Power Play" thing, which increases the payout for the nonjackpot prizes, but costs an extra$1.

Now we need to look at the jackpot.  The estimated upfront payout was $587,662,740. After taxes that's$340,844,389.  The odds for Powerball recently got way harder, which is why this jackpot is so large.  This drawing had 440,321,172 tickets sold.  Doing the Poisson distribution we see the probability of various numbers of winners based on the odds and tickets sold:

 0 22.1594% 1 33.3922% 2 25.1595% 3 12.6377% 4 4.7610% 5 1.4349% 6 0.3604% 7 0.0776% 8 0.0146% 9 0.0024% 10 0.0004% 11 0.0001% 12 0.0000% 13 0.0000% 14 0.0000% 15 0.0000%

The odds for no winners (which is what happened) was 22%.  This is due to the much lower odds of a jackpot in general.

Adding up the adjusted jackpot shares gives a total of $176,335,787. This could be thought of as the true jackpot value after adjusting for taxes and the possibility of splitting the jackpot. Multiplying by the odds of winning gives an expected value for the jackpot of$0.6035.  Adding the nonjackpot expected value gives a total Powerball expected value of $0.88. The ticket costs$2, so it's not even half the value.

Some thoughts:  The odds were just increased in Oct 2015, and this is the first huge jackpot after that change.  More will follow, so it is possible that the expected value will improve as people get over the hype of a billion dollar jackpot.  However, it is worth noting that even if the jackpot doubled, and ticket sales remained constant the expected value would still be below the ticket price.

I haven't gone into details for the math here.  The calculations and commentaries are the same as the Megamillions post.  So please see that for more discussion.

## Thursday, December 24, 2015

This is a good video that explains how audio signals are sampled and represented digitally, and what effect that has on the final analog output.

## Sunday, December 13, 2015

### PBS Frontline: The Warning

http://video.pbs.org/video/1302794657/

PBS Frontline about the 2008 market crash.

## Sunday, November 29, 2015

### Life - Highly Intelligent Monkey

This documentary is on Netflix, and is quite good.

## Saturday, October 17, 2015

### Big Mac Index

https://en.wikipedia.org/wiki/Big_Mac_Index#Manipulation

The big mac index is a quick attempt at explaining purchasing power parity.  The idea being that simply knowing the exchange rate is not enough to know how valuable your money from one country will actually be when you try to purchase actual goods there.

Here is the fun part though:
Critics of the presidency of Cristina Fernández de Kirchner in Argentina and many economists believe that the government has for years falsified consumer price data to understate the country's true inflation rate. The Economist stated in January 2011 that Big Mac index "does support claims that Argentina’s government is cooking the books. The gap between its average annual rate of burger inflation (19%) and its official rate (10%) is far bigger than in any other country." That year the press began reporting on unusual behavior by the more than 200 Argentinean McDonald's restaurants. They no longer prominently advertised Big Macs for sale and the sandwich, both individually and as part of value meals, was being sold for an unusually low price compared to other items. Guillermo Moreno, Secretary of Commerce in the Kirchner government, reportedly forced McDonald's to sell the Big Mac at an artificially low price to manipulate the country's performance on the Big Mac index. In June 2012, the price of the Big Mac value meal suddenly rose by 26%, closer to that of other meals, after The Economist, The New York Times, and other media reported on the unusual pricing. A Buenos Aires newspaper stated "Moreno loses the battle".

## Friday, October 16, 2015

### How is NSA breaking so much crypto?

https://freedom-to-tinker.com/blog/haldermanheninger/how-is-nsa-breaking-so-much-crypto/
For the most common strength of Diffie-Hellman (1024 bits), it would cost a few hundred million dollars to build a machine, based on special purpose hardware, that would be able to crack one Diffie-Hellman prime every year.

Would this be worth it for an intelligence agency? Since a handful of primes are so widely reused, the payoff, in terms of connections they could decrypt, would be enormous. Breaking a single, common 1024-bit prime would allow NSA to passively decrypt connections to two-thirds of VPNs and a quarter of all SSH servers globally. Breaking a second 1024-bit prime would allow passive eavesdropping on connections to nearly 20% of the top million HTTPS websites. In other words, a one-time investment in massive computation would make it possible to eavesdrop on trillions of encrypted connections.

## Friday, September 25, 2015

### Volkswagen's Clean Diesel

http://www.vox.com/2015/9/21/9365667/volkswagen-clean-diesel-recall-passenger-cars
Since 2009, we now know, Volkswagen had been inserting intricate code in its vehicle software that tracked steering and pedal movements. When those movements suggested that the car was being tested for nitrogen-oxide emissions in a lab, the car automatically turned its pollution controls on. The rest of the time, the pollution controls switched off.

This is old hat by now, but I thought this article did a good job of giving a bit more detail about the specifics of what actually happened.

## Saturday, August 29, 2015

### HTTP Status Cats API

https://http.cat/

Three years ago, I called out the proposed new TLDs as stupid. Today, I formally withdraw my oppositionIt turns out .cat is not one of the new TLDs so my opposition has been reinstated.

## Monday, August 24, 2015

### Dolphins

http://www.theguardian.com/science/2003/jul/03/research.science
At the Institute for Marine Mammal Studies in Mississippi, Kelly the dolphin has built up quite a reputation. All the dolphins at the institute are trained to hold onto any litter that falls into their pools until they see a trainer, when they can trade the litter for fish. In this way, the dolphins help to keep their pools clean.

Kelly has taken this task one step further. When people drop paper into the water she hides it under a rock at the bottom of the pool. The next time a trainer passes, she goes down to the rock and tears off a piece of paper to give to the trainer. After a fish reward, she goes back down, tears off another piece of paper, gets another fish, and so on. This behaviour is interesting because it shows that Kelly has a sense of the future and delays gratification. She has realised that a big piece of paper gets the same reward as a small piece and so delivers only small pieces to keep the extra food coming. She has, in effect, trained the humans.

Her cunning has not stopped there. One day, when a gull flew into her pool, she grabbed it, waited for the trainers and then gave it to them. It was a large bird and so the trainers gave her lots of fish. This seemed to give Kelly a new idea. The next time she was fed, instead of eating the last fish, she took it to the bottom of the pool and hid it under the rock where she had been hiding the paper. When no trainers were present, she brought the fish to the surface and used it to lure the gulls, which she would catch to get even more fish. After mastering this lucrative strategy, she taught her calf, who taught other calves, and so gull-baiting has become a hot game among the dolphins.

## Thursday, July 30, 2015

### Crashes only on Wednesdays

http://gyrovague.com/2015/07/29/crashes-only-on-wednesdays/
Caught on yet?  On Wednesdays, and only on Wednesdays, if somebody manually twiddled certain bits in the monitor settings in a certain way, two events would occur during the same millisecond and caused the DB to throw an exception, and the error message that logged this would be exactly 81 bytes long including the null terminator, overflowing the 80-char buffer and causing the program to crash!

## Friday, July 17, 2015

### The View from the Front Seat of the Google Self-Driving Car

But we’re now driving enough — and getting hit enough — that we can start to make some assumptions about that real crashes-per-miles-driven rate; it’s looking higher than we thought. (Our cars, with safety drivers aboard, are now self-driving about 10,000 miles per week, which is about what a typical American adult drives in a year.) It’s particularly telling that we’re getting hit more often now that the majority of our driving is on surface streets rather than freeways; this is exactly where you’d expect a lot of minor, usually-unreported collisions to happen. Other drivers have hit us 14 times since the start of our project in 2009 (including 11 rear-enders), and not once has the self-driving car been the cause of the collision. Instead, the clear theme is human error and inattention. We’ll take all this as a signal that we’re starting to compare favorably with human drivers.

## Wednesday, July 8, 2015

### Concise electronics for geeks

http://lcamtuf.coredump.cx/electronics/

This is a really good overview of analog electronics.

## Wednesday, July 1, 2015

### One dot per person for the entire US

http://demographics.coopercenter.org/DotMap/

This is a really good population map of the US, even ignoring that it has racial data too.

## Tuesday, June 30, 2015

### Randomness in Doom

Doom's source code is all online.  Someone posted a link to the RNG used, which is actually just returning a value from the same list of 256 numbers over and over in the same order:

unsigned char rndtable[256] = {
0,   8, 109, 220, 222, 241, 149, 107,  75, 248, 254, 140,  16,  66 ,
74,  21, 211,  47,  80, 242, 154,  27, 205, 128, 161,  89,  77,  36 ,
95, 110,  85,  48, 212, 140, 211, 249,  22,  79, 200,  50,  28, 188 ,
52, 140, 202, 120,  68, 145,  62,  70, 184, 190,  91, 197, 152, 224 ,
149, 104,  25, 178, 252, 182, 202, 182, 141, 197,   4,  81, 181, 242 ,
145,  42,  39, 227, 156, 198, 225, 193, 219,  93, 122, 175, 249,   0 ,
175, 143,  70, 239,  46, 246, 163,  53, 163, 109, 168, 135,   2, 235 ,
25,  92,  20, 145, 138,  77,  69, 166,  78, 176, 173, 212, 166, 113 ,
94, 161,  41,  50, 239,  49, 111, 164,  70,  60,   2,  37, 171,  75 ,
136, 156,  11,  56,  42, 146, 138, 229,  73, 146,  77,  61,  98, 196 ,
135, 106,  63, 197, 195,  86,  96, 203, 113, 101, 170, 247, 181, 113 ,
80, 250, 108,   7, 255, 237, 129, 226,  79, 107, 112, 166, 103, 241 ,
24, 223, 239, 120, 198,  58,  60,  82, 128,   3, 184,  66, 143, 224 ,
145, 224,  81, 206, 163,  45,  63,  90, 168, 114,  59,  33, 159,  95 ,
28, 139, 123,  98, 125, 196,  15,  70, 194, 253,  54,  14, 109, 226 ,
71,  17, 161,  93, 186,  87, 244, 138,  20,  52, 123, 251,  26,  36 ,
17,  46,  52, 231, 232,  76,  31, 221,  84,  37, 216, 165, 212, 106 ,
197, 242,  98,  43,  39, 175, 254, 145, 190,  84, 118, 222, 187, 136 ,
120, 163, 236, 249
};

int rndindex = 0;
int prndindex = 0;

// Which one is deterministic?
int P_Random (void)
{
prndindex = (prndindex+1)&0xff;
return rndtable[prndindex];
}

int M_Random (void)
{
rndindex = (rndindex+1)&0xff;
return rndtable[rndindex];
}

void M_ClearRandom (void)
{
rndindex = prndindex = 0;
}


There is an explanation of it here.  I find these kinds of hacks, used in 80s and 90s era games to save space and increase speed, interesting.

Here is a story of a guy that replaced all the values with the same number:
What does it play like? I tried two values, 0x00 and 0xFF. With either value, the screen "melt" effect that is used at the end of levels is replaced with a level vertical wipe: the randomness was used to offset each column. Monsters do not make different death noises at different times; only one is played for each category of monster. The bullet-based (hitscan) weapons have no spread at all: the shotgun becomes like a sniper rifle, and the chain-gun is likewise always true. You'd think this would make the super-shotgun a pretty lethal weapon, but it seems to have been nerfed: the spread pattern is integral to its function.

With 0x00, monsters never make their idle noises (breathing etc.) On the other hand, with 0xFF, they always do: so often, that each sample collides with the previous one, and you just get a sort-of monster drone. This is quite overwhelming with even a small pack of monsters.

## Tuesday, June 16, 2015

### Civilization 4 on Linux Via Wine

I have a week off, and figured I'd be productive by playing Civ continuously the entire time.  I've used Wine a bit, but not much with modern games like Civ 4.  It took me several hours, so I figured I'd document the process here for future reference.

To begin, get iso's of the game and two expansions.  Wine doesn't work well with multidisc installations, but if you have isos you can mount them all before you begin.  Also each disc is one independent installation.  I have the actual discs, but found it much easier to download them.

It is also easier to use Wine as 32 bit, instead of trying to get 64 bit to work.  Since I wasn't using Wine for anything important, I just deleted my ~/.wine directory.  I then ran export WINEARCH=win32 before I ran any wine command.  Export will save that variable in your terminal window until you close it, but with multiple terminals open I found it safer to just compulsively enter it.

Next, you'll need a shell script called Winetricks.  You run Winetricks with arguments of various dlls and other things you need to be manually overridden.  For Civ 4 you'll need msxml3 for sure.  I ran winetricks msxml3 msxml4 vcrun2003 quartz devenum corefonts lucida tahoma, because I found it somewhere on the internet.

Run winecfg and go to the Libraries tab.  Find the library called gameux, and add it to the list of overrides, and then edit it to be disabled.  I also found that Wine did not do a good job of guessing my graphics RAM, so I had to run wine regedit.exe and add the key HKCU>Software>Wine>Direct3D>VideoMemorySize and set the value to 512.

Now, mount your 3 isos.  Navigate to the directory containing the installs and run them via Wine (make sure you've exported WINEARCH=win32 first).  The installs were straightforward.  After you've installed Beyond the Sword, download the latest patch (3.19) and install that via Wine.  The expansions will install the patches for the vanilla game, and the latest patch makes it no-cd so no need to download cracks.

You can navigate to ~/.wine/drive_c/.  If you see "Program Files (x86)" it means you messed up with your export WINEARCH=win32's and installed the game as 64 bit.  It may still work, but if not delete ~/.wine and try again.

The game is at: "~/.wine/drive_c/Program Files/Firaxis Games/Sid Meier's Civilization 4/Beyond the Sword/Civ4BeyondSword.exe".  Run it via Wine.  After it starts, you can exit and then find the config file at "~/My Games/Beyond the Sword/CivilizationIV.ini".  If you are having trouble you can set FullScreen = 0 and find ScreenHeight and ScreenWidth and set them low.  I have no trouble with full screen 1920x1080 though.  Set NoIntroMovie = 1, AutoSaveInterval = 1, DisableFileCaching = 1, DisableCaching = 1, ModularLoading = 1.

After that you should be good.  The game runs quite well, I've only noticed some slight graphics errors on some of the 3d animated leaders' faces.  I did have crashing sometimes when attempting to open certain advisor windows (military advisor seemed most common).  The Windows error message recommended I lower graphics settings and so I did from high to medium and haven't had a crash since.