Skip to main content


Showing posts from December, 2009

2009 Was a Great Year for Ogg

Now, however, we have an online video technology that anyone is free to use, study, improve, and distribute without needing permission or paying fees. This technology is called Ogg Theora (or just 'Theora'). Some parts of Theora are patented, but the owners of those patents have granted a permanent, irrevocable, royalty-free patent license to everyone. Theora carefully avoids any patents held by traditional patent holders: to get around the ridiculous patent of image storing mentioned above, Theora stores video image information from bottom to top instead of top to bottom!

Recognizing that Theora is a crucial ingredient for the freedom of our internet, Mozilla, Opera and Google have announced support of Theora video for future or current releases of their browsers. This means that millions of users will be able to watch Theora videos using their browser, without the need for extra software. The work of the free software community, with support from Mozilla, Wikipedia and others…

Home Theater PC Project - Phase 2: Decisions

I've been doing a ton of research and experimentation since my last post on this subject, and I came to a bunch of decisions that are a bit far afield from where I started. Ultimately I think I'll wind up with a very cool setup even if it doesn't meet the original Home Theater PC goals. Ultimately I want something that works well and is easy to use. If I were the only one watching TV in the house I'd probably tolerate a ton of rough edges with something like MythTV and potentially XBMC, but since I'm not the only one who watches TV, full-time TV tech support wasn't something I wanted to get into. As I looked at everything involved with a MythTV setup and started thinking about things like channel mappings, remote controls, potential noise issues, not to mention the overall cost involved with a multi-room setup, I started thinking it wasn't a wise road to go down. As a bit of an aside before I get to the punchline, I did get an eyeTV 250 Plus for my Mac Mini…

Returning Java Exception Objects with Open BlueDragon

I'm working on a project that uses a pre-existing Java library to handle payment processing. This is great because it's a heck of a lot of stuff I don't have to write myself, but when payments fail I need to get a code that's contained in an exception object that's thrown in the Java code. This is a problem since given the way the Java code is written, the normal message and detail keys of the CFCATCH struct don't contain the code I need. To get the code I need to call a getCode() method on the Java exception object itself. Open BlueDragon doesn't implement GetException() yet, which in theory lets you get the actual exception object thrown by Java (provided you specify the specific Java object type being thrown), but I figured since the Java class name is contained in the JAVAEXCEPTION key of the CFCATCH struct, it wouldn't be too hard to tell Open BlueDragon to put the actual Java object in that key instead of the class name. It took a bit of hunting b…

Iterate Me: Brian Klaas: Blog: Lessons Learned in Making Many Mach-II Modules Out of Standalone Apps

I'm in the process of converting a bunch of standalone Mach-II apps in to modules inside of a new, monolithic application. It's been a surprisingly smooth process, thanks to the tools that the Mach-II framework gives us to work with. Most of the bumps along the way have been related to bad software design practices in some of the oldest apps that I've created, and continuing, after many years building Web applications, to do dumb things like hardcoding URLs and other strings which will change when converting the app to a module (or moving the app to a different server).

Awesome tips from Brian on Mach-II modules and good practices for building Mach-II apps in general. Thanks for sharing Brian!

Slashdot IT Story | Adobe Flash To Be Top Hacker Target In 2010

"Adobe Systems' Flash and Acrobat Reader products will become the preferred targets for criminal hackers (PDF) in 2010, surpassing Microsoft Office applications, a security vendor predicted this week. 'Cybercriminals have long picked on Microsoft products due to their popularity. In 2010, we anticipate Adobe software, especially Acrobat Reader and Flash, will take the top spot,' security vendor McAfee said in its '2010 Threat Predictions' report.

Um, congratulations? :-)

Home Theater PC Project - Phase 1: Requirements

My TiVo Series 3 finally died. Over the past several weeks it went from being a bit sluggish, to not showing the Now Playing list at all, to occasionally rebooting itself, to finally being in an endless reboot cycle when it's powered on. I attempted to save it with a new hard drive and power supply from, but neither did the trick. The new hard drive didn't get it out of its endless reboot cycle, and with the new power supply it won't power up at all. According to weaKnees the Series 3 TiVos fail quite a bit in comparison to other models, and they've seen cases where a known good power supply is simply rejected by the TiVo. So after throwing $300 in repairs at my Series 3 with no results it's time to give up. I could replace my dead Series 3 with a new TiVo, but as I outlined in a previous post, the world has changed pretty dramatically since TiVo first hit the scene, and for my purposes I'm just not sure TiVo has evolved enough to justify spending …

"Defining the contours of freedom" - Free Software Foundation

