Skip to main content


Showing posts from 2011

Hulu Plus, Netflix, and Other Streaming Video Content on the TouchPad

Disclaimer: This post isn't an outline of a clever hack to get Hulu Plus and Netflix working on the TouchPad. It discusses using the TouchPad in conjunction with an application called PlayOn that runs on Windows. Just wanted to let you know what you'd be reading about so you could bail now if you're not interested in this solution, but if you're not familiar with PlayOn I encourage you to keep reading--it's pretty slick!
One of the major holes in webOS and the HP TouchPad is the lack of video streaming apps such as Hulu Plus and Netflix. Not a problem since you can just go to Hulu and Netflix in your browser, right?
Wrong. Netflix uses Microsoft Silverlight (hopefully not for long) and therefore won't work on the TouchPad, and Hulu for some inexplicable reason actually blocks video from playing in the TouchPad's browser, even though unless I'm missing something it would be perfectly capable of doing so.
So what's a TouchPad-using streaming video jun…

Upgrading the HP TouchPad to webOS 3.0.4

If you follow me over on Google+ you'll know my latest favorite gadget is my HP TouchPad. I absoultely love webOS and think it's the greatest mobile OS on the planet (seriously), and the TouchPad hardware is exceptionally well built and polished. I have numerous tablets now (iPad 1, Kindle Fire, Nook Tablet, and the TouchPad) and the TouchPad is far and away the one that's most enjoyable to use. (In case you're wondering, the Fire would be #2, Nook Tablet #3, and iPad somewhere down in the "why the heck would I ever use that thing" range.)
If like me you were lucky enough to nab one of these beauties before they were all gone, you may find that you're running an old version of webOS and even if you go to System Updates it tells you you're running the latest version. In my case my TouchPad was on version 3.0.0 and it said I had the latest, but my brother (from whom my TouchPad was a gift) said his is stuck at 3.0.2.
While I can't tell you the why …

Setting MySQL to Allow Multiple Statements In a Single Query In JDBC/OpenBD

This came up in a discussion on the OpenBD Google Group today so I figured it was worth a quick blog post.

Depending on what you're doing with MySQL you may be in a situation where you need to run multiple SQL statements separated by a ; as part of a single query. By default this isn't enabled in the JDBC connection with MySQL, but it's easy to enable in your JDBC connection string.

When creating a MySQL datasource in the OpenBD admin, click on the "Advanced Settings" button, and in the "Connection String" box input the following text:

If you're creating the datasource for the first time this will be all you need to do, but if you're adding this to an existing datasource you'll want to bounce OpenBD to make sure the connection pool is cleared out.

To test that the setting change worked, simply write a CFQUERY that contains two statements:
<cfquery name="foo" datasource="foo">

Installing HBO GO and Other Apps Not Available Through Amazon On the Kindle Fire

UPDATE: The following instructions will probably work for other applications but as of today (12/1/2011), Amazon or HBO has apparently disabled the ability to use HBO GO (see comments for more details). I had been using it fine for a week or so but now when I launch it, I get the error "HBO GO is not supported on this device." Lovely.
I've had my Kindle Fire since the day they came out and it's a fantastic device. I couldn't be happier with it.
OK, maybe I could be just a little happier with it. By default you can only install applications from Amazon's own Android app store and while the selection isn't exactly paltry, there are some key applications that aren't available.
One of these is HBO GO, which I'm used to using on my Droid Bionic as well as on my (now mostly unused thanks to the Fire) iPad 1. Even though it's not available in the Amazon app store you can pretty easily install HBO GO withou…

Cisco AnyConnect VPN Client vs. OpenConnect on 64-Bit Linux Mint 12

Last night I decided to replace my Ubuntu 11.10 installation on my System76 Serval Pro with Linux Mint 12. I've used Linux Mint on and off since version 9, and Linux Mint 10 and 11 were my full-time OSes until I ran into some lockup issues with Mint 11 on my System76 Lemur Ultra-Thin, at which point I decided to give Ubuntu 11.10 with Unity a real shot.

Not to get sidetracked on the real topic of this post, but Unity isn't nearly as bad as many make it out to be. After using it for a week I actually started to like it and found myself quite productive with it. That said, since I've also always loved Mint I figured I better kick the tires on their latest release which is now the most popular GNU/Linux distribution, having recently bumped Ubuntu from the top spot.

