Uncategorized

View EPUB Books from Barnes and Noble (NOOKBooks) on Sony Reader

I picked up the new 7″ touchscreen Sony Reader Daily Edition (i.e. PRS-950) on the weekend. So far I’m really enjoying it, and I’ll probably post my thoughts on it after I use it a week or two. I thought other users of the Sony Reader line might appreciate knowing that there is a way to view books purchased from the Barnes and Noble eBook store (NOOKbooks), on the Sony Readers, as this doesn’t initially appear to be possible.

One attraction to the Sony Readers (compared to an Amazon Kindle) is that the Sony Readers support the standard EPUB format for electronic books. This allows you to get free or paid eBooks in EPUB format from a number of places, as long as they do not have any non-supported DRM (Digital Rights Management, i.e. copy protection) on the files, or borrow books in EPUB format from your local library. Unfortunately once you get into eBooks in EPUB format with some DRM on them the story is not as good. There are a number of eBook stores out there that sell books with DRM on them, and not all the eBook readers that support EPUB support all the DRM formats. Books from the Sony eBook store can supposedly be read on the Barnes and Noble Nook reader. However, (currently) books from the Barnes and Noble eBook store (NOOKBooks) can not (in theory) be read on the Sony Readers. This sucks, as the B&N eBook store seems to have a pretty much better selection, and better prices, than the Sony store.

The only workaround I’ve been able to find, which is actually not very hard if you’re at all technical, is to strip the DRM off the eBooks you buy from Barnes and Noble. Sony Reader and immediate viewing needs aside, it is in my opinion a very good idea anyway to remove any DRM (if at all possible) from any eBooks you buy. This protects your investment in these books, allowing you to view them in the future no matter what device or platform you are using at that time, and isolating you from things like a vendor going out of business. (On the other hand, please note that removing DRM does not change anything w/respect to any copyright on the material and your ability to do stuff (share it, copy it) except as provided by a specific license or fair use. i.e., be good).

I was able to pretty easily use the info in Circumventing Barnes & Noble DRM for EPUB to strip the DRM from a book I bought from the B&N NOOKBooks store, and then view the unprotected book on the Sony Reader. Note w/respect to the article, that it shows two mechanisms to get an encryption key that is needed to decrypt the files, either via a script which reads the key from your install of the Nook Reader software for Windows, or via another script that simply generates the key. I found it easier to use the 2nd script, as the first is no longer applicable to the current version of the Nook Reader software, and you’d have to install an older version of the reader software to use it. On top of which, the key generation script works on any platform, not just Windows. Here is another thread that gets into some more detail on the same mechanism.

Let’s hope that future versions of the Sony Reader firmware can handle the specific DRM used on the B&N eBook files, or better yet, that the eBooks you buy from B&N don’t have any DRM on them in the first place. It’s just crazy that you have to jump through hoops like this to view the books on other devices than the Nook. It’s also short-sighted of B&N, as putting in place DRM (and this kind of DRM) effectively limits their market to the Nook (and people who are willing to be locked into the Nook), when in principle they could have a much larger market and make more money by selling books viewable on multiple platforms…

Uncategorized

Dirty Little Lie? Is Digicam h.264 / AVC Video Really Motion JPEG in Disguise?

Starting a few years back, a lot of digital cameras, even pocket models, started supporting video capture as well as the taking of traditional still (in JPEG and sometimes RAW format) pictures. Invariably, the supported video format was Motion JPEG, with pretty large file sizes. Then in the last year, cameras supporting h.264 / AVC (a real and very modern video codec), with the promise of smaller file sizes, have appeared. But all is not what it appears to be…

The reason digicams initially used Motion JPEG as their video capture format is pretty simple: in a Motion JPEG video, each frame is essentially a separate still JPEG image, with no real relationship to the frame before or after it. This makes Motion JPEG very simple and non-CPU intensive to record, since the digicam just has to be able to produce still JPEGs at the proper rate (e.g. 30fps). And digicams already know how to create JPEGs, so it’s mostly a matter of making sure the CCDs that do the video capture are fast enough and the JPEG production is fast enough, basically an incremental upgrade to existing camera circuitry. But Motion JPEG has a huge (literally) disadvantage compared to a real, modern video codec like the h.264 / AVC from MPEG-4 (what Blue-Ray uses), or compared to the somewhat less sophisticated (original) DivX, and even compared to the older h.262 found in MPEG-2 (what DVDs use). Because a Motion JPEG frame can not use any data from a previous frame, or have any of it’s data used for subsequent frames, it’s very inneficient, and resultant file sizes are quite large.

I was pretty excited to see some digicams appearing with h.264 / AVC support in the last year, and around the end of 2008 I bought a Canon SD880 IS, which (via its “Digic 4″ processor) is able to product h.264 video. In general, it’s actually proven to be a really nice little camera, also having a wide angle lens, and supporting optical image stabilization.

