apocryph.org Notes to my future self

31Dec/080

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.

Filed under: Uncategorized No Comments
10Dec/081

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.

7Dec/080

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.

5Dec/080

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!

5Dec/086

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!

3Dec/080

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):

XBOX 360 games

Most of these games are available for multiple gaming systems and the PC. Make sure you get the XBOX 360 version.

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

1Dec/080

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 bison to install yacc/bison
  • sudo aptitude install flex to install flex
  • sudo aptitude install libgtk2.0-dev to install the GTK+ 2.x headers and libraries
  • sudo aptitude install libpcap-dev to install the libpcap headers and libraries
  • sudo aptitude install libgnutls-dev to install the GNU TLS library (this also installs the GNU crypto library as a dependency)
  • sudo aptitude install ruby ruby1.8 ruby1.8-dev to install Ruby and the relevant headers
  • sudo aptitude install ruby-gnome2 for the Glib-aware mkmf
  • sudo aptitude install g++ to install the latest GNU C++ compiler
  • ./configure --prefix=/home/anelson/wireshark in the Wireshark 1.0.4 source tree to configure the Wireshark build
  • make in Wireshark tree to build Wireshark
  • Edit /etc/ld.so.conf so libwireshark.so and libwiretap.so are 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 ldconfig to pick up the changes
  • ruby -w extconf.rb in the rcapdissector/ext directory to generate the Makefile for the extension. Note you’ll almost certainly have to provide library paths to libwireshark and libwiretap as well as the epan/epan.h header files. More on this later
  • make to build and make install to install
  • Run all_tests.rb in the test folder

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.

Delicious Bookmarks

Recent Posts

Meta

Current Location