If you've seen all my previous posts on getting Cisco AnyConnect running on GNU/Linux you'll know that this is an ever-changing series of problems and fixes over the years, but with Ubuntu 11.10 and Cisco …

How to Create a Custom Launcher in Unity on Ubuntu 11.10

One of the first things I always have to do after a fresh install of the latest Ubuntu (or whatever distro is striking my fancy at the time) is create some custom launchers for applications like Eclipse.
Prior to Unity this was done quite easily by editing the menus. In Ubuntu 11.04 with Unity this was no longer an option, so you could right-click on your desktop and select "Create Launcher" and then move the new launcher to ~/.local/share/applications, or there was also a method of creating a .desktop file manually that did the trick.
In Ubuntu 11.10 the right-click menu option for "Create Launcher" was removed (you can read more about why here), so we're really left with no easy way to create custom launchers. I consider myself a gearhead but even I didn't care for the "just launch the binary from the terminal" suggestion by some people in the bug thread.
So in my semi-obsessive reading about all of this last night I came across a metion of a packa…

Installing Cisco AnyConnect on 64-Bit Ubuntu 11.10

Every six months for the past few years I've been posting how to install Cisco AnyConnect on the latest 64-bit releases of Ubuntu and for a couple of cycles Linux Mint since I was using that as my primary OS for a while.
This time around it's finally downright boring, which is a good thing. No more installing 32-bit libraries, creating symlinks to Firefox libraries, etc. etc. you just do the following:

Hit your company's VPN server in a browser and log in with your user name and passcode
Click the AnyConnect link on the left
Click "Start AnyConnect"
This will attempt to install AnyConnect via your browser's Java plugin. If this works, you're done! If this doesn't work (give it at least 60 seconds), read on.

In my case on the two machines on which I attempted this it didn't work. The browser-based install just hung even though I verified I have Java installed and the browser plugin is working.
If you don't have Java installed, however, the browser-bas…

Fix for Empathy AOL IM Login Issues on Ubuntu 11.10

I've installed Ubuntu 11.10 on my two System76 laptops (I have a Lemur and a Serval), and on both machines I noticed while I was configuring Empathy it wouldn't log into AOL IM successfully.
After verifying I wasn't fat-fingering my password I did some poking around and came across a post-install to-do list for Ubuntu 11.10 that fixed the issue for me. You can of course pick and choose which plugins to install, but I suspect just using the latest version did the trick. There were some on-again off-again bugs related to AIM and ICQ logins during 11.10 development.
Full details are in the linked blog post above, but here's the basics:

sudo add-apt-repository ppa:telepathy/ppa
sudo apt-get update && sudo apt-get upgrade
sudo apt-get install empathy

With the new version the AIM login issue immediately went away.

Manually Installing Java Plugin for Firefox on 64-Bit Ubuntu 11.10

Since I always forget how to do this I figured I'd blog it for my own purposes so I don't have to sift through Google every time.
This assumes you have the JDK installed under /opt/java/jdk1.6.0_27 -- adjust accordingly if you have things installed elsewhere or only have the JRE.
Open up a terminal and do this:

cd /usr/lib/mozilla/plugins
sudo ln -s /opt/java/jdk1.6.0_27/jre/lib/amd64/

Then restart Firefox if it's running.
Now to look into doing this for Chrome ...

Revisiting Retrieving Documents Between Two Dates From CouchDB

In a previous post I outlined how I was retrieving documents from CouchDB with a start date property less than the current date, and and end date property greater than the current date. To summarize, in my CouchDB view I created some date/time strings in JavaScript and only emitted documents in the view that met the date criteria.
My previous post got referenced in the CouchBase newsletter, and I'm really glad it did because while I came up with what I thought was a clever solution it was also wrong. (D'OH!)
The issue I didn't consider that some kind commenters on the previous post pointed out is that my approach creates side effects because I'm emitting documents in the view based on information that isn't in the document itself. Specifically since I'm using the current system date/time when the view is created, the documents included in the view will be ones for which the criteria is valid when the view is created.
What this means is that although views get upda…

Retrieving Documents Between Two Dates From CouchDB

