Posts involving snarkiness.
A Tale of Two Chairs A Tale of Two Chairs

Posted by mradcliffe on 2010.02.13 @ 10:11

Filed under:

It was the best of products and it was the worst of products. It was a tale of one man trying to find an affordable chair.

Several years back I shopped at WalMart and bought a card table with four folding chairs for around $50. I was really disappointed because I didn’t think a card table would be worth more than $30 or so. This story however is not about the card table, but about chairs. [more...]

JFS on Linux = Surprisingly Lossy JFS on Linux = Surprisingly Lossy

Posted by smokris on 2009.03.08 @ 18:29

Filed under:

I set up a RAID media server a couple years ago, and decided to give JFS2 a try, since it’s touted as being fast and reliable across the spectrum of usecases. My setup is primarily write-once-read-many, for storing the terabytes of audio and video recordings I’ve made over the last decade for project ruori and the like.

Several weeks ago, the power went out for an extended period of time while I was away, and, while it was on UPS backup, it failed to shutdown cleanly and the power was suddenly cut when the UPS ran out.

When I brought the machine back up, the volume wouldn’t mount, so I ran jfs_fsck on it. jfs_fsck said that the journal was corrupt, and started block-scanning. It came up with a pretty big list of files and directories that were irrevocably corrupt. Parts of a few of them got linked into /lost+found, but the majority simply vanished.

Funny thing is, I hadn’t made any changes to these files in several years. I could understand if maybe some very recent FS updates were lost due to write-caching, but why did it lose track of these ancient files?

This reminds me of the rampant table corruption of MS-DOS’s FAT16 filesystem, which couldn’t keep track of a needle dancing on the point of a needle.

So, plus one for backups of backups, and minus one for JFS on Linux. I think I’ll be rebuilding the machine with ZFS-fuse. Or OpenSolaris, for that matter.

memset() vs. bzero() — Ultimate Showdown

Posted by cwright on 2009.01.14 @ 21:58

Filed under:

There are a few functions used to zero out memory on most unix variants. memset(), bzero(), and calloc() are all a few such functions. calloc() isn’t very useful for clearing already allocated memory, so it won’t be appearing much more in this article. However, the other two are somewhat more interesting than meets the eye. [more...]

90% Easy, 10% Impossible

Posted by cwright on 2008.09.13 @ 19:19

Filed under:

90% Easy, 10% Impossible Pie ChartFrom time to time, I get these insatiable urges to read what other Cocoa developers blog about. Sometimes they’re informative, sometimes they’re funny, sometimes they read like college textbooks, and sometimes they’re just downright terrible, but I read them anyway. It comes and goes in waves, every 2 or 3 months. A couple weeks ago, one such binge happened, and I started reading Aaron Hillegass’ critique of NSController (since I was hating it at the time, and wanted to feel justified in hating it). In the critique, the following statement was made: [more...]

QTKit QCheatKit

Posted by cwright on 2008.08.26 @ 12:11

Filed under:

QuickTime LogoApple has been busily working to 64-bit-ify all of the frameworks they plan to continue supporting into the future (Snow Leopard and beyond). However, QuickTime is scheduled for some nice Cocoaification, so it didn’t get much 64-bit love. QTKit, the 64-bit impostor, pretends to be the 64-bit way forward, but unfortunately this is far from useful.

QuickTime is all C function stuff, rather verbose and boring. It’s also 32-bit only. The 64-bit front end on it is a framework called QTKit. However, 64-bit QTKit is little more than an impostor that secretly makes things messier during the 32-to-64-bit transition. [more...]

NSSound and Enumerating CoreAudio Output Devices NSSound and Enumerating CoreAudio Output Devices

Posted by smokris on 2008.08.12 @ 09:16

Filed under:

Cocoa’s NSSound provides a blindingly simple way to play back audio asynchronously, and even provides some metadata and control over how the audio is played back.

It uses the default sound device, by default. It gives you the ability to change the output device.

According to the documentation:

- (void)setPlaybackDeviceIdentifier:(NSString *)playbackDeviceIdentifier

Specifies the receiver’s output device.

playbackDeviceIdentifier
    Unique identifier of a sound output device.

That’s it. What is the “Unique identifier of a sound output device”? What format is this “Unique identifier”? How do I get a list of the “Unique identifiers” of the available output devices on my system? [more...]

The Complete Idiot's Guide to Voter Fraud

Posted by bbinkovitz on 2008.03.03 @ 19:53

Filed under:

Warning - Fraud Hazard Next 1 ElectionsRemember how in 2004 everyone was so freaked out about the terrific hackability of both the hardware and software of Diebold and other electronic voting machines? Well, the fuss has sort of died down about that. (Not that there was any reason for it to — there are no reports that the problems with the machines were ever adequately addressed.) And anyway, what vigilante dictator has the time or inclination to mess around with all that techno-crap involved in hacking a voting machine? Key-cutting takes all of 2-5 minutes per key, and firmware hacking involves learning boring things, like what firmware is. It’s enough to get a would-be crooked election worker or stealth saboteur to give up and go back to throwing Molotov cocktails at Planned Parenthood staff.

But don’t give up yet, all you burgeoning totalitarians out there! For here I shall reveal a much simpler (albeit slightly less efficient) method of voting fraud. Here is what I learned in my absentee-ballot-casting experience. Oh yeah, and dear internets: please use this for good and not evil. And also don’t use it at all. [more...]

Python's Flying Circus

Posted by cwright on 2008.02.22 @ 14:35

Filed under:

Python Logo

Lately I’ve been working on integrating (or, more accurately, attempting to integrate) the Python scripting language into some plugins for an application we develop plugins for. We’ve wrapped many libraries with varying levels of success, so this one wasn’t going to be much different. Or, so we thought. [more...]

Some Crazy MacBook Pro Checkerboard Graphics Corruption / Crash Some Crazy MacBook Pro Checkerboard Graphics Corruption / Crash

Posted by smokris on 2008.02.15 @ 13:34

Filed under:

Last summer Kosada purchased a MacBook Pro for the president of one of Kosada’s consulting clients. It’s been a great improvement over the old Dell laptop he was formerly using, and, though he was initially worried about whether he’d be able to grasp the new UI, he seems to have picked it up quickly, and he reports that he’s been loving it.

But this morning he called me with a rather odd problem:

“I hooked up my Treo and started syncing it, then walked away for a few minutes. When I returned, the screen was covered with a bunch of squares, and I can’t do anything.”
Is Smaller Better? Is Smaller Better?

Posted by mradcliffe on 2008.02.03 @ 22:39

Filed under:

Epia EX small

In the past couple of months I thought about spending some money on either a Nintendo Wii or a multi-purpose media box (not to mention my anxiety over buying an unmodifiable blackbook). Over the past 3 years I’ve looked at smaller cases as “better”. Before that it was always the full tower case that provided more room and ease-of-use. In this vein I’ve been looking at the world of mini-itx for the past several months.

VIA created the mini-itx specification for itself, but since its creation other companies started creating motherboards with this spec and recently so has Intel. The spec allows for a low-power consumption CPU, which is great for point-of-sales machines, thin clients, and more. The other use of mini-itx, popular amongst personal users, is as a Home Theater PC (HTPC) or media center. [more...]