Thursday, December 03, 2009

The Most Expensive Album I Ever Bought

Every year around this time I start thinking about this record album I used to have as a kid, and start feeling nostalgic. It was a recording of A Christmas Carol, most definitely geared toward children to be sure. But for my formative years this album was the definitive version of A Christmas Carol for me. I used to have it on a vinyl LP, but at some point after I moved out on my own, or maybe even before, I got rid of the album. Why keep such a childish thing, after all?

Now that I'm older, I regret that. Of course, even if I had the LP, I haven't had a record player in many, many years. Probably almost 20 years. (Gasp! Allow me to pause for a moment while the reality of that hits me). Even before CD's got popular I mostly listened to cassettes.

Anyhow, every year around this time, I find myself doing a little searching on the 'net, hoping beyond hope to find a digital version of this recording. I've never had very good results, partly because I couldn't remember enough about it to even know what exactly to search for. I wasn't sure if it was called Scrooge or A Christmas Carol. I had no idea who actually recorded or published it. I did know that there was a flip side with another story called The Fir Tree which I also liked, but that was about it.

Well, this year, at Thanksgiving, I was talking to my sister about it, and she remembered the album, too. We were quoting parts of it and reminiscing, which inspired me to go looking again. I spent "Black Friday" morning trolling the 'net, and eventually found a site that listed discography for "Peter Pan Records" and found the information for the album I was looking for. It was A Christmas Carol by the "Peter Pan Players & Chorus". Apparently it was released in 1972! Wow!

With this additional information, I was able to refine my search, but as I expected, I could not find any kind of digital version of it for sale. I did find a couple of auctions on eBay that had this record, and when I saw the picture of the album cover I recognized it right away! I was sure it was the same one from my childhood memories. One of the auctions was "Buy It Now", and it was only $12.99, so rather than risking missing out on getting it I went for it. I have no idea how many of these are floating around out there and what condition they are in, but now that I had struck gold after all these years I didn't want to risk it. Soon the record was on its way to me.


One problem: I don't have a record player. So I went to Amazon and found this USB turntable. At the time I ordered it the price was about $80, although I've found it interesting that as I've been sending links to it to friends who've asked about it, I've noticed the price seems to frequently change, I've also seen it close to $100. So, I guess I got a deal! This was about the least expensive USB turntable I could find, and it got a pretty good rating overall on Amazon. Also it specifically said it would work on a Mac.

Anyway, the turntable arrived two days ago and I got my hands on the album today. I could not wait to get home and listen to this recording that I have not heard in so many years. I got the turntable set up, which was a little more involved than I had anticipated, but not too bad. I had to attach the cartridge and a counterweight on the arm which had to be adjusted a little. I also had to install the platter and loop the drive belt over the motor. No big deal. The turntable comes bundled with some kind of "EZ" software as well as Audacity. I already had Audacity installed on my Mac, and since it provides additional editing capabilities (e.g. filtering out the worst of the pops and clicks) I decided to just use that.

In just a few minutes, I was listening to The Fir Tree. I decided to start with that one since it was shorter, and would serve as a trial run as it had been awhile since I used Audacity. It was just as wonderful and depressing as I remembered! "Piece by piece he was fed into the fire. Gone. Gone. The little fir tree was gone."

I ran it through the pop/click filter and exported it as an MP3, and moved on to the best part: A Christmas Carol. "Ebenezer Scrooooooooge ..." it began. Ah, the memories flooded back! Unfortunately, while The Fir Tree played without a hitch, there was one spot in A Christmas Carol where it skipped and just kept skipping. Upon inspection, I found there was a visible spot on the record where it was scratched a little. I suspected that maybe if the weight on the cartridge was a little higher it might not skip as easily. So I tried adjusting the counterweight on the arm, and fortunately I was able to get it past that point. I was able to clean up the skip pretty well using Audacity, so it's hardly even noticeable.

I actually bought another record, a recording of Pinocchio which is the one other record I remember having as a child. I mostly bought it to help further legitimize the fact that I bought this USB turntable which, once I digitize Pinocchio, will probably go into a closet never to be used again.

So the record that probably only cost a couple of bucks when I was a kid cost me around $100 all-in this time around. I guess that's inflation for you, huh?

Wednesday, November 04, 2009

ThisMonkeyWriteMo or "What The Right Side of My Brain Is Up To Lately"

Those of you you have been reading this blog for a long time (uh... hello? Anybody still out there?) may remember this gem from 2005.

