Thoughts and Ramblings

General things I find of interest.

The Case for Ripping Media

As some of you may know, I’ve ripped every DVD I own and store them on a file server. It’s a lot of space and it took a lot of time, but for my uses, it’s worth it.

I started this because one movie, I don’t remember which one, forced me to wait on FBI warning, another copyright violation warning, the same in French, and a disclaimer. Then it displayed two previews and a lengthy menu before I could hit play. This was followed by another lengthy menu animation, studio logos, and finally the movie. In the whole process, the studio logos and the previews were the only portions I was able to skip, the other screens marked as not skippable on the DVD. Now that I have my DVDs ripped, when I want to watch a movie, I browse my collection on the TV, and play the movie. No warnings, no menus, just the movie. I actually moved 8 months ago, and I have yet to unpack the DVD player.


FreeBSD with ZFS root

It’s been a while since I posted here. I’ve been busy with a new job, new house, and a bunch of other things. One of these things was setting up my new file server. This is something that’s been in the works for a long time, as can be seen from the various posts on ZFS. I spent a long time researching this, and finally came up with my solution:

I did consider FreeNAS for a really long time. It is essentially a FreeBSD install with most of the administrative work done for you through a web-based GUI. It hit most of my checkboxes in that it supported ZFS, AFP, Bonjour, and a few others. While this is nice, I found it also to be limiting when one wants to stray off the beaten path. I didn’t want to lose ZFS, but I wanted something where I could tinker. I decided to go with FreeBSD.


What Objective-C can learn from Java, Part 4 (Namespace)

This is the last is a series of blog posts I’m writing on things that Objective-C can learn from Java. The other parts can be found here:

For one who has programmed in other object oriented languages, Objective-C stands out with its complete lack of namespace. As a result, classes have a prefix, such as Apple’s common NS and UI prefixes. On the mac side of things, every class under the sun seemed to start with NS, such as NSString, and confusion is added when on the iOS side, several classes start with UI, such as UIView. This is due to the fact that without a concept of namespace, Objective-C cannot have two classes with the same name, regardless of whether the classes are public or not.


What Objective-C can learn from Java, Part 3 (Single Source File)

This is the third is a series of blog posts I’m writing on things that Objective-C can learn from Java. The other parts can be found here:

Objective-C still retains a lot of its heritage from it’s C beginnings. This includes using two files, a header and a source file, for each class. In a strictly object oriented environment, the header file contains the class definition (super-class and instance variables), public property definitions, and any public function declarations. The source file contains all of the function implementations, including synthesize statements. In contrast, Java contains all the functions of both files in a single file. To one who knows better, as in one who has used the single file environment, the two files for each class becomes a pain.


What Objective-C can learn from Java, Part 2 (Abstract Classes)

This is the second is a series of blog posts I’m writing on things that Objective-C can learn from Java. The other parts can be found here:

When one is using object oriented design, a common practice is to lump similar classes together with a common super-class and include the common functionality in that super-class. In doing such design, a common problem is for the super-class to require some information that can only be computed by the sub-class. The solution is for the super-class to make a function call on itself which the sub-class implements. For example, I recently designed a class which simplifies storage of an object in a SQL row, but it knows nothing about the actual field names or values stored in the database. In this case, I made a function, which subclasses implement, to retrieve this data. In Java, this is simply done through an abstract method in an abstract class.