I was however surprised by the size of the videos it takes. They really seemed very large compared to what I thought they should be, based on the size I’ve seen for movies in DivX or h.264 format. So I’ve done a little controlled test, not necessarily the most scientific, but pretty revealing, by shooting a 1 minute h.264 video panning back and forth (in a hockey rink) with the Canon, and also shooting a similar video in Motion JPEG format with my brother’s Panasonic DMC-TZ5.

1 minute 640×480 h.264 video from Canon SD880 IS: 75.6 MB

1 minute 640×480 Motion JPEG video from Panasonic DMC-TZ5: 74.3 MB

I then used Handbrake to reprocess the Canon video with h.264 as both the input and output format, using the high quality “film” setting and got a much smaller size.

1 minute 640×480 h.264 video from Canon reprocessed with Handbrake:  13.6 MB

What’s going on?

Pretty simple. I don’t think h.264 video from the Canon, and probably most digicams out there, is “real” h.264 / AVC video. h.264 video encoding is actually pretty CPU intensive. Even decoding (for playback) is pretty CPU intensive, as seen in all the Atom based Netbooks out there which can’t properly play back HD video. I think what Canon (and probably others) have done is shove completely separate frames in that video stream, essentially Motion JPEG in a h.264 envelope. This would require a lot less processing. Given fact I was able to reprocess the h.264 video from the Canon and get a 5.5x reduction in size with no visible quality loss, there is a pretty good case to support this. Basically, the reprocessed video does reuse info from frame to frame.

So be aware, your nice new digicam putting out nice h.264 videos is not really doing a great job for you, in terms of file size at least. Does this matter? Quality-wise, not really. Quality might even be better than if it tried to do a real h.264 encoding (reuse data from frame to frame) but didn’t have the processing power to do a proper job. And it doesn’t matter when you upload the video (aside from upload time) to the likes of Youtube, since Youtube will reprocess it to its own format anyway. But if you intend to keep these videos around on your hard drive, or burn them to some other storage, or put them up on your web site, it’s well worth spending a few minutes to reprocess them with Handbrake (or something similar).

My guess is that as digicams continue to evolve and be enhanced over the years, their processing power will actually be good enough to do proper h.264 / AVC encoding right in the camera.

For interest’s sake, I have uploaded the 3 videos to Youtube. The Youtube upload doesn’t mean much, since Youtube will reprocess them to its own internal format, but if you look at them (in High Definition mode) you can see that they all have about essentially the same quality. Note as an aside that the Panasonic does have a pretty much nicer (bigger) lens than the Canon. Note also that Youtube seems to have had some issue in converting the beginning few seconds of the reprocessed h.264 video. I have not bothered to investigate this since it does playback fine in original form before uploading.
Original Canon h.264 video (high-quality mode)

Panasonic Motion JPEG video (high-quality mode)
Reprocessed h.264 video (high-quality mode)

Uncategorized

Does this RAD make my ass look fat?

I recently needed to download and install IBM RAD (Rational Application Developer) to do a demo of a Spring project in that environment. It’s been a while since I’ve hard to touch RAD, so time had done it’s magic and put it’s rosy-tinted hue around that last experience, or at least dulled the memory a bit… It’s hard to imagine that something could make Eclipse look svelte and speedy, but I guess if anybody is up to this task it would be IBM. The download was 3GB compressed (!), and in the one archive, includes code for all platforms. What kind of insane product management logic would decide to turn what would probably be something like an already bloated 2GB platform specific download into an even more bloated 3GB multi-platform download?

Uncategorized

Only your vote stands in the way of another 4 years of nucular and eye-raq

I think I’m just about ready to heave , only 50 minutes into the vice-presidential debate, and Palin has already already pronounced nuclear as “nucular”, and iraq as “eye-raq”, easily a half dozen times each.

Blargh!

Uncategorized

“The Mac lets you code anywhere, anytime.”: Ahh, the irony

I just got an email from Appie with the following text

ANY PLATFORM, ANY LANGUAGE, ANYWHERE

Why are the hottest new applications being developed on the Mac? Because the Intel-based Mac lets you easily develop for virtually any platform, language, and programming environment. And now, you can test and run applications on UNIX, Linux, and even Windows, using just your Mac*. Plus, with powerful Intel processors, MacBook and MacBook Pro let you code anywhere, anytime. Learn why developers choose the Mac to create cutting-edge applications.

Sure, if you don’t need to use Jave 6 / JDK 1.6, released almost 6 months ago now, with Apple support nowhere in sight. It looked like it would be out with Leopard, but now that Leopard has been delayed to October, who knows?

Spring 2.1 now needs JDK 1.6 to _build_ (it runs very well in JDK 1.4+), so trying to build Spring CVS HEAD for those of us using Macs is now a major pain. Fellow Spring Framework developer Thomas Risberg has figured out a sort of workaround, basically taking the JDK 1.6 Mac preview from last Sept. and patching some problem classes with equivalents from the final JDK 1.6 for Linux/Windows, but this is painful and a stopgap solution at best.

