The random rantings of a concerned programmer.


April 21st, 2009 | Category: Random

I had a machine upstairs hooked up to the cable modem acting as both a wireless router and a SMB/NFS server. Yesterday, we noticed some young birds had taken up a nest on our roof and were tweeting away.

You might not think these two pieces of data are related, but they are. Those weren’t birds — the sounds were coming from the primary hard drive of our router. FUUUUUUUUUUUU. For some reason, two of the three drives in the machine failed. Sounds like some kind of mechanical failure in the primary drive, and on one of the data drives the partition table was completely screwed up (though I managed to rebuild it by hand). As I was dumping the data off this second drive, I noticed something that I had forgotten to do –

The RAID5 array that I built isn’t encrypted with GELI. So I just wiped it and layered GELI on top of the RAID5 volume — it was really incredibly easy to do. Except now I’m filling the 2.6TB volume from /dev/random before running newfs (and re-copying over all my data) and fuck this is going to take forever. But now I’ve got a secure volume for all of my totally legal material. Huzzah.



April 12th, 2009 | Category: Random

There are currently 658 comments in my WordPress spam queue. Haha, oh wow.

My new lease (for 2009-2011) starts in three weeks; I’m really excited about it. It’s always really fun for me to move around, since it’s an opportunity to cut off all the old cruft that’s collected both in my room and in my lifestyle. And the new house has an extra bedroom which I’m going to fill with bookshelves to store manga and shit (because holy shit I seem to be building up a lethal amount of the shit).

I did some more work on the fucking fileserver-to-be which has been sitting on my bench for weeks. Finally got around to updating the BIOS on the DG33TL that it’s using (so now it can actually read from all of the on-board SATA ports). And scrapped the old flaky PSU. And extracted at least 10 loose screws that were jangling around in the Chieftec case I dug out of my closet (seriously where the fuck did all those screws come from?).

I threw the FreeBSD 7.2-BETA1 iso in there and it didn’t boot for some reason. The hardware I’m using is shitty as hell; it booted and installed ArchLinux just fine so I’m going to give it a shot with a 6.4-RELEASE disk I have at work. Linux is great and all, but I just don’t understand it. I mean sure, I understand the basics. I just have no idea how I’d set up an encrypted, software RAID5 data volume next to a RAID1 system volume in Linux.

Also thought about installing something like FreeNAS but hahaha no1.

[1] The old vinum doesn’t actually write parity data for RAID-5 configurations. This has been fixed in -CURRENT, and I doubt that FreeNAS is going to work 100% on -CURRENT. Otherwise, fuck I’d probably run it.


Dear Apple

February 02nd, 2009 | Category: Random

Go fuck yourself

I got an iTouch from work today to play around with. My superiors want to get into iPhone/iTouch development because, hey, we require all students in the Medical School to have these damn things but we don’t actually do anything with them. They’re not integrated into the curriculum. There aren’t any university resources that you can really access with them. We just shove them the fuck down our student’s throats.

So I was in a meeting today which basically boiled down to “we want an iTouch/iPhone portal which serves as a hub for the few resources that are actually accessible; it shall serve as a skeleton for future developments.” I was like “yeah okay that sounds like a reasonable request”. Hell iTouch/iPhone development sounded pretty cool until I actually got my hands on a fucking device.

802.11g is broken

I don’t know what the fuck is wrong with these goddamn things, but their wireless shit is fucking burnt toast. I’d classify the connections I’ve gotten so far (with several different access points — all of which work fine with my laptop and NDS) as flaky at best, unusable at worst. It’s bad enough that I suspect it’s a scam to force people onto the 3G networks.

Proprietary Bullshit

My fucking god what the fuck.

I can accept that I need an x86 Mac to develop bullshit for this thing. That’s fine. But do I really fucking need iTunes installed? Especially since I had to dig up a fucking Windows machine to use the piece of shit, then register an account, then give them my credit card information. Seriously jesus fuck you assholes give me a fucking break.