Great, great video from Lawrence Lessig about the importance of the free software movement to society and culture as a whole. Lessig also wrote the forward to Richard Stallman's book "Free Software, Free Society" and it's one of the many things that helped me see the big picture where free software is concerned.

Grails 1.2 Released

Grails 1.2 final was released today, and there's tons of great new features as well as numerous under-the-hood improvements that make it a very compelling release. Since I'm relatively new to Grails I'm still wrapping my head around some of the new stuff, but here are some of the more interesting changes in 1.2 from my perspective:
Performance Improvements
Faster is always better of course, so the first thing that caught my eye was the performance improvements in GSP/SiteMesh and the tag library return types (default is now StreamCharBuffer, but tags can return object values too).Environments in Bootstrapper
Not that this was a showstopper in previous versions of grails, but having to use a kludge or do a quick check of the state of your database to see whether or not you should crank out test data seemed a bit wrong since environment awareness is available elsewhere in Grails apps. Now that it's in the bootstrapper too we can do things the "right way."Per-Meth…

Microsoft Word Sales Face U.S. Ban -- InformationWeek

An appeals court on Tuesday ordered Microsoft to stop selling Microsoft Word 2007 and other Office 2007 products by Jan. 11 because the software infringes on a patent held by a Canadian company. The judge also hit Microsoft with a $290 million fine.

Buy MS Office while you can! Or save your money and reclaim your freedom by using instead. :-)

Groovy - UltraEdit Plugin

UltraEdit is a nice little text editor when working on Windows. It is very much suited to handle all kinds of resource files and some little scripts, when starting your IDE just takes too long.

You can get it from

Now that UltraEdit is on Linux (the column select capabilities alone are worth the $50!), I hunted for a Groovy plugin for UltraEdit and it didn't take long. There's a link in this article to an addition to UltraEdit's wordfile, so you copy/paste and UltraEdit is Groovy aware. Nice.

EtherPad Blog: EtherPad Open Source Release

As promised,
we hereby release all the source code to EtherPad.

Our goal with this release is to let the world run their own
etherpad servers so that the functionality can live on even after we
shut down

If you are just interested in running an etherpad server, these
should get you up and running.

Running EtherPad behind a firewall is rather intriguing. Might have to do some experimentation.

Received a Review Copy of Tomcat 6 Developer's Guide

The folks at Packt Publishing contacted me to see if I'd be interested in reviewing their newly published Tomcat 6 Developer's Guide, and being a bit of a Tomcat junkie I jumped at the chance. I downloaded the ebook tonight and I'll be reading it over the next few days, so look for a review soon.

Shalin Says..., Burst of activity in Lucene

To put it very simply, search engines transfer a lot of work from query-time to index-time. The reason this is done, is to speed up queries at the cost of adding documents slower. Until now, Lucene based systems have had problems with dealing with scenarios in which the searchers need to see the changes instantly (think Twitter Search). There exist a variety of tricks and techniques to acheive this even now. However, near real-time search support in Lucene itself is a boon to all those people who have been building and managing such systems because the grunt work will be done by Lucene itself.

I can't wait to see this implemented. I'm in the process of rethinking a big application to use Lucene/Solr instead of hitting a database for searches, and even though this application only gets data updates twice daily, they can be numerous and I can only imagine having near real-time search available will make it that much easier to keep your search indexes up-to-date.

There will not be a beta for Flash Professional CS5 (Adobe Flash Platform Blog)

They are still releasing a beta, only now it'll cost you $1000 to participate....

The above is a comment from Adobe's blog post announcing that contrary to what they said at MAX, there will be no public beta of Flash CS 5. And it's a comment that I think gets straight to the heart of the matter.
I'm not a Flash developer so it's no skin off my back, but I simply can't fathom why any software company would not take advantage of the incredible value a public beta period offers, preferably a fairly lengthy one.
"Get it out the door as quickly as possible" is a very short-sighted attitude, especially when people are paying big bucks for your software, and there's a massive risk of whittling away your users' confidence that is quite damaging in the long term.
I'm not pointing this out to pick on Adobe per se (funny how CFBuilder and Flash are taking completely different approaches on the beta issue), but it's a great example …

Naked Domains in Google App Engine with GoDaddy | Dave Shuck's Blog