So I guess the message from Apple really is, “ANY PLATFORM, ANY LANGUAGE, ANYWHERE, once we ship the iPhone and can get back to business on other stuff…”

Uncategorized

10 Months From Maven 2.0.4 to 2.0.5. What’s Wrong With That Picture?

Maven 2.0.4: released April 11, 2006
Maven 2.0.5: released February 14, 2007.

I’m really glad Maven 2.0.5 is out, it fixes quite a number of important issues (along with some more more minor stuff and enhancements). But for a tool which should be one of the key enablers of an agile and frequent release process, something seems broken somewhere if it takes 10 months to put out a point release when there are enough issues of this magnitude.

Of course, Maven is mostly built by volunteers, with limited resources. Should it be held to a different (less than ideal) standard because of this? I don’t think so. There first of all seems to be a decent amount of developer activity, but even in the face of more work than time/people to do it, I would argue the project (like any software development activity) when working on bugs and requirements needs to triage the list of things that are worked on, and focus on a regular and more frequent release process. Anything else is ultimately damaging to people’s confidence in using Maven… It’s interesting that on the dev list, as far back as Nov. 2006 there was a thread asking for the release of 2.0.5, with mention of user frustration after no release in more than 5 months, with many serious issues fixed. Bad enough; how did that become 10 months?

Uncategorized

Best Halloween quote ever

So last night I went out trick or treating with my kids and my brother and his son. At one house, the kids collected their goodies and started walking back to the street, and with the door open and the homeowner still standing there, my 5 year old nephew took a look at the Coffee Crisp bar he had received, and yelled out, “Daddy, can you throw this away? It’s hydrogenated!”.

Looks like my brother has been putting the fear of trans-fats into his son…

Uncategorized

First attempt to use Eclipse Callisto update site not very inspiring

I’ve used update sites for various Eclipse plugins over the years, but for the most part have manually downloaded and linked to WTP. Now that Callisto is ready, I decided to go the update manager route. After installing a bare Eclipse SDK, I selected the Callisto site, picked the WTP components, BIRT, and all their dependencies, and let it go ahead and download.

After 10 minutes, I found the update manager stuck with a message that it was unpacking a certain .gz file that is part of the download. The dialog was still quite live, so after seeing that nothing was changing (71% completion percentage) I hit cancel. Now the cancel button is greyed out, but nothing else has changed. It looks like I’m going toi have to simply kill the Eclipse process.

Not a great start for Callisto on my system…

Update 2006-7-4: On a 2nd attempt, same story, different archive. org.apache.cactus_1.7.2.v200606181221.jar.pack.gz is stuck. The status bar says 69% forever.

Uncategorized

The Rewards of Being an Open-Source Developer

Basing your business around open-source is pretty tough sometimes, but it all becomes worth it when you get a private forum message like this:

“You guys are clowns for making me register to be able to browse your archives.
CLOWNS.” –AnnoyedInSF

Of course, this genius couldn’t figure out that in fact you don’t have to register to view messages on the Spring Forums, nor did he leave a working email address to tell him so. So Mr. AnnoyedInSF at IP address 206.169.112.210, thanks for making my day. The sweat and tears have definitely been worth it.

Irony aside, it’s amazing what a sense of entitlement habitual use of open-source engenders in some people. Considering the huge amount of value they are getting for nothing, would it actually be that big a deal if for some reason access to the Spring Framework forums did require a registration?

Uncategorized

Google Calendar is Nice, But Lacks Some Key Group Functionality

There’s already been a decent amount of blogging about Google Calendar (such as this entry), so I’m not going to talk about most features. In general, it’s a pretty powerful, very nice to use (due to extensive use of Ajax) calendar app.

It lacks some key group/multi-calendar related functionality compared to some alternatives such as AirSet though. We’ve been using AirSet for a while now, finding it quite powerful.

What’s nice in airset is that when you are working in one calendar, when you add an entry, you can specify that you wish to have that entry also show up (share it basically) with some of the other calendars (AirSet actually calls calendars ‘groups’, which makes some sense, as they’re really calendars for groups of users). But this is true sharing, the entry is in only one calendar. In Google Calendar, it seems the only thing you can do is copy the entry to that other calendar. Then they are completely separate entries. Changes to one don’t get propagated to the other.
On top of that, AirSet also allows you to in any calendar (group) set it up so it automatically shares events to other calendars (groups). Other calendars can see the events, but not modify them. In this way you can have calendars that have their own events, but also act as aggregators for events from other calendars.
While this kind of functionality may be of little use to somebody managing just their own calendar, it’s very useful for handling calendars in a group scenario. A group can have a calendar focused around a specific type of task, but the event will still show up on other calendars that are meant to group everything together. Even in a family scenario this is very useful, much more powerful than just (what Google allows) having separate calendars, and checking off which ones you wish to see.