Sure, they say that you can use Paypal, but the Windows machine I have is running x64 which means their little magic tricks to communicate the success from the browser to the executable (which fucked up Firefox royally, by the way) don’t work — the iTunes binary is located in Program Files (x86), not Program Files. If it were in the later it wouldn’t run because LOL WINDOWS ADVANCED x86 EMULATION. In a real operating system you could just brand the executable to run under a specific ABI and be done with the shit, but nooooo.

There’s probably something I could have done to make that shit work (so I could actually use my Paypal account instead of giving those whores my credit card information) but Windows can go fuck itself too.

Pain in the Ass Documentation

For some stupid fucking reason they put all their goddamn documentation in a fucking vault. You have to register yourself and get an Apple ID before you can see the generic “webapp” documentation. To see the iPhone shit and download the XCode SDK you have to go a step further and register yourself as an iPhone developer. I thought it cost $100, but it looks like it’s actually free (the $100 is the application publishing fee or something).


Despite the $100 publishing fee, every fucking twit has gotten their half-assed piece of trash into the ShitStore. This is a known problem™ which has been discussed at length elsewhere so I won’t even bother going past a mention of it.

I’m sure once you get into a nice development swing and have all your shit toolchains together it’s not too bad of a platform. I’m sure that once you’ve got an application developed deployment to a userbase isn’t a fucking nightmare of a bitch. And application maintenance probably isn’t all that bad either. You just have to whore yourself out and suck Steve Job’s dick long and hard.

You know what the real kicker for me is though? I can’t even recharge the damn thing on a machine without iTunes (ie, every machine I own). Talk about fucking shoddy hardware.




January 30th, 2008 | Category: Random

1201564967277.jpgSo I got around to tinkering with my new HDDs yesterday Setting up netboot for like the 9000th time was fun; it’s interesting to see how many mistakes and inaccuracies are in that old post of mine. I should update it one of these days…


So after much tinkering, it looks like everything is working, for the most part: the new IDE controller supports 48-bit LBA, so I can write to the entire disk. At least, it hasn’t crashed yet, and I’ve been dumping my entire (local) anime collection to it. Given that I’ve got a 10bT internal subnet set up, it’ll be awhile before enough shit’s dumped that I’ll be completely confident that it’s correct.

When I said “everything is working”, I was lying a little bit. One of the brand new 500GB Seagate drives is a squeaker. A loud squeaker. I’m going to declare it “DEAD” and send it back for a replacement (look forward to upcoming posts on dealing with such a case!), because my god. There’s no way in hell I can trust such a broken-sounding drive.

The other problem is that fsck_ufs still breaks the thing. Well, it doesn’t lock up the entire machine anymore, it just locks up it’s own process during the biord state. Which kinda makes sense, since the machine is netbooted, it doesn’t need to touch the drive like ever.

Now, I did some light digging and biord is just a random undocumented part in the code where the process enters a sleep state. You’re supposed to be able to find it by grep‘ing the source tree, but I haven’t gotten around to doing that.

1201584852261.jpgThe thing is, biord looks suspiciously close to “BIOS Read”, like, dumping a part of the disk from the BIOS. Which, if this is the case, is why the damn thing is locking up the drive: the BIOS doesn’t support 48-bit LBA, despite the IDE controller supporting it. Going to take some more investigation, but I wouldn’t be surprised if this is the case. I mean, how many other people are running huge drives on ancient hacked together hardware?

From my experiences with it thus far, I doubt there are many others. For good reason. lol ;P

Comments are off for this post


January 17th, 2008 | Category: Random

Fuuuuuuuuck. Ever since I moved those dual P3′s boards into 1U cases I’ve been having shittons of trouble with the one with the PATA HDD. Whenever you put the HDD under any kind of moderate load, the entire system freezes up with something like:

ad0: TIMEOUT - READ_DMA48 retrying (1 retry left) LBA=342748815
ad0: FAILURE - READ_DMA48 status=51 error=10 LBA=342748815
g_vfs_done():ad0s1g[READ(offset=67317301248, length=131072)]error = 5
ad0: TIMEOUT - READ_DMA48 retrying (1 retry left) LBA=342721711

Which is shit because I want to turn this machine into a fileserver hosted elsewhere, and I can’t have it crashing every time someone needs to fetch a file off of it.