I recently set up a new site ( on the Google App Engine running OpenBlueDragon.  By default when you set up a new site on GAE (Google App Engine), you choose an ID for your application, which must be unique on their system as it also serves as the hostname of the URL like this: http://[your ID]   For those that would like to use a different domain name, Google App Engine has mechanisms for doing so.  In the administration panel of your application, you can add a domain and then choose hostnames from that domain that the application should respond to.  However, it makes no provisions for serving the "naked domain". 

Excellent step-by-step by Dave Shuck on how to get "naked domains" (meaning no "www" prefix) up and running on Google App Engine.

Dave Shuck Relaunches on OpenBD for GAE

Around a year or so ago, I inadvertently took offline in a server move.  Considering that it is a very low traffic site that is little more than a scrapbook of hiking pictures and descriptions, there is no active user community to send me nasty messages begging for me to bring it back online.  Finally this past weekend, I spent a bit of time and revived the code base off an old server, moved all the images out to Amazon S3 and brought the site up running under OpenBlueDragon on the Google App Engine.

Another site goes live on OpenBD for Google App Engine--I think we'll be seeing more and more sites like this on OpenBD for GAE as CFML developers discover just how easy it is to leverage their CFML skills and still be able to take advantage of Google App Engine.

H.R. 390: College Football Playoff Act of 2009 (

To prohibit, as an unfair and deceptive act or practice, the promotion, marketing, and advertising of any post-season NCAA Division I football game as a national championship game unless such game is the culmination of a fair and equitable playoff system.

I'm oh so incredibly glad our so-called representatives see fit to waste time on such utter nonsense when the economy's in the crapper and we still don't have national health care. Bravo, morons. Here's hoping anyone anywhere near this loses their next election.

Major Firmware Upgrade, eBook Store for eSlick Reader

New Features in the eSlick 2.0 Build 1130 Firmware Update
The free eSlick 2.0 Build 1130 Firmware Update includes some fantastic new features and has enhanced many of the features from previous firmware updates.
EPUB Support
Foxit eSlick now supports EPUB format, which is an XML-based format for reflowable digital books and publications. Now you can download EPUB eBooks onto your eSlick and the text will automatically display in an optimized format to fit the screen size.

PDB (commonly known as eReader) Support
Foxit eSlick now also supports eReader format, which is widely accepted by several software formats. eReader format is commonly used on mobile devices.

Image Support

Supports viewing image files in GIF, BMP, JPEG, and PNG format.

On-screen Virtual Keyboard

With this on-screen keyboard, you can use your navigation buttons to enter alphanumeric data in any text environment, including password entering and folder naming.
Working with Folders


Capitol Christmas Tree

Always a great sight if you're in DC during the holidays!

Vintage Cold Fusion (yes, with a space) Boxes

Since I know not everyone follows me on and Twitter I wanted to post this here as well. Found these sitting on an abandoned bookshelf in my office in DC. Ah, the memories.

Coding Horror: Version 1 Sucks, But Ship It Anyway

What's important isn't so much the initial state of the software -- in fact, some say if you aren't embarrassed by v1.0 you didn't release it early enough -- but what you do after releasing the software.
Couldn't agree more with this, and lately on some projects I've had to remind myself of this mantra on a daily basis. This is right in line with the "worse is better" principle ( ), and since by nature software developers tend to be perfectionists, it's often difficult to let go, realize it will never be done, and focus on the bare minimum to get the application out the door.
A commenter on this post does have a good point, namely that you shouldn't ship it so early that your customers lose faith. So focus on the bare minimum of features that make the application usable, make sure that small set of features is rock solid, and launch the damn thing! After launch you'll impress y…

Haral's Blog: Java 7 chapter 1: The Virtual Machine

JSR 292: The Da Vinci Machine Project
The JVM should be extended with general support of languages other than Java, and in particular dynamically typed languages. Such language implementers have observed a range of painful aspects of the byte code language, and this projects aims to remove those in a general manner. The noteworthy suggestions is: dynamic invocation, continuations, tail-calls and interface injection. The JSR specifically targets dynamic invocation and hot class modification. Today dynamic languages produces a lot of different options for signatures that all have to be stored in permgen space. This is very inefficient, and one should be able to narrow down these options at runtime.

Since JSR 292 got voted up for Java 7 it will be interesting to see how the CFML engines will take advantage of this. Fingers crossed for a big performance boost when Java 7 comes along!

OpenDNS Blog » Some thoughts on Google DNS

Google launched a DNS service today, almost exactly four years after I started OpenDNS. This comes as no surprise as it was only a matter of time before one of the Internet giants realized the strategic importance of DNS. I’ve received a lot of questions from bloggers, journalists, friends and most importantly, our users. And so I want to share my thoughts on what this means for the recursive DNS space and what it means for OpenDNS.
Must read for people contemplating switching from using their ISP's DNS servers to something else (which I STRONGLY encourage) based on Google's recent announcement.
I've been using OpenDNS almost since its inception and I can't say enough good things about it. The blog post I quoted above does a great job of outlining the importance of DNS, some of the crap ISPs can pull with their DNS servers (some great Security Now! podcasts on that topic as well), and why OpenDNS is a great alternative.
DNS is a key part of your Int…

Cisco AnyConnect VPN Client on 64-Bit Ubuntu 9.10

I've been using vpnc as my VPN client on Ubuntu for quite some time now, but vpnc allows for split tunneling (meaning I'm on the VPN but I can still access my local network), and, well, let's just say some network security folks don't like that. ;-) I looked into disabling split tunneling on vpnc and I didn't find any conclusive answers, so it was time to look for an alternative VPN client for Cisco VPNs. Cisco AnyConnect is a VPN client that can (in theory) be installed from a web browser on any operating system, provided your VPN server is configured to support it. If you want to check, hit your VPN server in a browser. If you see a login screen, log in with your normal VPN credentials and you should be able to install AnyConnect from there. All isn't rosy with this picture on Linux, however. The browser-based install doesn't work (or didn't for me at least), and while you can download a Linux version of the installer, the installer runs fine but the …