I'm working on converting yet another application from using SQL Server to using CouchDB, and this morning I'm working with some announcement documents that are displayed based on their start and end date. There are numerous ways to approach this problem but I thought I'd share what I came up with in case this solution helps others, and also to see if there's maybe another approach I didn't consider.
First, since there is no date datatype in JSON, we've standardized (for better or worse) on storing dates as a string with the format "YYYY/MM/DD HH:MM:SS", e.g. "2011/08/27 09:22:36", so date and time separated by a space, always with leading zeros for single digits, and always using a 24-hour clock. This allows date/time strings to sort properly when they're used as keys, it's easy to split the string using the space if you need either just the date or just the time, and since this application is for my day job the time will always be i…

Fixing BackInTime Snapshot Failures

Although it's really simple to write your own rsync script to do backups on GNU/Linux, I'm a big fan of BackInTime because it's a more sophisticated, snapshot-oriented backup solution (very similar to Apple's Time Machine) as opposed to the blind copy and sync that you'd typically wind up with using a one-line rsync script. The issue is that even when running BackInTime as root there are some directories, symlinks, etc. that it can't copy or certain operations it can't perform, so you wind up with failed snapshot errors. In the past I never really dug into them and just went back to using an rsync script to sync to my Amahi server, but today I decided to spend a bit of time working through the errors since they were exacerbated a bit due to my home directory being encrypted on my new System76 Lemur UltraThin. What makes this process easy is that BackInTime keeps excellent logs of where it's failing, and as opposed to taking the time to investigate why eac…

Migrating Old Blog Posts to Posterous

Quick note to let people know I'm migrating some of my old blog posts to Posterous, so if I accidentally forget to set a couple of dates and they show up as new, resulting in any WTFs, I apologize. I'll try to keep the disruptions to a minimum.

The Firefox 5 Brouhaha: Why Version Numbers Don't Matter, and Why People Who Think They Do Need to Get Over It

Mozilla caused quite a stir in the "enterprise" (whatever that means) crowd recently with their oh-so-bold move of releasing an update to the Firefox web browser and calling it ... holy crap on a cracker ... version 5. Firefox 5 was released only three months after Firefox 4, to the great consternation of people who--judging by the alarmist articles on this subject at any rate--have the uniquely bad combination of lack of IT knowledge, fear of change, and positions of power in IT. To people who are freaked out about this move, I have three words for you:Get over it.Here's the secret you fraidy-cat manager types need to know about version numbers: they're totally arbitrary. They don't imply the things you think they imply. Developers just make them up. No seriously, developers just make them up. Sure, certain loose rules apply that some people follow, but there's no science to any of this. The number of a release is whatever the people involved with the projec…

A Short Missive Concerning SQL Server, Named Instances, and JDBC