So I’ve been searching around for a solution to this fucking problem. Looks like it was introduced in FreeBSD-5.0, at least, if it’s a bug in the ATA driver. It could very well be a hardware error, though I’ve already swapped out the PSU and RAM (which didn’t have any effect on the bug). Later tonight I’m planning on sticking the HDD into another machine and seeing if I can duplicate the issue (since my spare motherboard appears to be broken).

Anyway, the most useful post I found on the subject was one from the freebsd-hackers list, which suggested that there might be a one-off error in the 48-bit addressing mode change.

     /* only use 48bit addressing if needed (avoid bugs and overhead) */
-    if ((lba > 268435455 || count > 256) && atadev->param &&
+    if ((lba > 268435454 || count > 256) && atadev->param &&
        atadev->param->support.command2 & ATA_SUPPORT_ADDRESS48) {

        /* translate command into 48bit version */

This is from back in 2004, but looking at the 7.0-BETA4 sauce:

suigintou# grep -n 268435455 *
/usr/src/sys/dev/ata/ata-all.h:309:#define ATA_MAX_28BIT_LBA               268435455UL

Changed that to 268435454, recompiled and installed the kernel, and the errors still popped up. I’m kind of tempted to set that value fairly low and see what happens (off-by-two error? unlikely)

The other weirdness is the output from smartctl -a /dev/ad0:

blah blah

ATA Error Count: 7 (device log contains only the most recent five errors)

  After command completion occurred, registers were:
  -- -- -- -- -- -- --
  84 51 00 00 00 00 e0  Error: ICRC, ABRT at LBA = 0x00000000 = 0

Hrm, I was thinking that the LBA was fucked up, but ICRC (the error code) probably stands for “invalid CRC”. Anyway, all 7 errors are the exact same. The error counter doesn’t seem to increase when the system crashes. Everything else from the smartctl output seems reasonable (no errors, hdd is fairly new and in good condition).

Anyway, I’m kind of frustrated at this point. Not only am I basically down a spare motherboard, but this fileserver (which I have 2x 500GB Seagates in the mail for) might not be stable by next month, when I plan to have everything racked up and serving…


UPDATE: I tried the HDD in another machine, and unsurprisingly, it worked fine. I was about to give up on this issue and try to get that extra motherboard to POST when I had the idea of booting the HDD-issue board with only one CPU. Surprise surprise, it booted with one CPU and is now csup’ing the source tree – something that caused the system to lock up almost immediately.

THE PLOT THICKENS. thankfully I have like 2084 spare P3′s to test with, to see if this is a hardware issue…

UPDATE: nm it still broke ad0: TIMEOUT - READ_DMA48 retrying (1 retry left) LBA=344566895 etc it just took a lot longer this time. I guess SMP just aggravates the issue.

UPDATE: Okay, so I wanted to test the CPUs on the dead extra mobo so I was taking the CPUs out of the broken controller one when all of a sudden one of the heatsink stubs on the socket fucking BROKE OFF. This had actually happened before on this board, but it was on the other socket. So I got out my superglue and repaired the second of two broken sockets on the board… sheesh.

So instead, I took the two CPUs from the broken controller board and stuck ‘em into the dead extra motherboard and… IT BOOTED!!! I’ve got it rigged up with the HDD and shit, running csup now as a stress test (which, if it succeeds, I’ll follow up with a make buildworld…). HOORAY.



  • Tyan 2515 Motherboard: IDE Controller is dead.
  • Tyan 2515 Motherboard: Broken heatsink stub (repairing).
  • 2 Pentium III CPUs: Presumed dead, pending further tests.

UPDATE: shit nm it crashed. It’s either the CPU (since I took the ones from the broken-controller-mobo), FreeBSD, or the HDD. I’ll probably swap the CPUs after I recover from my drenched elation, then try swapping the HDD when the new ones arrive. I have a SCSI drive coming and 2 fat PATA’s, gonna have the SCSI machine running as the master + netbooting the other machines (only one “other” right now) which will all have nice fat HDDs to save shit on. Sigh.

Comments are off for this post