Wow. 2005? Has it really been that long?

Well, life happens, and despite my best intentions, not much has come of the things I planned on doing, which I wrote about in that blog entry.

This year, I've gotten involved in NaNoWriMo (those of you who follow me on Twitter are probably all too aware of this, as I've been updating my word count daily, but you may not know exactly what it is). If you care to know, read on.

NaNoWriMo is shorthand for "National Novel Writer's Month". The short explanation is this: when you commit to doing NaNoWriMo, you commit to writing 50,000 words of fiction during the month of November. That's it. And it doesn't cost a thing!

OK, that's a lie. There's no money involved, but it does cost quite a commitment of time. Already, some of my co-workers are annoyed at how far behind I am on television. (Can you believe I have not even watched the new "V", and have no idea when I will? And that apparently there have been some kind of important baseball games being televised?) I'm that far behind already, and this is only the first week! I envision a future with much less television in my life. That is probably not a bad thing.

So, what's magic about 50,000 words? It's sort of arbitrary, but the guy who started this crazy thing established 50,000 words as sort of the minimum length for a novel. If you want to know more, check out the site I've linked above, particularly the FAQ.

A couple of people have asked me about this undertaking, wanting to know what my story is about, whether or not I'm going to get it published, who do I think I am with these crazy delusions, etc. Well, let's take the second question first. Absolutely not. I don't think I ever want anyone to read this story. It's pretty bad. Even after some heavy editing, I'm pretty sure it will be beyond redemption. But that's not the point. The point is to get the creative juices flowing. Prove to yourself that you can actually create something new. Art for art's sake (even if the first few attempts aren't beautiful).

I have to admit, while part of me is a little distressed at the amount of time its taking out of each day, there is another, rapidly growing part that is starting to remember why I loved this so much when I was younger, before I became a hard core computer geek. The thing I've always loved about programming computers is the ability to create something new. You can read my 2005 blog entry to get an idea about how that's working out for me. Not much has really changed in four years with regard to getting to create new things every day.

On the other hand, it is really a lot of fun to create entire universes in your own stories. For the novel I'm working on right now, I have no outline, no real plan for where its going. I'm just making it up as I go. It's a lot of fun and the right side of my brain is enjoying getting some attention for a change. Already there's been an accidental death, a revenge killing and an arson fire - and I'm only four chapters in!

The NaNoWriMo is a great, fun challenge, but I plan on continuing once this month is over. Probably not with the novel I'm working on now, but something else. I'm going to really start working on improving my writing skills. Mostly for fun, but hey, it'll be nice to have something to fall back on if this whole computer thing just turns out to be a passing fad!

Friday, October 30, 2009

Unattended Installation (aka Silent Install) of Sun JDK in Debian

Posting this short note to my blog in the hopes it may help someone else, as I had a hard time tracking this info down.

Debian provides a package (sun-java6-jdk) for installing the JDK, but when you have a situation where you need to do an unattended installation (aka "silent install") of the JDK you are stuck, because the install insists on making you interactively accept Sun's licensing agreement. Passing the -y option to apt-get has no effect. I was able to find a link on Sun's site for doing silent installs on Windows, but nothing for Linux.

Fortunately, I eventually tracked down, all you have to do is the following before you run your apt-get install command:

echo sun-java6-jdk shared/accepted-sun-dlj-v1-1 boolean true | debconf-set-selections

This indicates to the installer hooks that you have already accepted the license agreement, and doesn't give you the annoying EULA dialog.

UPDATE 11/3/09: I should note that all of the above research was in preparation for setting up an automated install with FAI. Unfortunately, I later found out, that while the above works great in the regular command line, due to the nature of the environment FAI installs run in, it doesn't work for that. However, I also discovered there is a correct way of doing it with FAI.

