insserv: warning: script ‘K01vmware’ missing LSB tags and overrides
May 13, 2012 | Filed Under Uncategorized | Leave a Comment
Note to self: if apt-get dist-upgrade explodes on Debian Squeeze with the error
Setting up initscripts (2.88dsf-13.1+squeeze1) ... insserv: warning: script 'K01vmware' missing LSB tags and overrides insserv: warning: script 'S50vmware-USBArbitrator' missing LSB tags and overrides insserv: warning: script 'vmware-USBArbitrator' missing LSB tags and overrides insserv: warning: script 'vmware' missing LSB tags and overrides insserv: There is a loop between service rmnologin and mountnfs if started insserv: loop involving service mountnfs at depth 8 (more output snipped)
Then follow the instructions of post rldleblanc at http://communities.vmware.com/thread/337769:
rldleblanc 35 posts since 05-Aug-2005 7. 05-Dec-2011 11:14 in response to: SamSpade Re: Vmware Player Prevents Aptitude from Installing Debian Packages Probably a cleaner way to approach this is to use /etc/insserv/overrides. Do the following: Create /etc/insserv/overrides/vmware with the following: ### BEGIN INIT INFO # Provides: vmware # Required-Start: $remote_fs $syslog # Required-Stop: $remote_fs $syslog # Default-Start: 2 3 5 # Default-Stop: 2 3 5 # Short-Description: VMware VMX service for virtual machines # Description: Allows running of VMware virtual machines. ### END INIT INFO Create /etc/insserv/overrides/vmware-USBArbitrator with the following: ### BEGIN INIT INFO # Provides: vmware-USBArbitrator # Required-Start: $remote_fs $syslog vmware # Required-Stop: $remote_fs $syslog vmware # Default-Start: 2 3 5 # Default-Stop: 2 3 5 # Short-Description: Start daemon when vmware starts # Description: Enable service provided by daemon. ### END INIT INFO Then run 'chmod +x /etc/insserv/overrides/vmware* This prevents the fix from being broken with an update to the shipped init.d script and my fix your USB problem. Since I don't use USB in a VM, I can't test it. Robert
R, MAKEFLAGS, rpath, and building packages
May 11, 2012 | Filed Under Uncategorized | Leave a Comment
On our HPC at work we need to build various libraries and packages from source, and install them to custom locations. Putting everything in /usr/local is not an option because of dependencies on particular versions of various libraries (and many of these packages are not available through the distro’s package manager). While building RODBC for a colleague I encountered a problem with library paths:
library(RODBC) Error in dyn.load(file, DLLpath = DLLpath, ...) : unable to load shared object '/opt/RODBC/RODBC_1.3-5/RODBC/libs/RODBC.so': libodbc.so.1: cannot open shared object file: No such file or directory Error: package/namespace load failed for ‘RODBC’
The author of the package claimed that the solution is in the documentation, but I disagree. For the benefit of anyone who comes across this problem, here’s a log of how I debugged the problem.
First try to build with no options at all. Fails because it can’t find sql.h, as expected:
carlo@r500:/opt/src/RODBC> R CMD INSTALL -l /opt/RODBC/RODBC_1.3-5 RODBC_1.3-5.tar.gz * installing *source* package ‘RODBC’ ... ** package ‘RODBC’ successfully unpacked and MD5 sums checked checking for gcc... gcc -std=gnu99 checking for C compiler default output file name... a.out checking whether the C compiler works... yes checking whether we are cross compiling... no checking for suffix of executables... checking for suffix of object files... o checking whether we are using the GNU C compiler... yes checking whether gcc -std=gnu99 accepts -g... yes checking for gcc -std=gnu99 option to accept ANSI C... none needed checking how to run the C preprocessor... gcc -std=gnu99 -E checking for egrep... grep -E checking for ANSI C header files... yes checking for sys/types.h... yes checking for sys/stat.h... yes checking for stdlib.h... yes checking for string.h... yes checking for memory.h... yes checking for strings.h... yes checking for inttypes.h... yes checking for stdint.h... yes checking for unistd.h... yes checking sql.h usability... no checking sql.h presence... no checking for sql.h... no checking sqlext.h usability... no checking sqlext.h presence... no checking for sqlext.h... no configure: error: "ODBC headers sql.h and sqlext.h not found" ERROR: configuration failed for package ‘RODBC’ * removing ‘/opt/RODBC/RODBC_1.3-5/RODBC’ * restoring previous ‘/opt/RODBC/RODBC_1.3-5/RODBC’
Now set location for ODBC library, using environment variables, as per the documentation:
export ODBC_INCLUDE=$ODBC_ROOT/include export ODBC_LIBS=$ODBC_ROOT/lib carlo@r500:/opt/src/RODBC> R CMD INSTALL -l /opt/RODBC/RODBC_1.3-5 RODBC_1.3-5.tar.gz * installing *source* package ‘RODBC’ ... ** package ‘RODBC’ successfully unpacked and MD5 sums checked checking for gcc... gcc -std=gnu99 checking for C compiler default output file name... a.out checking whether the C compiler works... yes checking whether we are cross compiling... no checking for suffix of executables... checking for suffix of object files... o checking whether we are using the GNU C compiler... yes checking whether gcc -std=gnu99 accepts -g... yes checking for gcc -std=gnu99 option to accept ANSI C... none needed checking how to run the C preprocessor... gcc -std=gnu99 -E checking for egrep... grep -E checking for ANSI C header files... yes checking for sys/types.h... yes checking for sys/stat.h... yes checking for stdlib.h... yes checking for string.h... yes checking for memory.h... yes checking for strings.h... yes checking for inttypes.h... yes checking for stdint.h... yes checking for unistd.h... yes checking sql.h usability... yes checking sql.h presence... yes checking for sql.h... yes checking sqlext.h usability... yes checking sqlext.h presence... yes checking for sqlext.h... yes checking for library containing SQLTables... -lodbc checking for SQLLEN... yes checking for SQLULEN... yes checking for long... yes checking size of long... configure: error: cannot compute sizeof (long), 77 See `config.log' for more details. ERROR: configuration failed for package ‘RODBC’ * removing ‘/opt/RODBC/RODBC_1.3-5/RODBC’ * restoring previous ‘/opt/RODBC/RODBC_1.3-5/RODBC’
This error is an error itself; the problem is actually with linking against libodbc. The usual Unix way is to set LDFLAGS, so let’s try that:
export LDFLAGS="-L/opt/odbc/odbc-2.3.0/lib\ -Wl,-rpath\ /opt/odbc/odbc-2.3.0/lib" R CMD INSTALL -l /opt/RODBC/RODBC_1.3-5 RODBC_1.3-5.tar.gz * installing *source* package ‘RODBC’ ... ** package ‘RODBC’ successfully unpacked and MD5 sums checked checking for gcc... gcc -std=gnu99 checking for C compiler default output file name... configure: error: C compiler cannot create executables See `config.log' for more details. ERROR: configuration failed for package ‘RODBC’ * removing ‘/opt/RODBC/RODBC_1.3-5/RODBC’ * restoring previous ‘/opt/RODBC/RODBC_1.3-5/RODBC’
Perhaps not. After reading more, I found that “R CMD INSTALL” can make use of the MAKEFLAGS environment variable, in which whitespaces have to be escaped (how odd). So let’s turn off LDFLAGS and try with that:
unset LDFLAGS MAKEFLAGS='LDFLAGS=-L/opt/odbc/odbc-2.3.0/lib\ -Wl,-rpath\ /opt/odbc/odbc-2.3.0/lib' R CMD INSTALL -l /opt/RODBC/RODBC_1.3-5 RODBC_1.3-5.tar.gz carlo@r500:/opt/src/RODBC> MAKEFLAGS='LDFLAGS=-L/opt/odbc/odbc-2.3.0/lib\ -Wl,-rpath\ /opt/odbc/odbc-2.3.0/lib' R CMD INSTALL -l /opt/RODBC/RODBC_1.3-5 RODBC_1.3-5.tar.gz * installing *source* package ‘RODBC’ ... ** package ‘RODBC’ successfully unpacked and MD5 sums checked checking for gcc... gcc -std=gnu99 checking for C compiler default output file name... a.out checking whether the C compiler works... yes checking whether we are cross compiling... no checking for suffix of executables... checking for suffix of object files... o checking whether we are using the GNU C compiler... yes checking whether gcc -std=gnu99 accepts -g... yes checking for gcc -std=gnu99 option to accept ANSI C... none needed checking how to run the C preprocessor... gcc -std=gnu99 -E checking for egrep... grep -E checking for ANSI C header files... yes checking for sys/types.h... yes checking for sys/stat.h... yes checking for stdlib.h... yes checking for string.h... yes checking for memory.h... yes checking for strings.h... yes checking for inttypes.h... yes checking for stdint.h... yes checking for unistd.h... yes checking sql.h usability... yes checking sql.h presence... yes checking for sql.h... yes checking sqlext.h usability... yes checking sqlext.h presence... yes checking for sqlext.h... yes checking for library containing SQLTables... -lodbc checking for SQLLEN... yes checking for SQLULEN... yes checking for long... yes checking size of long... configure: error: cannot compute sizeof (long), 77 See `config.log' for more details. ERROR: configuration failed for package ‘RODBC’ * removing ‘/opt/RODBC/RODBC_1.3-5/RODBC’ * restoring previous ‘/opt/RODBC/RODBC_1.3-5/RODBC’
This still fails, so maybe we can try the LD_LIBRARY_PATH?
MAKEFLAGS='LD_LIBRARY_PATH=/opt/gcc/4.4.2/lib64:/opt/gcc/4.4.2/lib:/opt/odbc/odbc-2.3.0/lib\ LDFLAGS=-L/opt/odbc/odbc-2.3.0/lib\ -Wl,-rpath\ /opt/odbc/odbc-2.3.0/lib' R CMD INSTALL -l /opt/RODBC/RODBC_1.3-5 RODBC_1.3-5.tar.gz * installing *source* package ‘RODBC’ ... ** package ‘RODBC’ successfully unpacked and MD5 sums checked checking for gcc... gcc -std=gnu99 checking for C compiler default output file name... a.out checking whether the C compiler works... yes checking whether we are cross compiling... no checking for suffix of executables... checking for suffix of object files... o checking whether we are using the GNU C compiler... yes checking whether gcc -std=gnu99 accepts -g... yes checking for gcc -std=gnu99 option to accept ANSI C... none needed checking how to run the C preprocessor... gcc -std=gnu99 -E checking for egrep... grep -E checking for ANSI C header files... yes checking for sys/types.h... yes checking for sys/stat.h... yes checking for stdlib.h... yes checking for string.h... yes checking for memory.h... yes checking for strings.h... yes checking for inttypes.h... yes checking for stdint.h... yes checking for unistd.h... yes checking sql.h usability... yes checking sql.h presence... yes checking for sql.h... yes checking sqlext.h usability... yes checking sqlext.h presence... yes checking for sqlext.h... yes checking for library containing SQLTables... -lodbc checking for SQLLEN... yes checking for SQLULEN... yes checking for long... yes checking size of long... configure: error: cannot compute sizeof (long), 77 See `config.log' for more details. ERROR: configuration failed for package ‘RODBC’ * removing ‘/opt/RODBC/RODBC_1.3-5/RODBC’ * restoring previous ‘/opt/RODBC/RODBC_1.3-5/RODBC’
Nope, LD_LIBRARY_PATH is ignored when it’s inside MAKEFLAGS. Let’s be psychic and set it as a shell environment variable instead:
export LD_LIBRARY_PATH=/opt/gcc/4.4.2/lib64:/opt/gcc/4.4.2/lib:/opt/odbc/odbc-2.3.0/lib MAKEFLAGS='LDFLAGS=-L/opt/odbc/odbc-2.3.0/lib\ -Wl,-rpath\ /opt/odbc/odbc-2.3.0/lib' R CMD INSTALL -l /opt/RODBC/RODBC_1.3-5 RODBC_1.3-5.tar.gz * installing *source* package ‘RODBC’ ... ** package ‘RODBC’ successfully unpacked and MD5 sums checked checking for gcc... gcc -std=gnu99 checking for C compiler default output file name... a.out checking whether the C compiler works... yes checking whether we are cross compiling... no checking for suffix of executables... checking for suffix of object files... o checking whether we are using the GNU C compiler... yes checking whether gcc -std=gnu99 accepts -g... yes checking for gcc -std=gnu99 option to accept ANSI C... none needed checking how to run the C preprocessor... gcc -std=gnu99 -E checking for egrep... grep -E checking for ANSI C header files... yes checking for sys/types.h... yes checking for sys/stat.h... yes checking for stdlib.h... yes checking for string.h... yes checking for memory.h... yes checking for strings.h... yes checking for inttypes.h... yes checking for stdint.h... yes checking for unistd.h... yes checking sql.h usability... yes checking sql.h presence... yes checking for sql.h... yes checking sqlext.h usability... yes checking sqlext.h presence... yes checking for sqlext.h... yes checking for library containing SQLTables... -lodbc checking for SQLLEN... yes checking for SQLULEN... yes checking for long... yes checking size of long... 8 configure: creating ./config.status config.status: creating src/Makevars config.status: creating src/config.h ** libs gcc -std=gnu99 -I/opt/R/2.14.0/lib64/R/include -I. -I/opt/odbc/odbc-2.3.0/include -I/usr/local/include -fpic -g -O2 -c RODBC.c -o RODBC.o gcc -std=gnu99 -shared -L/opt/odbc/odbc-2.3.0/lib -Wl,-rpath /opt/odbc/odbc-2.3.0/lib -o RODBC.so RODBC.o -lodbc -L/opt/odbc/odbc-2.3.0/lib -L/opt/R/2.14.0/lib64/R/lib -lR installing to /opt/RODBC/RODBC_1.3-5/RODBC/libs ** R ** inst ** preparing package for lazy loading ** help *** installing help indices ** building package indices ... *** tangling vignette sources ... ‘RODBC.Rnw’ ** testing if installed package can be loaded * DONE (RODBC)
Success. Note the “-Wl,-rpath” option which lets RODBC.so know where libodbc.so is, so that the end user running R doesn’t need to set any environment variables before loading RODBC.
In summary:
export ODBC_INCLUDE=$ODBC_ROOT/include export ODBC_LIBS=$ODBC_ROOT/lib export LD_LIBRARY_PATH=/opt/gcc/4.4.2/lib64:/opt/gcc/4.4.2/lib:/opt/odbc/odbc-2.3.0/lib MAKEFLAGS='LDFLAGS=-L/opt/odbc/odbc-2.3.0/lib\ -Wl,-rpath\ /opt/odbc/odbc-2.3.0/lib' R CMD INSTALL -l /opt/RODBC/RODBC_1.3-5 RODBC_1.3-5.tar.gz
Further reading: http://www.eyrie.org/~eagle/notes/rpath.html
1975 VW Beetle
April 27, 2012 | Filed Under Uncategorized | Leave a Comment
My friend Karen just got her fully restored 1975 VW Beetle back from her father. He did an amazing job.
![[photo]](/blogdata/medium/2012-04-20++13-14-40.jpg)
Karen’s dad writes:
This is a brief account of the complete restoration of a 1975 VW Beetle affectionately known as TOOT TOOT. It was bought new in Canberra by a Mrs Ngbyet of 39 National Crt, Forrest (most probably a diplomat’s wife as this is a diplomatic area of Canberra). My daughter, Karen, bought the car in 1998 (rego YFJ645) from a lady in Kambah (another suburb in Canberra) and I drove to Brisbane where she used it as her car until she departed from Brisbane to work in Bonn, Germany in 2007. It was not used then for some 6 months and as I could not bear to see the car deteriorate I agreed to restore the car since it had given Karen such a wonderful reliable service.
Restoration was started in Canberra in 2008 and completed in 2012. Engine and transmission were removed and complete reconditioned and a new carburettor and distributor fitted. The engine cylinders were upgraded from a 1300 to 1600. The engine bay was restored with new sound proofing and seals. The front axle and suspension was then removed and completely reconditioned as were the brakes both front and rear. The interior was stripped and rusted floor panels cut out and replaced with new panels. At the same time the under bonnet was restored, followed by a bare metal restoration of the body then ducoed in 2 Pak white duco, the underbody being treated with underbody sound sealant and new German running boards fitted. A new headline, as per original, was fitted and the windows replaced with all new rubber seals. The interior was reupholstered with new door trim panels and floor carpet. Lights and external trim all replated or replaced with new S/S trim. Wheels were powder coated and new tyres fitted.
Every nut and bolt has been cleaned and restored. A difficult part of the restoration was removing and replacing the door hinge pins. This is very important as badly fitting doors can ruin a good restoration. A plus has been the relative availability of most parts via the internet at this time.
Karen adds:
She did many a journey with my daughter Isabelle, a beautiful black furry companion named “Boo”, and a cattle dog named Neal. She never ever let me down! She has, is and hopefully will always remain by my side. She will forever embody the passion, love and skill of my father for restoring cars. He did a wonderful job, and I will always be grateful.
![[photo]](/blogdata/medium/2012-04-20++13-14-49.jpg)
![[photo]](/blogdata/medium/2012-04-20++13-15-07.jpg)
![[photo]](/blogdata/medium/2012-04-20++13-15-18.jpg)
![[photo]](/blogdata/medium/2012-04-20++13-15-28.jpg)
![[photo]](/blogdata/medium/2012-04-20++13-15-39.jpg)
![[photo]](/blogdata/medium/2012-04-20++13-15-55.jpg)
![[photo]](/blogdata/medium/2012-04-20++13-16-02.jpg)
![[photo]](/blogdata/medium/2012-04-20++13-16-08.jpg)
![[photo]](/blogdata/medium/2012-04-20++13-16-23.jpg)
![[photo]](/blogdata/medium/2012-04-20++13-16-44.jpg)
![[photo]](/blogdata/medium/2012-04-20++13-17-13.jpg)
![[photo]](/blogdata/medium/2012-04-20++13-17-21.jpg)
![[photo]](/blogdata/medium/2012-04-20++13-17-34.jpg)
![[photo]](/blogdata/medium/2012-04-20++13-17-41.jpg)
![[photo]](/blogdata/medium/2012-04-20++13-17-48.jpg)
![[photo]](/blogdata/medium/2012-04-20++13-17-56.jpg)
![[photo]](/blogdata/medium/2012-04-20++13-18-09.jpg)
![[photo]](/blogdata/medium/2012-04-20++13-18-38.jpg)
![[photo]](/blogdata/medium/2012-04-20++13-19-13.jpg)
![[photo]](/blogdata/medium/2012-04-20++13-19-48.jpg)
![[photo]](/blogdata/medium/2012-04-20++13-19-59.jpg)
![[photo]](/blogdata/medium/2012-04-20++13-20-13.jpg)
Home brew fridge thermostat
April 5, 2012 | Filed Under Uncategorized | 1 Comment
I picked up a cheap thermostat on eBay for controlling the temperature in my brewing fridge. The model number is BY-LOX 15A.
You can run the thermostat wire inside the door on the hinged side so there is no need to modify the fridge at all. I set the thermostat to 23C and the temperature sticker on the side of the tub stayed at about 24C throughout the brewing process. (By default it shows the current temp.)
![[photo]](/blogdata/medium/2012-03-17++09-25-33.jpg)
![[photo]](/blogdata/medium/2012-03-17++09-25-42.jpg)
The thermostat turns the fridge on when the temperature goes above the preset value. It doesn’t get very cold at night in Brisbane so I haven’t bothered with a dual control thermostat that can turn on a cooling and heating source.
Brewing at a constant 23-24C temperature has made a huge difference to the quality of my home brew.
I usually get my home brew gear from Annerley Home Brew, a fantastic store on the south side of Brisbane.
Kool stop salmon pads
March 29, 2012 | Filed Under Uncategorized | Leave a Comment
Top: original (from 2007!) rear brake pads on my Avanti Blade flatbar road bike.
Bottom: new Kool Stop salmon pads. They’re huge!
![[photo]](/blogdata/medium/2012-03-18++07-59-30.jpg)
Bike Week brekkie
March 29, 2012 | Filed Under Uncategorized | Leave a Comment
I went to the Bicycle Queensland / Scody Ride to Work event in King George Square earlier this month.
It was drizzling but I didn’t mind…
![[photo]](/blogdata/medium/2012-03-14++07-06-40.jpg)
![[photo]](/blogdata/medium/2012-03-14++07-15-06.jpg)
![[photo]](/blogdata/medium/2012-03-14++07-15-13.jpg)
Heaps of people turned up. My mate Tony won a bike light in the raffle. I was pleased with the free (healthy!) breakfast.
![[photo]](/blogdata/medium/2012-03-14++07-26-11.jpg)
Naturally there were some interesting bikes around. One guy had a compass on his handlebars:
![[photo]](/blogdata/medium/2012-03-14++07-46-48.jpg)
Must be fun to ride in a headwind. Or side-wind.
![[photo]](/blogdata/medium/2012-03-14++07-47-41.jpg)
![[photo]](/blogdata/medium/2012-03-14++08-35-21.jpg)
Friday night was Film Night:
Where Are You Go:
And the last one was The Blue Bike (sorry, no embeddable trailer).
I won the tshirt for Tokyo to Osaka
A few dissections of order 18
March 17, 2012 | Filed Under Uncategorized | Leave a Comment
A triangle dissection of an equilateral triangle is a way of dividing up a original triangle into smaller equilateral triangles, such that none of the smaller triangles overlap (for a few examples, scroll down in this post). Due to a known link between spherical latin bitrades and triangle dissections, we are able to enumerate triangle dissections exhaustively up to a certain size.
One way to calculate a canonical signature for each dissection is to take the list of triangles, the vertices of which live in , and take the sorted minimum sequence of sorted triples. We can write down a convenient representation (avoiding irrational numbers) by noting that elements of
have the form
where
. For example, the first dissection shown below has the following signature:
0 0 0 0 1/1 2 0 0 1/12 1/6 0 0 0 1/12 0 0 1/12 1/6 0 0 0 1/4 0 0 1/12 1/12 0 0 1/12 1/6 0 0 1/6 1/4 0 0 1/12 1/6 0 0 0 1/4 0 0 1/12 1/3 0 0 0 1/6 0 0 1/6 1/4 0 0 1/12 1/3 0 0 1/6 1/6 0 0 1/6 1/4 0 0 1/4 1/3 0 0 1/6 1/4 0 0 1/12 1/3 0 0 0 5/12 0 0 1/12 1/4 0 0 1/12 5/12 0 0 1/4 7/12 0 0 1/12 1/4 0 0 1/4 1/3 0 0 1/6 5/12 0 0 1/4 1/4 0 0 1/4 1/3 0 0 1/3 5/12 0 0 1/4 1/3 0 0 0 5/12 0 0 1/12 1/2 0 0 0 1/3 0 0 1/3 1/2 0 0 1/6 2/3 0 0 1/3 1/3 0 0 1/3 1/2 0 0 1/2 2/3 0 0 1/3 5/12 0 0 1/12 1/2 0 0 0 7/12 0 0 1/12 1/2 0 0 0 7/12 0 0 1/12 2/3 0 0 0 1/2 0 0 1/6 2/3 0 0 0 5/6 0 0 1/6 1/2 0 0 1/6 2/3 0 0 1/3 5/6 0 0 1/6 2/3 0 0 0 5/6 0 0 1/6 1 0 0 0
(This signature can be converted to a PDF by echoing it as a single line to the Python script draw_dissection.py)
While double-checking my C++ implementation I found that my old Python code was finding 5 fewer dissections of order 18, when counting both separated and nonseparated dissections (separated dissections have interior vertices of degree 4, while nonseparated dissections have interior vertices of degree 4 or 6). It turned out to be the way that I was calculating a canonical signature. In the interest of saving space, my old Python code just stored a list of vertices, so naturally it lost information about whether a vertex was of degree 4 or 6. Surprisingly this caused no problems until order 18. The 5 pairs of vertex-equivalent dissections are shown below:





