apocryph.org back up for now
It’s been an epic couple of weeks for down time on apocryph.org. It seems FutureHosting may have solved the problem by completely disabling the firewall on my MySQL server. Great.
I’m waiting to post my mid-term review of FutureHosting’s service until they resolve this fully and to my satisfaction.
Finally moved from DreamHost & Drupal to FutureHosting & WordPress
If you’re reading this, I’ve moved apocryph.org over to FutureHosting, and I have finally migrated away from Drupal and into WordPress. Right now I’m running the stock skin and I haven’t done any configuration apart from migrate in my Drupal content and set up the Permalink Redirect plugin so the old Drupal-style links continue to work. As time permits I’ll be porting my custom Drupal theme into WordPress and generally adapting the look and feel to my tastes. Here’s hoping I don’t regret this…
Note that subdomains like svn.apocryph.org and wiki.apocryph.org haven’t been migrated over yet, so you’ll have to bear with me for a little while.
WordPress migration powered by Apocryph.org
The preceeding content was migrated from Drupal by Adam Nelson’s ByeDrupal tool. Kindly leave this post in place to help increase awareness of this tool.
Carry in National Parks is a go!
I just read in the latest VA-ALERT that VCDL’s hard work (and, certainly, that of other RKBA organizations, not the least of which being the NRA) have finally paid off, with the Department of Interior adopting rules which will permit concealed carry within national parks under the same rules applied to state parks in the state where the national park is located. This is huge for me, as I won’t go to national parks and be disarmed.
Congrats to VCDL and everyone else who worked on this. Another victory for RKBA; let’s hope The Lightbringer’s Secretary of Interior doesn’t roll this back!
I've said it before, and I'll say it again: Side-by-side assemblies are WAY worse than DLL Hell
I’ve bitched at length about Microsoft’s side-by-side scheme for ending the “DLL hell” that used to rule Windows, whereby multiple applications would each write their preferred DLL to Windows\System32, and break other apps that expected a different version. Microsoft set out to fix this problem with what I can only assume was a room full of PhD’s and no input from working programmers or sysadmins, since the resulting abomination takes a hard, non-obvious problem and replaces it with a very hard, virtually inscrutable problem.
Twice so far in the last 24 hours has this has bit me in the ass. First, I was trying to run some code on a test VM which I built on my development machine. Since I wanted to, you know, debug this code, I created a ‘debug’ build, which links the executable with the debug version of the Microsoft C runtimes. Every developer who’s ever tried to do this knows it won’t Just Work, since the debug runtimes won’t be present on the box. What I used to do was manually copy all the DebugCRT and DebugMFC files from my dev machine’s c:\windows\winsxs directory into the destination machines, which is exactly what Microsoft admonishes us not to do, but they don’t leave me much choice.
However, this VM I’m using this time is Windows Server 2008, whereon even the mighty Administrator doesn’t have write privs to winsxs; that’s limited to the Trusted Installer user. Sure, I could munge the privs, but this is supposed to be a test box, so I don’t want to munge it too far afield of what our customers’ configs will look like. So, I do what the WinSxs (say “win sucks”, because it does) guys suggest is to find the Debug_NoRedist folder in the Visual Studio 2008 install directory, copy the folders there under your architecture directly into the directory where your application is located, and voila!, through the magic of WinSxs, it will Just Work.
And, it would have. Except the Visual Studio team apparently doesn’t really get WinSxs either, because after I installed Visual Studio 2008 SP1, it updated the Debug_NoRedist folder with the new SP1 runtimes, which includes manifests that reflect the SP1 version of the debug CRT (9.0.30729.1), and not the old RTM version (9.0.21022.8). That’s the right call, except the binaries produced by SP1 have in their embedded assembly manifest a reference to the CRT version 9.0.21022.8. This works fine on a dev workstation where both the RTM and SP1 versions of the runtimes are installed, since there’s a policy file in the WinSxs directory that redirects requests for 9.0.21022.8 to the 9.0.30729.1 version. However, when you’re doing an isolated application that loads the CRTs from the current directory, there is no such redirect, so the app looks for 9.0.21022.8 and can only find 9.0.30729.1, so it eats shit and dies.
The fix? You’ll love it. Edit the Microsoft.VC90.DebugCRT.manifest file to change the version number from 9.0.30729.1 to 9.0.21022.8, and QED. Yes, that makes me feel dirty, but at least it works, which is more than I can say for the so-called “correct” way.
To whichever team came up with WinSxs: FUCK YOU ASSHOLES!
The second and more subtle way in which this bit me in the ass had to do with using CreateProcess to spawn an executable with a path like this: c:\foo\bar..\boo\baz.exe; that is, a .. somewhere in the path. That works fine normally, but if we’re using the debug runtimes, and there’s a Microsoft.VC90.DebugCRT directory in c:\foo\bar and also one in c:\foo\boo, then I get crashes the first time I allocate memory from a DLL and free it from the process. I can verify only one instance of the CRT DLLs are loaded into the process, and I can verify the DLL is compiled correctly, because when I switch from c:\foo\bar..\boo\baz.exe to c:\foo\boo\baz.exe with no other changes, it works fine.
Is this WinSxs’ fault or the CRT’s fault? Does it really matter? No: FUCK YOU ASSHOLES!
Christmas 2008 Wishlist
Here’s a list of things I would like for Christmas:
Clothing
The following 5.11 items (order from LA Police Gear to get free shipping both ways and a free hat. Pay attention to the coupon codes and verify you see the promotion at checkout before you confirm the order):
- One or more pairs 5.11 Tactical Tac-Lite Pro Pants – PLUS FREE BELT – Khaki or Coyote, size 42-32 (but get the free return shipping in case; I have three pair of 5.11 pants, all the same size, and two of them fit better)
- One or more 5.11 Tactical Covert Casual Shirt S/S – Slate blue, 2XL
- One or more 5.11 Tactical L/S Hot Weather RipStop Shirt – OD green or black, XL
- One 5.11 Tactical Stow-Away Holster Shirt – White, XL
- One or more 5.11 Tactical Loose Crew Relaxed fit Shirt – Midnight Navy, XL
- One or more pairs Under Armour Heat Gear Long Boxer Briefs – Black, XL – Get these from LAPG too; there’s a coupon code for free shipping on Under Armor purchases over $50
- One 5.11 Tactical Fleece Jacket – Black, XL
- One pair BlackHawk! Cold Weather Shooting Gloves – Black, size unknown (check back for size)
XBOX 360 games
Most of these games are available for multiple gaming systems and the PC. Make sure you get the XBOX 360 version.
- Bioshock
- Call of Duty World At War (Be careful, there at lots of Call of Duty games; World At War is the most recent one)
- Star Wars Force Unleashed
- Mass Effect
- Fable 2
- Elder Scrolls IV: Oblivion
Shooting stuff
- Car safe, size Medium, key lock (not combo lock) version
- Comp-Tac C-TAC kydex holster, 1.5″ belt, black standard clips, make: Glock, model:19/23/32 (without the extra light options), right handed
Other
- SureFire E2D LED Defender Light – I know, you probably don’t understand what makes a flashlight worth that much when you can buy a cheap light at Walmart for under $10. SureFire doesn’t make cheap lights, they make gun-mounted and everyday carry lights for defensive purposes. I’ve carried the earlier version of this light, the E2 (with an incandescent bulb) for seven years, every day. It’s been dropped, stepped on, immersed in water, and used as a blunt instrument, and only the rubbed-off finish where it rides in my pocket indicates any wear at all. The new LED version runs longer on the expensive CR123 batteries, and has a crenelated strike bezel in case 16 rounds of 124 grain jacketed hollow points are not sufficient disincentive for an attacker.
- 12-pack of CR123 batteries – Both my current E2 and the above light run on lithium CR123 batteries, not standard AAs. The 12-pack from SureFire is the cheapest way to get replacements.
- Replacement battery for my Motorola K1M cellphone.
- Popcorn Hour A-110 Networked Media Tank
Books
Building rcapdissector on Ubuntu 8.04
I’m trying to build my rcapdissector project under Linux for the first time. Starting with a fresh Ubuntu 8.04 install, I did:
sudo aptitude install bisonto install yacc/bisonsudo aptitude install flexto install flexsudo aptitude install libgtk2.0-devto install the GTK+ 2.x headers and librariessudo aptitude install libpcap-devto install the libpcap headers and librariessudo aptitude install libgnutls-devto install the GNU TLS library (this also installs the GNU crypto library as a dependency)sudo aptitude install ruby ruby1.8 ruby1.8-devto install Ruby and the relevant headerssudo aptitude install ruby-gnome2for the Glib-awaremkmfsudo aptitude install g++to install the latest GNU C++ compiler./configure --prefix=/home/anelson/wiresharkin the Wireshark 1.0.4 source tree to configure the Wireshark buildmakein Wireshark tree to build Wireshark- Edit
/etc/ld.so.confsolibwireshark.soandlibwiretap.soare in the system search path. I did something like:
> cat /etc/ld.so.conf.d/wireshark.conf
/home/anelson/wireshark-1.0.4/epan/.libs
/home/anelson/wireshark-1.0.4/wiretap/.libs
- Run
ldconfigto pick up the changes ruby -w extconf.rbin thercapdissector/extdirectory to generate theMakefilefor the extension. Note you’ll almost certainly have to provide library paths tolibwiresharkandlibwiretapas well as theepan/epan.hheader files. More on this latermaketo build andmake installto install- Run
all_tests.rbin thetestfolder
As of now I’ve got this working with the latest SVN, except I’m getting a segfault when I run the tests, which I chalk up to something changed in Wireshark between 0.99.5 and 1.0.4. Also note that I slightly broke Windows compatibility to get this going, so the latest SVN won’t build under Windows without a bit of reverse contortion, but you can see from the SVN diffs what I did.