Use "debconf preseeding". Create a class file e.g. debconf/DEFAULT (I used debconf/easberry-vm-std-plt-01 for testing with my host class, and populate it with the following:


sun-java6-bin shared/accepted-sun-dlj-v1-1 boolean true
sun-java6-jdk shared/accepted-sun-dlj-v1-1 boolean true
sun-java6-jre shared/accepted-sun-dlj-v1-1 boolean true


This accomplishes basically the same thing, but in the FAI environment. Success!

Sunday, October 25, 2009

No Fluff, Just Stuff Atlanta

I just finished attending a 3 day (well, technically 2 1/2 days) tech conference called the "Greater Atlanta Software Symposium". (Most people seem to just refer to it by the name of the organization, "No Fluff Just Stuff"). I highly recommend this conference, which is held at various locations throughout the year. This is the third one I've attended, and I always come away from them excited about the new tech I've learned and eager to apply it.

There were lots of good presentations. On the first day, I started out with a presentation on anti-patterns in software development. (I always wonder, if patterns and anti-patterns converge do they annihilate each other)? Then I went to a presentation on Scala, which I've heard a lot of buzz about. It looks interesting, though some of the syntax made my eyes hurt. Then, I went to a presentation on Flex development. This, I think, is something I really want to pursue. Flex looks pretty cool, and like it or not, Flash is a lot more ubiquitous than Java on the desktop ever was or will be. (Sorry JavaFX). After dinner, there was an interesting keynote on being an iconoclast. It was very thought provoking, although the speaker sort of lost me when he seemed to put the "Dixie Chicks" on par with Florence Nightingale and other historical figures as examples of iconoclasts.

The second day I attended several web design talks by a couple of different presenters. I really need to read "Don't Make Me Think"and "The Design of Everyday Things." I also attended a session on "Java.next" which was an overview of up and coming alternative languages on the JVM. (This is where I first heard the controversial statement I mention below).

The final day (today) consisted of topics that are probably the most immediately applicable to my day job: presentations on the "Busy Java Developer's Guide to Collections" and a couple of deep dives into garbage collection on the JVM and various tools that are available to help troubleshoot running systems. (BTrace looks awesome!) I also attended a presentation on applying functional language approaches to Java development.

Functional languages on the JVM seemed to be one of the dominant themes this year. I think I need to spend some time learning either Scala or Clojure (or maybe both). One really provocative comment made by one of the presenters, and reaffirmed by the group at the expert panel talk, was that no "green field" projects should be written in Java. Of course, its a particularly provocative comment given that it was made at a conference targeted at Java developers.

I have mixed feelings.

I'm convinced that these new languages provide a lot of demonstrable benefits over the aging Java language. Since they run on the JVM, they can even be grafted onto existing Java projects. Of course, it's always good to learn new technologies just to tickle your brain, and maybe even get some new insights and ways of thinking about various problems.

On the other hand, in my world I don't see a lot of call for programmers that know Scala or Clojure, or even Groovy (which is not a functional language, but it's in that "java.next" category and its about as incremental a step away from Java that you can make). Let's face it, in today's economy, that's got to be a major consideration! Also, in most of the positions I've held in my career, I'm generally not working on "green field" projects; I'm maintaining existing applications. There's no way I'm going to be able to sneak in Clojure or Scala on my existing project (except for maybe, as was suggested as a first step, unit testing). Sure, those modules written in the other languages can be integrated with the existing Java code and it may not be an issue in the short term, but what percentage of Java developers are going to be able to come in behind me and even recognize the language, much less be able to understand it or maintain it? When someone else raised this very issue during the Scala presentation I attended, the presenter's answer to this seemed to be that he was above working with such programmers so it was a non-issue for him.

I still think it worth learning one (or both) of these languages, even though for the short term at least, I can't see using them for anything other than personal projects. Just wish I knew where to place my bets and place my focus, because there seem to be a LOT of paths to the future.

Sunday, June 28, 2009

Three Displays On My Macbook Pro

I've often heard that you can never be too rich, too thin or have too much monitor real estate. OK, I might have added that last thing myself. I'm definitely in no position to test the first two assertions, but thanks to the USB display adapter I recently purchased for my Macbook Pro I'm better able to test the third.

I purchased my adapter from OWC (Other World Computing) here, but I've since discovered what appears to be the same hardware available from Amazon here for about $20-$30 less. I verified that the one I purchased from OWC matches the model number of the device on Amazon, USB-1612. Here is the manufacturer's product page. It's possible the one on Amazon may only come with Windows drivers, since the product was apparently Windows-only initially. If that's the case you can download OSX drivers here. The CD that came with mine had both Windows and OSX drivers. As of this writing, it appears that Linux is unsupported. I've included a picture to give you an idea of the relative size compared with an iPhone, the handiest reference object I had available.

When I'm working on my Macbook Pro at my desk, I have an Acer 24" monitor running at 1920x1200 attached via DVI. It's a nice, large monitor, but I also have an older Dell 20" widescreen monitor which I like to use in more of a "tallscreen" orientation. The monitor can be rotated 90 degrees which is useful for certain applications (primarily reading ebooks, technical documents or long news articles - but it also comes in handy when reviewing credit card and bank statements online). Of course, the Macbook only has one external display port, so ordinarily there is no way to use both monitors at the same time. This device allows you to add additional displays (up to 4 in OSX, or 6 in Windows) via USB ports. I only tested it under OSX 10.5.7.

