Page 4 of 28
Brake Pads for the E36 M3
I’ve been doing autocross and track days with my 1997 BMW M3 for long enough that I can offer some insight into the brake pads available for E36 M cars. What follows are the brake pads that I have driven, in order of heat handling. If you only drive on the street, the top of the list is where you want to be. If you have a race car, the bottom is your domain.
EBC Greenstuff
An awesome street pad, thanks to producing much less dust than stock. I drove these pads at my very first HPDE with the National Capital Chapter of the BMW CCA; the track is not their forte. By the end of the second day, I had burned through ¾ of the pads, and the car was putting out clouds of smoke braking into turn 1 on Summit Point’s main circuit. Unsurprisingly, this was accompanied by significant fade.
Like stock pads, these will work for your first track experience if you are conservative, but I wouldn’t recommend it. Thanks to their low dust, EBC Green Stuff work great for street pads and even the occasional autocross.
Hawk High Performance Street (HPS)
The HPS are biled as a stock-replacement pad and I would agree with that. They dust a bit less than BMW OEM pads, and provide a little bit more fade resistance. For track use, the HPS is much like stock or the EBC Greenstuff mentioned above–they’ll work if you’re new & conservative or slow.
Axxis Ultimate (ULT)
These are quite similar to the HPS–less dust than stock, good feel even when stone cold, and a bit more heat handling capability than stock. They work great for street driving and autocrossing, but are only good for limited (read: slower) track use.
Hawk High Performance Plus (HP+)
The HP+ are a good compromise between track and street pads. I recently used them for a fade-free weekend at Thunderhill with ambient temperature of 70-80F. Unlike a full-on track pad that is downright scary on the street, the HP+ is decidedly OK on the street. The first stop of a drive (or after not using them on the highway for a few minutes) will be a bit longer than stock pads, but not the Flintstones feeling of track pads.
Hawk Blue
I am lazy, so I put my pads on at home before driving to the track, so I got to experience these on the street. To begin with, the first stop from neighborhood speeds takes about twice the distance you expect, and the initial bit is nonexistent. After a couple more low speed stops, the brakes have enough heat to work just fine, but they still squeal as though you are murdering cats with each brake application.
On the track, the Hawk Blue is an awesome pad. Being a true track pad it takes some heat before they really work, as described above. Just like you need to get your tires and brain up to temperature, with a track pad you need some heat in the brakes before they will do what you expect. You should be driving judiciously on your out lap anyway, so this ought not be a problem. The wear on these is much better than any of the aforementioned pads–a day at Laguna Seca burned less than one quarter. If you have been going to the track for a while, or if you’ve gotten fast enough to begin feeling fade in your existing brake setup, get some track pads.
Synchronizing an iTunes Library Between Two Computers
Like many folks, I have a desktop that I use for most of my computing, and a laptop that I use while travelling, at a coffee shop, or perhaps while watching tv. The other thing I have is a lot of music, all nicely rated and organized in iTunes. The problem is that new music I get goes onto my desktop, but I would like to have the exact same stuff on my laptop. Enter iTunes-Sync, a simple script that I wrote to synchronize the iTunes library file and all of the content (music, etc.) that it depends upon between the two machines.
Using iTunes-Sync is simple:
laptop:~/$ perl itunes_sync.pl dinomite 192.168.1.100
That’s all there is to it. The script copies the iTunes Library
file wholesale, and uses rsync(1)
to pull over the album art, mobile applications, and music directories.
I only care about getting everything from my desktop to the laptop–if you want to go both ways, or perhaps preserve metadata changes made on the laptop the process will be a bit more involved. Before you use your laptop, close iTunes on both machines, and then run iTunes-Sync from the laptop. Go out and have fun. When you get back, close iTunes on both machines and run iTunes-Sync from the desktop.
You can get iTunes-Sync on GitHub; the only thing you need is the itunes_sync.pl file itself.
Tough Mudder Norcal 2010
On October 9th, I ran the Northern California Tough Mudder. Billing itself as “the TOUGHEST one day event on the planet”, Tough Mudder is an endurance race helad at a number of venues throughout the United States. The event is basically a trail run punctuated by obstacles. Except there aren’t many trails involved–the terrain covered is largely rock washes and barren mountain. Most of the locations are ski resorts, perfect because they offer challenging ground with significant elevation change to add difficulty.
As they say at the start line, this isn’t your average trail run, mud run, obstacle course, triathlon, or marathon. In my mind, Tough Mudder is one of many things that could be considered what CrossFit is all about. The Norcal event took place at Bear Valley Mountain Resort, which ranges in elevation from about 7,000 feet up to 8,500 feet. The start of the run was near the bottom, leaving us to go up and down the entirety of that 1,500 vertical feet twice. In the midst of that, obstacles ranged from crawling under low wire or through tubes, to being assaulted with freezing cold water from snow machines.
Overall, I’d say the hardest parts of Tough Mudder were the elevation and the running in total. Having not done the event before, it’s hard to know what it will be like. My expectations were for a demanding obstacle course with some significant running in between. As mentioned above, I would now describe it in the opposite order: a very difficult trail run with some obstacles along the way.
The preparation advice on the Tough Mudder site can be a bit hard to parse and leaves a lot of questions, so here’s my stab at it:
- Do CrossFit or join an elite military unit; little else that can adequately prepare you for such a demanding event
- This is not a marathon; being a running twig won’t get you through Tough Mudder in a reasonable time
- Mechanix Gloves which are fairly light, durable, and form fitting are a very good choice
- Wear normal workout or outdoor clothes–you’ll get dirty, but not ripped up
- If you have an older pair of sunglasses, wear them
- Don’t worry about carrying water, it will be provided on the course every few miles
- Walk on the right, run on the left: slowing down is fine, but please stay out of the way of the more dedicated folks
- The water will be cold, nothing can change that
So how did I do? Well, Tough Mudder makes a big point of saying, “it’s an event, not a race”. I started in the 12:00 group, which gave me a chance to watch the first group, which started at 10:00 and included the most elite runners, begin to finish at 11:16. I went into my group knowing that 1 hour 16 minutes was the time to beat. I crossed the finish line at 13:43, putting me at 1 hour 43 minutes. I discout this a bit because I spent 5 minutes or so waiting to do the spool-jumping obstacle, and nearly 15 minutes waiting at the mud-run obstacle because the pommel horse jumping was backed up. I’m confident in saying that my correct time was about 1:25.
More pictures:
Signal Handling in Perl
Perl signal handling is easy. Simply create a subroutine to handle a signal and register it as handler in the %SIG hash:
#!/usr/bin/env perl $SIG{'INT'} = \&sigIntHandler; sleep 100; sub sigIntHandler { print "INT caught!\n"; exit; }
While this is better than nothing, its fairly limited. Your program is yanked out of its scope, making it difficult to clean up. Without any state information, how are you supposed to know what to do when you get the signal? The easiest thing to do is note that you have received a signal in the handler, then check and deal with that fact within any parts of your program that need to do things when signals occur.
#!/usr/bin/env perl $SIG{'INT'} = \&sigIntHandler; # Flags for signals that have been caught my %caught; while (1) { print "Sleeping 5\n"; sleep 5; print "More sleeping\n"; sleep 5; # If we got SIGINT (2), exit exit if ($caught{'INT'} == 1); } # When we get a signal, set a flag in %caught sub sigIntHandler { print "INT caught!\n"; $caught{'INT'} = 1; }
In this setup, all the signal handler does it set a flag in the package global %caught that the program received a signal. The main loop checks each time through to see if a signal has been issued and does what is appropriate; in this case, simply exiting. Play around with this simple program and notice that when the signal happens, the statement that was being executed is interrupted and Perl starts back up with the next statement once the signal handler returns.
In a real-world example makes things much clearer, demonstrating how you can actually use signals for program management. At Genius.com we have a daemon that starts worker children to perform tasks. The main loop for each of these children looks something like this:
# Worker class for daemon package ExampleDaemon::Worker; use Moose; # Declare the global our $SIG_CAUGHT = 0; # Explicit constructor in Moose sub BUILD { $SIG{'INT'} = \&sigHandler; $SIG{'TERM'} = \&sigHandler; } # Main loop sub doWork { my ($self) = @_; my $widgetsMade = 0; while (1) { # Make a widget # Check for signals each time through last if $SIG_CAUGHT } return $widgetsMade; } sub sigHandler { my ($sigName) = @_; $SIG_CAUGHT = 1; return 1; }
Under normal circumstances the parent creates a child and invokes the doWork() subroutine. This subroutine does some work and returns the number of widgets it created. If the child receives a signal while building widgets, the handler logs and sets a flag. The main loop checks for this and halts work, returning if a signal has been caught. Why, you may ask, would a child receive a signal? Surely no one will go around kill(1)ing children, right? I think it’s a reasonable assumption. The real thing I made child signal handlers for is allowing the parent to relay signals, cleanly shutting down the daemon.
# Main class for daemon package ExampleDaemon::Main; use Moose; # Package global so that the signal handlers have access our @children; # Explicit constructor in Moose sub BUILD { $SIG{'INT'} = \&cleanupAndShutdown; $SIG{'TERM'} = \&cleanupAndShutdown; $SIG{'HUP'} = \&restartChildren; } sub run { my ($self) = @_; my $pfm = Parallel::ForkManager->new($self->numChildren); while (1) { my $pid = $pfm->start; if ($pid != 0) { # Parent process push @children, $pid; # Start children judiciously sleep 1; next; } # Child process; do some work $self->startWorker(); # Worker finished, clean up the $pfm instance $pfm->finish(); } # Parent waits here for children to run $pfm->wait_all_children(); return $widgetsMade; } sub startWorker { my ($self) = @_; my $worker = ExampleDaemon::Worker->new(); return $worker->doWork(); } # Send TERM to children when we get INT or TERM sub cleanupAndShutdown { my ($sigName) = @_; kill 15, @children; exit; } # Kill the children, which will respawn, and re-read the logging config file sub restartChildren { my ($sigName) = @_; kill 15, @children; @children = []; my $loggingConfigFile = '/etc/daemonLogging.conf'; Log::Log4perl->init($loggingConfigFile); return 1; }
The parent process utilizes Parallel::ForkManager to spin off children. We store the PIDs of these children in a package global, @children, because the signal handler gets no state information (i.e. it isn’t given $self), so it can only access things that are global to the package. As before, we register signal handlers, which do whatever is required. In the case of cleanupAndShutdown() (which handles INT and TERM), we kill all of the children and then exit in the parent process. If the parent process receives a HUP instead, we kill the children and then simply return from the signal handler, which returns to the main loop of the parent which will respawn the children.
Wasted Energy
The leaking MC252 oil well is releasing an incredible amount of hydrocarbons—estimates have moved upwards from BP’s ludicrously low 5,000 barrels per day all the way up to 100,000 bbl/day. Beyond environmental effects of this released material, the amount of potential energy held in the hydrocarbons that are going uncaptured is staggering.
Flaring
Since getting the lower marine riser package (LMRP) cap installed last month, the Deepwater Horizon response team has been able to capture a portion of the oil & gas leaking from the well. Hydrocarbons are brought to the surface aboard the drillship Discoverer Enterprise which transfers the oil to tankers that in turn shuttle it to shore. Unfortunately, the Discoverer Enterprise isn’t equipped to handle natural gas, and can only capture a limited amount of oil. For the first twelve days that the LMRP cap was installed, June 3rd through June 15th, the Discoverer Enterprise collected as much oil as it could each day, up to a maximum of 15,000 barrels per day. The LMRP cap was configured to only capture as much oil as the maximum amount that the Discoverer Enterprise could recover, with the excess allowed to flow around the LMRP cap and into the ocean directly. Natural gas that came to the surface was immediately flared by the drillship, which lacks any other ability to handle gas.
On June 16th, the Helix Q4000 joined the Discoverer Enterprise on the scene as a secondary vessel to handle the well’s producation. While the Q4000 adds no oil capturing capacity, it does have the capability to flare oil, allowing the LMRP cap to be reconfigured, bringing more oil & gas to the surface. BP has been releasing daily statistics concerning the amount of oil & gas flared, allowing us to calculate the energy that is unceremoniously disposed of each day.
Since the Q4000 arrived, an average of 8,400 barrels of oil and 1.49 million cubic meters of natural gas have been flared. A barrel of crude oil contains 6,119 megajoules of energy and a cubic meter of natural gas 40.9 megajoules. Using these numbers together tells us that 51.48 terajoules of oil energy is burned in the form of oil and 60.97 TJ from flared natural gas every day.
The total energy being continuously burned each second from the MC252 leak is 1.3 gigawatts, the same amount of energy as produced by a large nuclear power reactor or nearly 3 times the average power generated by the Hoover Dam.
Other energy loss
The above calculations only concern the amount of oil and gas collected by the installed LMRP cap, and not the other balance of the well’s production that is released into the ocean without being captured. This additional flow amounts to 35,000–60,000 bbl/day according to the most recent estimate of the Flow Rate Technical Group. In terms of energy, this amounts to 2.5–4.2 gigawatts of potential energy lost to the ocean.
Details and Further Information
- The Oil Drum
- Mark I. Moore
- NASA oilspill imagery
- MODIS USA7
- Timelapse
- Energy density data: oil contains 6,119 MJ/bbl and gas contains 41 MJ/m^3
- Oil & gas collection data
How BVD Skidmark Got to Goin' For Broken
Goin’ for Broken was the first 24 Hours of LeMons event for Team BVD Skidmark. None of us had ever done LeMons before, and only a few of my teammates had even been on a racetrack previously.
In The Beginning
This all started when Matt asked if I had heard of this 24 Hours of LeMons thing…in fact, I had. I was on the verge of starting a team for the first East Coast races before I moved out to California. In short, we rounded up some other folks and submitted an application for Goin’ For Broken 2010 at Thunderhill in May.
Just as the website says, we got our confirmation for the race 10 weeks out in Early March. To start, I called a meeting of the prospective team members to get together and pay the entry fee, which was $1,500 for our 6 driver team. I had also drawn up a very rudimentary budget by talking to a friend of a friend, and running some quick numbers–it worked out to about $1,000-1,500 per driver, all said and done.
Since we had a committed team, the next move was to find a $500 car. Since submitting the application for the race, a few of us had been trolling Craigslist to get an idea of what was out there. The week after we were accepted, a BMW 325es showed up, which seemed like a very good option to me. I have been a part of the BMW community for a number of years, and do all of my own work on my e36 M3.
We’ve Got a Car
Once we had a car, the first order of business was to get a roll cage installed. I looked up a few race shops in the Bay Area and stumbled across Evil Genius Racing. Of the places I called, they were by far the most helpful, and even had the cheapest offering; turns out, John is very involved in the 24 Hours of LeMons, so we couldn’t have found a better shop.
Before getting the cage installed, we had to clean out the car. We spent a couple of Saturdays with 3 or 4 guys just removing the car’s interior–everything from the car’s interior. When we were done, the only thing left was the un-bolted driver’s seat, the windshield, and the back window. John had advised that we even remove the dashboard, so that they could install a dash bar, resulting in a safer cage.
The only other work we did at that stage was fixing the brakes. When we got our car, the brake pedal went to the floor. Having never worked on crappy cars, I wasn’t sure what the problem was, but figured it to probably be the master cylinder. We tried swapping the completely worn out pads, and the gouged rotors to no avail. It was indeed the master cylinder. A trip to Pick-n-Pull and we had a replacement, solving our brake issues.
Finally, we trailered the car to Sacremento, and left it with Evil Genius. The next weekend, we sent a team to pick up the car, complete with roll cage. It was starting to look like a real race car now.
Racecar Preparation
Aside from the roll cage, the 24 Hours of LeMons rules mandate a bunch of other safety gear. Bill found a race seat of the type recommended by John at Evil Genius Racing, a Kirkey Intermediate Road Race Seat on Craigslist. After a test fit it was abundantly clear that the seat was much to low to actually drive. We made some calls and, once again, John at Evil Genius came to the rescue, suggesting we use some 2 inch square tubing to get the seat higher. We ordered some 2 foot long pieces on the internet along with some grade 8 bolts to mount it. After a bunch of drilling and test fitting, the seat ended up fitting atop its brackets with the square tubing underneath.
Other things included mounting the fire extinguisher to the transmission tunnel (in reach of the driver) and mounting the center brake light, since we had removed it’s stock mount along with the rear deck. Other things to comply with the rules included painting numbers on the doors & hood, securing the battery, painting tow locations, and installing the kill switch–that last one being a bit difficult. Our BMW, like most, is equipped with a rear mounted battery, which gets power to the front of the car through a single, huge cable running along the passenger side. The cable itself took 20 minutes to cut through, but with it severed, Ryan was able to get the kill switch itself wired up in another hour of work. We used a single-pole double-throw switch, running some 2-gauge cable from the original battery cable over to the left of the steering wheel, making it accessible by both the driver and anyone outside the car. The second throw was used to interrupt the positive line heading to the ignition coil, which we did with some 8-gauge speaker wire.
To The Races
After all of this work, the car was ready to go and we headed to the track. At the track, we rigged up a few things, including some probe thermometers for monitoring the water & transmission temperatures. It turns out, these hack gauges were the best thing in the world–they feature temperature alarms that make sure you know when something has gone wrong. Without a doubt, having the alarm go off after our water pump belt broke kept us in the race.
If you have ever thought about doing the 24 Hours of LeMons or had the desire to race at all, get a team together and do it. It’s a bit of work, but entirely doable and an incredible amount of fun.
BVD Skidmark's First 24 Hours of LeMons
This past weekend, Team BVD Skidmark participated in its first 24 Hours of LeMons, the 2010 Goin’ For Broken at Thunderhill Raceway outside Willows, CA. The team consisted of myself, two folks from Genius.com, and three guys that were part of CSH. In the end, only 5 of us drove the car at the race, because one of our team was quite sick in the lead up to the race.
Getting There
We loaded up Cheesy Gordita Crunch, named after a shopping list found in the glove box, on Thursday night before the race, along with all of our tools in the van. Matt & his wife Lynn drove the van, Bill, Tristan, Quynh, and I were in the RV that we had rented, along with a weekend’s worth of food from Costco. The drive up to WIllows is pretty boring, and not much fun when you’re driving an RV and a van with a trailer. All was going well until about 10 that night when one of the inside rear tires on the RV de-laminated with a loud thud, followed by a thumping from the flail that was left on the tire. The latter sound was reminiscent of the sound that Cheesy’s original tires made when we bought the car.
Luckily, we were only a mile from a gas station, and only a few miles from Willows itself. We pulled into the gas station for the night, parking behind it. At 6 the next morning, I got up and called the RV rental roadside assistance line; they said that a tow truck could be there to swap the wheel within an hour. We sent the van & car ahead to claim a good pit spot while the rest of us waited for the RV to get fixed. The wheel replacement didn’t take long and the team was reunited in the paddock by 8 AM. We unloaded the tools, pulled the car off the trailer, and signed up for the Friday practice session ($200 + $50 per driver).
Friday
The pre-race practice session was supremely useful—all of our drivers got a chance to hot lap on the track and get a feel for the car that hadn’t been driven since we brought it across The Bay months before. Everything felt good and Cheesy did great all of Friday. I had been on the fence about doing the track day because I thought we might be using up what little life the car had. Getting out on Friday turned out to be a perfectly good thing, however, because it bolstered everyone’s confidence in their own abilities, and our confidence in the car.
We did tech inspection with a few issues: tape the rear lights, tape the positive battery breakout in the engine compartment, and wire the clips for the harness. Bullshit inspection was pretty easy for us, given that we had a bone stock car and are pretty clueless. Having an e30 brings immediate scorn from the judges, but the fact that ours is the efficiency model and has an automatic helps. The Starbucks cards that Matt bribed the judges with helped, too; it also didn’t hurt that our engine’s intake is green from moss that was growing on it. In the end, they only gave us 5 penalty laps, mostly for having a crappy theme—really, we just had a car seat bolted to the roof and some huge Firefox stickers on the car.
At the end of the day, we swapped tires from the hard as anything, 55 series on 14" e30 wheels to the set of fairly low-profile tires on 16" wheels that had come with Cheesy. We cooked some burgers and headed out for a track walk at the end of the day.
Saturday
I got up at 6:30, grabbed a shower (luxurious Thunderhill!) and roused the team. I made some eggs, we gave the car a quick check, and headed off to the driver’s meeting at 8. The meeting was as expected—a rundown on flags, an admonition to not drive crappily, and some quick words about logistics for the day. With that, we headed back to the paddock and I suited up for the first stint.
I got out just before 9 and circulated a couple of laps with the handful of cars out there, until the green flag dropped. On the third lap, I managed to spin in turn 9. I could blame the different tires on the car, but that really just adds to the fact that should have been taking things more slowly 3 laps in at the beginning of my stint. I had gotten overzealous. We were penalized to re-theme the car, and we quickly applied spray paint to implement the original “skidmark” theme that we had originally thrown around months ago. I headed back out for a little more driving, and set the fast lap for the team that stood for the day.
After my stint, Tristan went out and spun in 11. Back into the penalty box, we made an abbreviated walk of shame thanks to the Judgemobile’s music dying. Bill took Tristan’s place and was out for a while before also spinning in 11. We saw the judges again and were ordered to get the very first Cone of Shame in the race. Since they were pretty unimpressed with a team getting 3 black flags before Noon, we found the biggest cone in the entire paddock, and returned to attach it to our car. With a tow strap and some zip ties, we had the cone on and the car was back out there. Matt did a stint and then Josh got in the car.
Josh came in after about half an hour, and one of the cooking thermometers was wailing: it had hit the target temperature of 200 degrees fahrenheit. The roast wasn’t done—the engine was hot. He shut it down and upon opening the hood and the missing water pump belt was pretty obvious. As the chief mechanic, I proceeded to bark some orders to the team and jumped under the car to fix the problem. After a brief struggle getting the forward-opening hood off, and dealing with the alternator with a broken belt-tensioning belt, the engine was back the way it should be. With the hood reattached, I went out for a stint.
We had a bunch more uneventful, but terribly fun driving the rest of Saturday and that evening, talked with a bunch of the other competitors. We ended up selling our extra rear brake pads to the Ninja team (all black e30 with a HUGE sprint car wing) and got tons of advice out of the trade. We talked with a bunch of judges and learned about the Bob Ross penalty that they applied to any car with a good expanse of paintable sheet metal.
Sunday
The second day of the race started with unintended excitement. Matt started the car just before the driver’s meeting and it spewed automatic transmission fluid—the adapters of our hacked-in ATF cooler had failed. Thankfully, we had thought ahead a bit and left all of the stock hookups unmolested. With some quick Vice-grip work, we managed to hook the ATF lines back up to the stock cooler and get out onto the track from the beginning of the day. Josh & Matt did morning stints and then I headed out. At Matt’s suggestion, I started shifting the car, rather than just leaving it in drive the whole time; this lead to a new fast lap for the team of 2:37. Much better than Saturday’s 2:46, but a far cry from the leaders who were running better than 2:20. Even though we weren’t super fast, the added power out of turns allowed us to pass a number of other cars.
At the end of the day, we were in 65th place out of 108 runners—pretty damn good for a completely new team with a stock, automatic racecar. After this experience, the entire team is pumped to do more LeMons races. While track days and HPDEs are awesome, those can’t hold a candle to wheel to wheel racing, especially when you’re in a car that is cheap and you’re OK with driving like you stole it.
24 Hours of LeMons: highly recommended.
Atheism and Society
Phil Zuckerman, a sociology professor at Pitzer College and author of Society Without God, an analysis of religiosity and its effects on a society. Zuckermand gave a talk at the annual Freedom From Religion Foundation convention in 2009, highlighting many of the important statistics he analyzed for the book, which I will paraphrase below, using the section headings from his speech. As Zuckerman himself says, these are merely correlations—his prime aim towards Americans is to make clear that a lack of religion does not hinder a society.
Atheists are better educated
- Only 7% of members of the National Academy of Sciences claim a belief in a personal god.
- While 27% of Americans claim “no religion”, 42% of college graduates are in the irreligious cohort.
Atheists are less homophobic and more moral
- 60% of religiously unaffiliated Americans support gay marriage compared with only 26% of Protestants and 42% of Catholics.
- Among secular Americans, support for the invasion of Iraq was 38%, compared with 68% of evangelical Protestants, 58% of Catholics, and 47% of Jews.
- Nonreligious Americans support stem cell research much more (84%) than those who report being “very religious” (55%) or “somewhat religious” (76%).
- The US prison population consists of only 0.2% atheists.
- Murder rates are lowest in the more secular states, and highest in the most religious.
Atheists in concentration results in societal success
First, let’s see the rates of residents reporting “no faith” in states.
Highest:
- Oregon (31%)
- Washington (30%)
- Vermont (30%)
- Colorado (26.6%)
- Delaware (26.5%)
- Idaho (25.4%)
- California (25%)
- New Hampshire (24.5%)
- Wyoming (24.2%)
- Montana (23.7%)
Lowest:
- North Dakota (9.3%)
- South Dakota (10.2%)
- Mississippi (11.5%)
- Alabama (12.3%)
- Tennessee (13.5%)
- Maine (14.5%)
- Texas (15.4%)
- North Carolina (15.4%)
- Louisiana (15.5%)
Some statistics using those numbers:
- Rate of religiousness and murder rates are inversely correlated; the highest rates are found in Louisiana and Alabama while the lowest are in Vermont and Oregon.
- The poverty rate is similarly related to the proportion of atheists, with the most poor people in Mississippi and Tennessee, while the fewest in poverty are found in New Hampshire and Hawaii.
- Mississippi has the highest obesity rate at 31.6%, followed by West Virginia, Alabama, Louisiana, and South Carolina; the lowest rates are in Colorado (18.4%), Hawaii, Connecticut, Massachusetts, and Vermont.
- Infant mortality and teen pregnancy show similar trends; STD rates are highest in the Bible Belt where college graduation rates are also the lowest.
Where I Stand
I’m on the side of the statistics, which show stronger societies are those with less religion.
Linkable Big Lebowski Script
Recently, I wanted to respond to a friend’s tweet with a specific quote from The Big Lebowski. While there are a number of Big Lebowski scripts around the internet, none of them provide markup to allow linking to sections of the script. With the help of some simple Perl, I created a version of the script with anchor tags throughout, making it easy to point someone to a specific scene from the film. Check it out.
SHDH 36 Lightning Talk: Perl's Moose Object Framework
I am about to give a talk at Super Happy Dev House 36 on Moose, the object system for Perl.
I’ve put the slides for my talk up on SlideShare.