SciPy, _ZNSt8ios_base4InitD1Ev, and link flags
March 14, 2012 | Filed Under Uncategorized | Leave a Comment
I recently tried to build SciPy 0.10.1 on a system with both the GNU and Intel compilers. Everything went find except that import scipy bombed out with:
ImportError: /opt/scipy/0.10.1/lib/python2.7/site-packages/scipy/ sparse/sparsetools/_csr.so: undefined symbol: _ZNSt8ios_base4InitD1Ev
The fix is to add “-lstdc++” to the link flags. I found a post on the SciPy mailing list where someone had the same problem and asked “Could someone please advise me how to ensure that the “-lstdc++” is successfully passed to the linker as and when I build scipy.”
The answer is to use the build_ext target to enable the link flag:
python setup.py config --compiler=intel --cc=icc --fcompiler=intelem build_ext -lstdc++ python setup.py config --compiler=intel --fcompiler=intelem install --prefix=/opt/scipy/0.10.1
Myths and debunking
December 9, 2011 | Filed Under Uncategorized | Leave a Comment
Quoting Skeptical Science on debunking myths:
Common wisdom is that the more counter-arguments you provide, the more successful you’ll be in debunking a myth. It turns out that the opposite can be true. When it comes to refuting misinformation, less can be more. Debunks that offered three arguments, for example, are more successful in reducing the influence of misinformation, compared to debunks that offered twelve arguments which ended up reinforcing the myth.
For more information, read Schwarz, Sanna, Skurnik, Yoon: Metacognitive experiences and the intricacies of setting people straight: implications for debiasing and public information campaigns.
For commentary on how scientists should respond to denialists, read Diethelm and McKee: Denialism: what is it and how should scientists respond?
Another interesting paper: Reber and Schwarz: Effects of Perceptual Fluency on Judgments of Truth
See also:
http://rationalwiki.org/wiki/Denialism
Debunking Handbook Part 3: The Overkill Backfire Effect
Crabgrass Frontier vs Regurgitator’s Superstraight
October 7, 2011 | Filed Under Uncategorized | Leave a Comment
If you could put a video clip to the book Crabgrass frontier: the suburbanization of the United States, it would have to be Regurgitator’s Superstraight:
Lyrics:
gimme love gimme good good times
here in suburbia the best you can buy
this is my home i keep my family inside
i’m late for work now honey i got to fly
he’s superstraight yeah he’s superstraight
i push my big sedan through the traffic jam
like salmon spawning to get into a can
i sing along to the pop radio
it’s propaganda but i know how it goes
you know i work all day and im out of my mind
i go man, im only human man i gotta unwind
i love my baby yeah shes number one
work girl means nothin i just bang her for fun
and when the weekend comes it’s time for my drugs
i suck em down count it two by one
help me remember to forget who i am
and when it’s over babe
that’s when it starts up again