So, what's the verdict? Overall, I'm very pleased with it and it meets my needs, but there are some limitations you should be aware of, and my experience hasn't been problem-free.

The initial installation was fairly painless. I installed the OSX drivers using the supplied CD and restarted my Mac. I then connected the device to my USB hub. One nice touch is that the device draws its power over the USB connection, so there's not a separate power adapter to plug in - just the USB cable and the monitor cable (in my case a DVI cable). It comes packaged with a DVI to HDMI adapter as well as a DVI to VGA adapter - I didn't use either of those. As soon as I connected the device the new display was recognized. I just needed to bring up the OSX preference pane to rotate the image 90 degrees to match the orientation of my monitor, and I was in business! Everything was functioning properly and I picked a special wallpaper for my "tallscreen" monitor. But, I had a Safari 4 update pending, so I decided before I did anything else, I would go ahead and apply that update. It required a restart of the system, and that's where my problems began.

After rebooting, the system seemed to recognize the display, but the attached monitor was completely blank. The green light was illuminated on the monitor, indicating that it was receiving a signal, but the display was completely black. I tried unplugging/replugging the device, running "detect displays", and even rebooting again, none of which fixed the problem. After searching online for a bit, the only thing I could find was this link which didn't exactly match my scenario. The troubleshooting FAQ refers to problems with an already functional installation that may occur after applying the OSX 10.5.7 update. I was already running 10.5.7 before I initially installed the device. However, I figured it was possible that the browser update might have updated some system file, so with nothing better to try, I followed the suggestion, which basically involved uninstalling the drivers, rebooting, re-installing the drivers, and rebooting yet again. It was annoying, but it fixed the problem. Not able to leave well enough alone, I decided to reboot again, just to make sure everything was stable. I got the same symptoms - monitor getting a signal but no image being displayed. I did the uninstall driver/reboot system/reinstall driver/reboot system dance again, and once more the display came to life.

At this point I was getting pretty frustrated. Doing this dance every time I need to restart my Mac was not going to be acceptable. I did a little more poking around on my system, and launched the Console app, wherein I found this message repeating over and over:

DisplayLinkManager[739:65c3] Could not establish GA communication 0000044E

Often, I find that if you search for an error string on Google, you can find one or more people who have had the same issue, often with a solution, but in this case I had no such luck. I re-read the FAQ and decided to try that oft-suggested bit of OSX voodoo which is to run the Disk Utility program and repair disk permissions. In all the time I have been running Macs (about 4 years now) I can honestly say that although performing that ritual usually finds some permissions problems and fixes them, I have never had it actually cure the symptom that prompted me to repair permissions in the first place. Apparently this instance was the exception that proves the rule. After repairing permissions, and rebooting the system the display continued working. I rebooted a couple more times just to be sure, and the display came up fine both times, and I have not at any problems since.

What are some limitations of the device? As I mentioned previously, if you want to use this under Linux, as far as I can tell you are currently out of luck. Also, it only supports two resolutions: 1600x1200 or 1680x1050 (which is what I'm running it at - with the image rotated 90 degrees so that I can run it in portrait mode). At least on the Mac, it doesn't support OpenGL acceleration, which means certain things won't run on the display, such as video editing in iMovie. Also, only Intel Macs are supported. One other limitation that I ran into was that Crossover for the Mac doesn't seem to behave well with it. I tried moving applications running under Crossover onto the display, but as soon as I finished dragging the window, OSX became unresponsive. I could still move the mouse pointer around, but I couldn't switch focus to any application (no matter which display it was on), nor could I bring up the system menu or the "Force Quit" dialog. My only recourse was holding down the power button to reboot the system. I encountered this behavior consistently, and could not find any fix or workaround. Annoying, but I don't use Crossover that much, and as long as I remember not to move it to that display, it's not a problem.

After getting the kinks worked out, I'm pretty happy, and it's serving the purpose I had for it. I do wish I had known I could get essentially the same device for $20-$30 cheaper from Amazon. Ah, well -- live and learn. Here's a picture of my three display setup (one of the displays is the built-in display of my Macbook Pro). You may notice the monitor in middle of the picture looks a little screwy - it's actually a composite image I created using an iPhone app called Pano and I'm not particularly skilled in making those images look quite right.