eMusic's Best Albums of the Decade

Summing up a decade in 100 albums is a terrifying task. How do you determine which albums make the cut? Do you choose the albums that were the greatest game-changers? Or do you go with the albums that had the deepest personal resonance? Is it about global or individual importance? And which records are most emblematic of our age — an era equally fraught with paranoia, despair, optimism and joy?

Some really awesome stuff in this list, and I'm glad they threw this together because I would have missed some of these releases otherwise.
I disagree with some of the choices, though if I take my own likes/dislikes out of the picture I can perhaps see why they'd make the cut. Pretty monumental task to even come up with this list so in general I think they did pretty well.
#2 should have been #1 though. ;-)

The Truth About IT Consultants | I, Cringely

1) "This can only be accomplished through a large custom development project."
2) "Of course your data is safe."
3) "We'll need a day or two for optimization and debugging."
4) "Yes, we've done this before. There are several companies using this product (or technology). They really like it."
5) "Server consolidation and virtualization will save you money."
6) "Storage consolidation and virtualization will save you money."
7) "The upgrade (or change) will be seamless and will not affect production."
8) "The upgrade (or change) will be transparent to users."
9) "Yes, we tested this thoroughly before installing it."
10) "If you install Tivoli it will solve all your support problems."

An oldie but a goodie. A friend of mine is about to go down this road to hell on a project (and I'm not so sure this road is even paved with good intentions ...), and it's amazing to me that…

MPAA wants to control your TV |

The MPAA is pressuring the FCC for the authority to cripple recording devices using so-called "Selectable Output Control" (SOC).
Basically, SOC would enable Hollywood to actually shut off the video outputs on your cable box, DVR, or other recording device when particular movies or shows come on. When the movie's over, the outputs might turn back on. Your devices would dance to Hollywood's tune.
Most cable boxes and DVRs already include Digital Restrictions Management (DRM) and operate using proprietary software -- both of which we need to work to eliminate. But just because many of these devices already use DRM, that doesn't mean we should let Hollywood and the FCC keep adding more. This new form of control would take even more freedom away from people using those devices, would restrict people using free software like MythTV to watch broadcasts and record them, and would set a dangerous precedent elevating Hollywood's desires over the public's freedom.


Slashdot News Story | Harvard Says Computers Don't Save Hospitals Money

Researchers at Harvard Medical School pored over survey data from more than 4,000 'wired' hospitals and determined that computerization of those facilities not only didn't save them a dime, but the technology didn't improve administrative efficiency either. The study also showed most of the IT systems were aimed at improving efficiency for hospital management — not doctors, nurses, and medical technicians.

This is absolutely criminal. If computers aren't making hospitals more efficient then they're using them wrong, or they have crooked software vendors who are cashing in while not giving hospitals what they actually need.
This is another great opportunity for a big open source project in my opinion.

CFC Function Declarations in Javascript

The last few days I have been working on having the ability of declaring pure Javascript functions and making them available as first class, top-level, citizens in the CFML world.

Setting up a separate CFC can be done using the following:

function myMethod( param1, param2 ) {
return $cf.getTickCount();

Note that you can mix CFSCRIPT, Javascript and CFML in the one CFML/CFC file. Each one can declare a top-level function and you can use whatever language you feel works best for you for that particular method.

From there on in, you can simply declare the CFC as normal and use without any problems.

Great progress being made on the server-side JavaScript in OpenBD! Since JavaScript is the lingua franca of web development, it's going to be great to have it fully integrated into our CFML toolbox.