JFS on Linux = Surprisingly Lossy

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.


Steve Mokris is a developer at Kosada, Inc.

Drupalcon tidbits

Cool things I learned about at Drupalcon DC include (but are not limited to) the following:

  • There is a Drupal 6 theme starter app whose maintainer is constantly improving it.
  • Usability studies have proven that I am not the only one who couldn’t figure out WTF to do with the welcome screen on my first Drupal install.
  • A lot of the modules that seem like they should be in core but probably won’t be in Drupal 7, are left out because Token is unlikely to be included and many of them rely on Token.

As usual, more coming…

DrupalCon 2009: First Impressions

I can positively affirm that the free tee-shirts given out with DrupalCon 09 registration are quality. The medium size fits me perfectly and the cotton is nice and soft and thick. Overall very wearable. Caveat: they’re not pre-shrunk so they will shrink.

I have a lot of actually relevant info to post but that will have to wait. Topics will include:

  • Theming tips and best practices
  • Awesome stuff (eg. fields!) that will be built-in to Drupal 7
  • Awesome stuff that won’t be in core in Drupal 7, and why it won’t (Hint: if it depends on something that won’t make core, it can’t go in core either)
  • Some other stuff.

Overall it’s been enjoyable and packed with information so far. I only wish I could go to more sessions.

memset() vs. bzero() — Ultimate Showdown

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.

Kineme is now (c)ubercoolische

In case you’re not super minimal like we are and don’t already know, Richie Hawtin is the Berlincoolest musician ever. His label, M-NUS, is celebrating its 10th anniversary with, among other things, a blue lighted cube (pictured left). Ali Demirel, visualist for Richie Hawtin, includes Quartz Composer in his arsenal of interactive and realtime media tools, and has been using a couple of Kineme tools to control and interact with his visuals.

He used Particle Tools to get some interesting effects in the visuals displayed behind the musicians during their set. He modified the “Fire” sample to fit with the other visuals and the music.

He also used Kineme File Tools String with URL to access the information acquired by the Cube. Members had RFID chipcards, and it would get their name whenever anyone held up their RFID chipcard to it. Demirel then chose the right moment to display their name in the visuals.

For an interview with Mr. Demirel, including links to videos, check out the full story on Kosada.com.

90% Easy, 10% Impossible

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:

QTKit QCheatKit

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.

NSSound and Enumerating CoreAudio Output Devices

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?

Silicon Dioxide (SiO₂)

QuartzCrystal LogoIn the wee small hours of this morning, Kineme Interactive Media released its first commercial product, QuartzCrystal.

QuartzCrystal is an offline renderer that turns Quartz Compositions into portable QuickTime movies. It supports 3rd party plugins, as well as patches that do not work in safe-mode-only environments (such as QuickTime Pro). It also supports software scene antialiasing, so if you have a Mac with plenty of RAM and a hard-core video card, you can make spectacularly beautiful renderings of your plugins, effects, and compositions.

Beside QuartzCrystal, the only other product that renders and encodes compositions to movies is Apple’s own QuickTime Pro, which doesn’t support plugins, unsafe patches, or antialiasing.

QuartzCrystal Main Window Screenshot

The Black Apple Strikes!

Matt Radcliffe and his BlackbookIt took a few minutes for cwright and smokris to realize what was different yesterday. Yes, the days had finally come. I had begun to shave my proverbial neckbeard. More than year after and much like similar happenings, 7/15/08 is a day that shall live in infamy.

I have an Apple product once again. 黒林檎(くろりんご、kuroringo)is born!