Since this seems to come up with some regularity on mailing lists and I happen to be in the midst of a massive SQL Server migration (lucky me) at the moment, I figured I'd set the record straight on this topic once and for all. Named instances in SQL Server are not magic. Like everything else on servers, they run on a port. This named instance nonsense is simply Microsoft's way to get around expecting people to use a port number. (Because as we all know, having to deal with numbered ports is probably the biggest headache anyone in IT has to deal with. Yes, I'm being sarcastic.) Anyway, even though the MS tools would like you to think this is all magic, not only do named instances run on a port, you actually pay a penalty by not referring to the port directly in your connection strings. Why? Because again, there is no magic in IT, and the named instance doesn't mean squat to anything but SQL Server itself. So if you give SQL Server a named instance when trying to connec…

Cisco AnyConnect VPN Client on 64-Bit LinuxMint 11

I've posted before about getting Cisco AnyConnect running on Ubuntu 9.10 and Ubuntu 10.04, but I've since started using LinuxMint as my daily driver and did a clean install of MInt 11 today. Mint is based on Ubuntu so on Mint 10 the previous strategy to get AnyConnect running worked fine, but I had to take a different approach after installing Mint 11. (I suspect it'll be the same issue on Ubuntu 11.04 but I haven't tried it.) In doing a bit of research I came across this link that explains quite correctly that you don't need to actually download and extract Firefox to get this all working, which is what I had been doing previously. The Cisco client (for some stupid reason) expects certain things to be in a /usr/local/firefox directory but you can simply create that directory, download some other files, and then create the appropriate symlinks in /usr/local/firefox to make AnyConnect happy. I also ran into some inexplicable weirdness related to a certificate file i…

String Matching in CouchDB Views

We're in the process of porting an application that has been running on SQL Server over to the fabulous and amazing CouchDB. We were originally under the impression that everyone accessing data from this application in their own code was doing so through our web service, which would have made our job pretty simple since we could swap the guts of the web service methods out and return the same data types to the caller, but upon further investigation we discovered that people had written their own custom queries directly against the database. This alone isn't a big deal but in some cases people were running queries that included LIKE clauses, and since we opted not to install CouchDB-Lucene given both time constraints as well as the fact that the LIKE queries against SQL Server were pretty limited in scope and number, I thought I'd share what we came up with to do string matching in views in CouchDB. This is by no means to suggest you should not use CouchDB-Lucene if you wan…

Very Simple Fix to Enable USB Device Support in VirtualBox on GNU/Linux

I finally got motivated enough last night to look into why I could see my USB devices in my Windows 7 VM but they were all grayed out, and came across the very simple solution: Short answer is add your user to the vboxusers group, log out and log back in, and you can access all your USB drvices in your VM.

cf.Objective() NoSQL BOF

Heads up that on Friday night of cf.Objective() I'll be facilitating a BOF on using NoSQL databases with CFML, so if you're interested in things like CouchDB (my favorite thing on the planet as of late), MongoDB, or any of the numerous others please come to the BOF! All skill levels are welcome so come to learn, come to share what you've done, or come to mock crazy people like myself who think the relational model is the biggest hoax ever perpetrated on the technology world and that we should have been using document-based datastores all along. Yes, that statement is meant to incite you to come to the BOF if you think I'm wrong, but I do believe it to a certain extent. ;-) When I say I'll be facilitating a BOF I mean just that--BOFs are meant to be highly participatory, free-form discussion forums, so while I'm happy to show off what I know about CouchDB, I'd personally love to learn more about some of the other NoSQL databases from people using those, and …

Prerequisites For My cf.Objective() Presentation on Tomcat

Quick note to anyone planning to attend my "Running Multiple CFML Engines on Apache Tomcat" talk at cf.Objective() -- even though this is only a one-hour session, with just a bit of prep work you can easily turn this into a hands-on session since I only have a few slides and it will be mostly demo. You don't have to follow along to get a ton of great info from this session, but if you want to follow along please grab the following ahead of time:

Java (I assume this is already on most attendee's machine and configured properly)
Apache Tomcat
Apache Web Server
Dealer's choice/mix and match: Open BlueDragon, Railo, and Adobe ColdFusion

Some additional notes:

You do NOT need to install Tomcat ahead of time
You SHOULD install Apache ahead of time
If you want to use Adobe CF as one of your engines, you'll want to run the installer ahead of time and for the installation type choose "generate a WAR file" and have that available on your laptop. Note that even if you…

Accessing and Restarting Desktop CouchDB on Ubuntu/Mint

Recent versions of Ubuntu (and Ubuntu-based distros like LinuxMint) ship with Desktop CouchDB to interact with Ubuntu One and store things like replicated bookmarks in Firefox, contacts in Evolution, and some other data. If you want to access Futon (CouchDB's web-based admin tool) for this instance of CouchDB you need to do a bit of hunting, but I found this page on that was very helpful, and I thought I'd document here as well in case I forget this information in the future (which I'm sure I will!).Accessing FutonOpen a terminal and navigate to ~/.local/share/desktop-couch and open couchdb.html in a browser (e.g. firefox couchdb.html), or navigate to file:///.local/share/desktop-couch/couchdb.html in your browser. This takes you to a page that will redirect you to Futon after a few seconds, at which point you can see which port CouchDB is running on and what the admin user name is.If CouchDB Desktop Isn't RunningIn my case CouchDB Desktop wasn't ru…

FTP Issues With FileZilla Server? Check Your Port and Firewall Settings

Quick tip on using FileZilla Server -- I ran into an issue today on a new Windows 2008 server with a cron job written in Java and running on another server not being able to transfer files via FTP. I checked the logs and login, ls, cd, etc. all looked fine but file transfers timed out.
After ruling out some other issues my immediate thought was that it was firewall related, which turned out to be the case. Port 21 was open on the Windows firewall but since no other ports were open, passive FTP couldn't negotiate another port to use for the data connection.
Luckily FileZilla lets you specify a custom port range to use for passive FTP, so once I set that range in FileZilla and opened those ports up on the firewall, all was well. Just go to edit, then settings, and then click "Passive mode settings" to set your custom port range, and open up this same range on the Windows firewall.

Hope that saves someone else some troubleshooting time.

ColdFusion Developer Position in San Diego, CA

See PDF for details. Contact Justin De Gennaro at for more information.

Download this file

ColdFusion Developer Position in Roseville, CA with Telecommute Option

Beginner Coldfusion Developer
Job Type: Full Time
Location: Roseville, CA with telecommuting available
Skills: ColdFusion (8.0)
WebEvents Global is seeking beginner ColdFusion developers to develop and maintain event management web sites, intelligent customer-focused websites, and automated marketing. Successful candidates will have 2-4 years of ColdFusion experience including 1 year of CF8, be excellent problem solvers, fast coders, and have superb and verifiable references.
WebEvents Global is a web-based event management software company headquartered in Roseville, California. We offer custom event management solutions from registration, campaign marketing, scheduling tools, sales automation tools, content management tools, and beyond.
Applicants MUST Have:

2-4+ years of ColdFusion experience preferably with 1+ year of CF8
1-3+ years experience in SQL Server 
Demonstrated and successful project completion 
Experience with web services is preferable 
Exposure to frameworks like Fusebox  

Subversion + Apache Installation and Repository Migration HOWTO

I knew this day would eventually come. Nearly five years after I fired up our current Subversion server, it was time to bid farewell to our trusty Fedora Core 4 physical server and move to a shiny new VM running Ubuntu Server 10.04 LTS. Setting up the original SVN server was my first actual task when I started my current job so it was nice to look back at just how well things had run all this time. I don't think we had a single outage, repository corruption, or any problems whatsoever during that time. Sure, the time may have drifted rather severely since we couldn't ever get that thing talking to an NTP server for whatever reason, but other than that it ran more or less perfectly for nearly five years. What's a few hours among friends anyway?
In fact that box ran so well it was really far off my radar, so I got pretty lazy about doing patches and updates. As of today the uptime on that thing is 1135 days--a little over three years for the math-challenged among us--so hones…

Installing Adobe AIR and Balsamiq Mockups on 64-Bit GNU/Linux

I've been using GNU/Linux as my sole desktop OS for years now, and frankly I don't miss anything whatsoever from other operating systems. This post isn't to have that old debate yet again so I'm just offering this up as a bit of a backdrop for what follows. For 99.999% of what I do I simply don't need another OS, and on the exceedingly rare occasion when I do need to do something in Windows I have a VirtualBox VM I can use, but I'd be surprised if I have to launch my Windows VM more than a few times a year.
Recently I've become rather enamored with Balsamiq Mockups, which is a tool I've know about for a while and even tinkered around with, but for some reason it wasn't until a couple of weeks ago that the real power of Balsamiq hit me in the face. Luckily Balsamiq runs on Adobe AIR so rather than having to fire up a Windows VM to use it, in theory it'll run on GNU/Linux the same as it does on any OS.
For 32-bit systems this is probably true, but I…

Using BLOB Images in Open BlueDragon

I've been helping my friend Brandon a bit today with Open BlueDragon, specifically with manipulating and displaying images that are stored in a database as BLOB data. Not terribly tricky stuff but it is a bit different than how you might deal with this in Adobe ColdFusion so I thought I'd write up a little how to.
In case you want to experiment from the ground up, and this also helps illustrate everything in detail, let's start by creating a database to hold BLOB data. I'll use MySQL, but this works exactly the same (as far as I know anyway) with any database. First, create a new database in MySQL, and then create a files table:

(id int unsigned auto_increment not null primary key,
file longblob not null);

Now we have a basic table with an auto-increment integer ID and our file data as a LONGBLOB. With your database in place, create a datasource in the OpenBD admin console called blobTest and point to this database.
Next let's create a simple file …