Skip to content. | Skip to navigation

Personal tools
You are here: Home TBSI Technology Blog

TBSI Technology Blog

Technical articles of interest by the principals and staff of True Blade Systems, Inc.

Feb 26, 2013

Eben Upton on the Raspberry Pi

by J. Robert Burgoyne — last modified Feb 27, 2013 12:40 PM

Technical talk on February 26, 2013 by Eben Upton, inventor of the Raspberry Pi DIY computer, at MakerBar in Hoboken, New Jersey

The people at MakerBar in Hoboken, New Jersey have quite an interesting venue for making projects either alone or with others. There's a classroom and a lab for learning about new technologies, such as 3d printing or working with new materials, and there are many opportunities to do hands-on work, either on one of their open nights, or at one of their scheduled classes.

Eben Upton - 2013-02-26Last night's guest speaker was Eben Upton, inventor of the fascinating DIY computer known as Raspberry Pi.

With the < US$50, credit-card sized Raspberry Pi you can connect a display, keyboard, mouse, load an operating system via an SD Card, and instantly have a working hobbyist computer. Being able to tinker is something that has been absent for some years, as many recent trends have all been toward closed systems that didn't permit tinkering.

Raspberry Pi has already sold 1 million units, an amazing feat for something that's only been available for a year. The all-time best selling hobbyist computer, according to Eben, was the Commodore 64 with about 18 million units sold. Go Eben!

Eben has an educational bent, and his goal is for kids to achieve competency and flourish as programmers, in the same way that one masters a musical instrument, through repetitive practice, in the comfort of one's bedroom. Already there have been many interesting projects on the Raspberry Pi by students < 18 years old, and Eben's hope is that "software-driven performance" will entice many more kids to find out what all the excitement is about.

The hardware platform of the Raspberry Pi is already sufficiently powerful and robust to take on many projects, such as robotics, digital signage, etc. Over time, the hope is that so many people will become Raspberry Pi enthusiasts that its development environment will greatly mature, causing the software to become so good that it can foreground itself against all the various other things that compete for kids' attention these days.

Sep 26, 2012

DIY Weather Stations

by J. Robert Burgoyne — last modified Sep 27, 2012 05:40 PM
Filed Under:

Have you thought about setting up your own weather station and publishing the data on the Internet?

My client and I recently finished the installation of a professional weather station at his residence in East Quogue, New York. I'll write more about the installation later; for now you can access the data, from the link below, and get an idea of what's possible. 

The Burgoyne Weather Station - in East Quogue, New York

Sep 20, 2012

Be Here Now - Jail Those Distracting Smart Phones

by J. Robert Burgoyne — last modified Sep 21, 2012 03:45 PM
Filed Under:

Aspiring inventor Ike Sutton of Brooklyn has a new way to regain the attention of his six kids - he locks their phones in jail.

Remember when people you were casually talking with made eye contact, instead of always looking away at their cell phones? Did you ever feel like taking the offending person's cell phone away for a few minutes, so that you can have a real conversation? Now you can. 

cell-phone-jail.jpgHere's another way to "use technology to solve HR problems" - take your kids' cell phones and lock the phones in a custom made cell phone jail for 15 minutes or more. 

The $20 gadget should be out in time for Christmas, 2012.

Credit to CNN for the referring story

Feb 25, 2012

Backing up Windows computers with dirvish

by Eric Smith — last modified Feb 26, 2012 07:15 PM

We use dirvish to back up our Linux servers and workstations. Until now, it has not been possible to back up Windows computers. That changes with an open source program we wrote.


For many years we have used dirvish to back up our Linux servers in an efficient way. dirvish presents what appear to be full snapshot backups, but they are incremental in both time to create and disk space to store them. dirvish relies heavily on rsync for efficient transfers and hard links for efficient storage. The backup server connects to the machine to be backed up (the target) over ssh for authentication and privacy, then runs rsync on the target to perform the incremental backup.

Problems with Windows and dirvish

It has always been problematic to back up Windows computers with dirvish. There are several problems:

  • Windows has no native ssh server.
  • Windows does not come with an rsync program.
  • Unlike Linux, Windows does not easily allow you to back up files that are open by another process.
Let's look at these one-by-one.

ssh server

There are commercial ssh servers available for Windows. An excellent one that I've used is VShell, by Van Dyke Software. There are no doubt others. However, these are expensive if you want to install them on every target computer you wish to back up. VShell, for example, is $350 with 3 years of updates.

Another option is cygwin. cygwin is a free and open source product that provides many Unix-like utilities, including an ssh server. However, until recently the cygwin ssh server has had a well-known problem where it hangs when using rsync. Fortunately this problem has been fixed. cygwin version 1.7.11-1 does not hang like older versions did.

So now we have a free ssh server we can use.


Once we're already using cygwin's ssh server, it's an obvious choice to use cygwin's rsync program. No problems here.

Backing up open files

The final problem we're left with is what to do with open files on the Windows target computers. For a long time I tried to skip all open files by explicitly listing them in the dirvish configuration file. But some files are just never closed: file accessed by services such as database and long running programs such as email clients would just never get backed up. And there's just no way to list every file that might be opened. What if I'm editing a Word file during a scheduled backup? And by default, dirvish would consider one of these open files as a fatal error and would mark the entire backup as unusable. While you can get around this by editing the source code to dirvish, this is not a very elegant procedure. And you're still left with the fact that these open files are never backed up.

An obvious solution to this is to use the Windows Volume Snapshot Service, VSS. VSS allows you to take a read-only snapshot of an entire drive. Once you have that snapshot, it can be made available under another drive letter. And the best part is that every single file in the snapshot can be read. You'll never get an "in use" error when trying to read the files.

So now we have an internally consistent set of readable files to back up.

Putting it all together

We have all of the pieces we need to use dirvish to back up a Windows target computer. But how to put it together?

It would seem like we could use dirvish's pre-client and post-client hooks to create and tear down the VSS snapshot. These are commands that dirvish will run before and after it runs rsync on the target. Unfortunately that won't work, because while the pre-client hook can create the snapshot, it will be inaccessible once the pre-client hook ends and rsync is executed.

So what we need is a program that looks works just like rsync, but creates a VSS snapshot during the duration of the rsync run.

I thought of modifying the source to rsync, but that seems like an ongoing maintenance problem forever.

Enter tb-rsync-vss

So what I did was write a program to bring together all of the parts: tb-rsync-vss. This is an open source program, licensed under the Apache Software License, Version 2.0. tb-rsync-vss is a native Windows executable that creates a VSS snapshot, maps it to a drive letter (which is an cygwin rsync requirement), and then calls the real rsync program with modified parameters to actually perform the backup. When rsync is complete, tb-rsync-vss cleans up and exits.

As far as the dirvish server is concerned, it's just running a custom version of rsync. As far as rsync knows, it's just running against a new drive (maybe drive "x:" instead of drive "c:"). The specifics of the configuration are covered in the README file.

On the tb-rsync-vss bitbucket page I've provided the source code, a Visual Studio 2010 project file, and pre-built .msi files for the 32- and 64-bit versions of tb-rsync-vss. True Blade is providing these back to the dirvish community as a thank-you for the many years we've used and benefited from dirvish and so many other open source products.

Dec 21, 2011

xen: Running a Fedora 14 DomU under a Fedora 16 Dom0

by Eric Smith — last modified Dec 22, 2011 05:50 PM
Filed Under:

xen is a server virtualization environment. These instructions will get you started, including using boxgrinder to create appliance images.

Starting with Fedora 16, you can again use Fedora as a Dom0 environment for running virtual machines under xen.

Install xen

It's fairly simple to get Fedora 16 set up as the Dom0. Just install Fedora 16 as usual. After the installation is complete and you have rebooted, install xen:

# yum -y install xen

This will install a large number of package dependencies.

After installing xen, I disable selinux. While it's probably possible to get selinux running in the Dom0, for my testing purposes I've not gone through the hassle.

The next step is to configure Fedora 16 to automatically boot into xen. To do that, you must tell grub2 to use xen as the default:

# grub2-set-default "Xen 4.1"

Configure network bridging

Next, you'll want to enable network bridging. This will allow all of your DomU's to act as if they're on the same network as your Dom0. To do so, edit /etc/sysconfig/network-scripts/ifcfg-virbr0 to contain:


And set your primary ethernet interface to use the bridge. For me, the interface is p49p1, so in /etc/sysconfig/network-scripts/ifcfg-p49p1 I have:

HWADDR="01:23:45:67:89:ab"  # actual MAC address here

After rebooting, I see this output from ifconfig (with various values hidden):

lo      link encap:Local Loopback
        inet addr: Mask:
        inet6 addr: ::1/128 Scope:Host
        UP LOOPBACK RUNNING  MTU:16436  Metric:1
        RX packets:0 errors:0 dropped:0 overruns:0 frame:0
        TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
        collisions:0 txqueuelen:0
        RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

p49p1   Link encap:Ethernet HWaddr 01:23:45:67:89:ab
        inet6 addr: xxxx::yyy:zzzz:aaaa:bbb/64 Scope:Link
        RX packets:201 errors:0 dropped:0 overruns:0 frame:0
        TX packets:140 errors:0 dropped:0 overruns:0 carrier:0
        collisions:0 txqueuelen:1000
        RX bytes:25946 (25.3 KiB)  TX bytes:15704 (15.3 KiB)
        Interrupt:16 Memory:fbce0000-fbd00000

virbr0  Link encap:Ethernet  HWaddr 01:23:45:67:89:ab
        inet addr:  Bcast: Mask:
        inet6 addr: xxxx::yyy:zzzz:aaaa:bbb/64 Scope:Link
        RX packets:197 errors:0 dropped:0 overruns:0 frame:0
        TX packets:148 errors:0 dropped:0 overruns:0 carrier:0
        collisions:0 txqueuelen:0
        RX bytes:21884 (21.3 KiB)  TX bytes:16488 (16.1 KiB)

Build the Fedora 14 appliance

The next step is to build and install a Fedora 14 appliance. For this, I use boxgrinder:

# yum -y install rubygem-boxgrinder-build

Then, create a Fedora 14 appliance configuration file named f14.appl:

name: f14-jeos
summary: Just Enough Operating System based on Fedora 14
  name: fedora
  version: 14
      size: 2
  - @core

Run boxgrinder to create the appliance:

# boxgrinder-build f14.appl

boxgrinder will download all of the Fedora packages from the installation mirrors and create a Fedora 14 appliance, ready to install and run.

Install virt-install, which will be used to launch the appliance:

# yum -y install python-virtinst

Launch the appliance

Then run virt-install to launch the appliance:

# virt-install --graphics=none --name=f14 --ram=768 --import \
--disk=build/appliances/i686/fedora/14/f14-jeos/1.0/fedora-plugin/f14-jeos-sda.raw \

I'm installing with --graphics=none, meaning that only a text mode console is supported (no VNC). You should now be connected to the DomU's console. From within the Fedora 14 DomU you will be able to find your appliance's IP address and be able to connect to it via ssh.

Adding additional storage

For my Fedora 14 instance, I wanted to add some additional storage. The easiest way is to create a file in the Dom0 storage, then mount that in the DomU. In the Dom0, create the file to be used as storage. In my case, it's 65GB of space:

# dd if=/dev/zero of=build-f14-repository bs=1G count=65

Still in Dom0, attach the block device to the DomU:

# xm block-attach f14 file:$PWD/build-f14-repository xvdb w

Then switch to the DomU and format the device:

# mkfs.ext4 /dev/xvdb

Finally, mount the device in the Fedora 14 DomU:

# mount /dev/xvdb /mnt
# df -h
Filesystem            Size  Used Avail Use% Mounted on
rootfs                1.9G  604M  1.3G  32% /
udev                  362M  116K  362M   1% /dev
tmpfs                 374M     0  374M   0% /dev/shm
/dev/xvda1            1.9G  604M  1.3G  32% /
udev                  362M  116K  362M   1% /dev
/dev/xvdb              64G  180M   61G   1% /mnt

We've added 61GB of usable space on /mnt.

Jul 08, 2011

Chunlai Yang, Ph.D., Arrested by the FBI

by J. Robert Burgoyne — last modified Jul 09, 2011 01:45 PM

Chunlai Yang, Ph.D., (杨春来) a Naturalized US Citizen, was recently arrested by the FBI for Theft of Trade Secrets from his employer since 2000, the CME Group in Chicago.


From the FBI Press Release: "They discovered that thousands of files had been downloaded to his computer, and some were then copied to removable storage devices, such as thumb drives." 

The CME Group is the largest futures exchange in this country and a key part of the world's financial infrastructure. Chunlai Yang's profile is on LinkedIn where he is listed as a "Sr. System Analyst at CME". Here's one article in Chinese that appears to be about him:

杨春来: 海外侨胞要落地生根 积极融入主流社会

Some of you may remember that in April, 2009 I discussed the case of Yan Zhu, Ph.D., then age 31, of Lodi, NJ -- also known as "Westerly Zhu" -- who was arrested on charges of theft of trade secrets (software). The follow up is that Dr. Zhu was convicted in Federal Court in Trenton of seven counts of wire fraud in April, 2011: 

What I wrote in a followup post is still true: "The FBI is extremely thorough in these kinds of cases and as I pointed out, they probably have the resources of the NSA backing them up with reports of Internet traffic in this particular case. 

The FBI is just like anyone else - they want their credibility to be maintained and respected."  

These are serious matters for anyone involved in IT, and worth discussing, even if you just want to vent your anger toward me. 


May 11, 2011

Using KeePass to store passwords

by Eric Smith — last modified May 12, 2011 07:00 PM
Filed Under:

I'm now using KeePass to store all of my passwords. It also helps me avoid broadcasting private information about myself.

I have at least 100 accounts in my personal and professional life. It's gotten to the point where I just can't remember them all and their associated passwords and other account information. And using a single password everywhere is just a horrible idea. Just one breach at any site stupid enough to store my password in clear text and all of my accounts would be compromised.

So I've started using KeePass to store my passwords. There are two versions of KeePass: I use the 1.x version so I can share my password database among all of my computers: Windows, Linux, and Macs. KeePass stores everything in a database encrypted with a single password. For that password I use a very long, complicated string that includes all of the usual "good things": upper and lower case, numbers, and symbols. But hey, it's the only password I need to remember anymore, so I don't mind!

All of my account passwords are unique and randomly generated, since I never type them anymore. There are some tricks to doing this successfully. Some web sites make random passwords particularly difficult to work with: they disallow long passwords, they don't like some symbols, they require all passwords be a specific length (a truly horrible idea), etc. Some even let you enter long passwords, but then don't let you log in with them. I guess they truncate them at some point, but never tell you about it. But eventually you can figure it out for even the most user-hostile sites.

I also store other account information. I keep vendor phone numbers, account numbers, and answers to security questions. I've decided that I'm never going to give a truthful answer to a security question ever again. My mother's maiden name? For Visa, maybe it's "ptdTpX?mdSY9C". My first pet? For my bank it might be "SMtw*3X8L". They don't care, they just want me to use something that is easy for me to remember. With KeePass, all of these are easy to remember! I believe that eventually every one of my vendors will experience a breach that exposes my private information. The less they know about me, the better.

Of course it's critical that I have good backups of my KeePass database. I use a variety of backup schemes to ensure that I always have at least 5 or 6 copies of the database on geographically diverse machines. More on that another time.

Apr 27, 2011

Skype Video Conferencing Problems? Try Google Chat's Video and Voice Plug-in

by J. Robert Burgoyne — last modified Apr 28, 2011 09:10 PM

I have used Skype for years to have video conferences with people in Asia. For unknown reasons, Skype's video and audio quality have degraded significantly for me in recent months, to the point that it's unusable. I sought out alternatives, and my current solution is Google Chat's video and voice plug-in.

Google Chat's voice and video plug-in does not have the slow video, audio dropout, and dropped call problems I have been recently experiencing with Skype. If you're encountering similar video conferencing problems with Skype, give Google Chat's video and voice plug-in a try. 

Skype, what's going on?

Google Talk Options Screen Capture

Mar 28, 2011

Python: How to tell if a format string references a given variable

by Eric Smith — last modified Mar 29, 2011 09:15 AM
Filed Under:

A friend recently asked how I would determine if a given variable was used in a format string. Here's my solution.

Python 2.6 and greater support str.format(), also known as PEP-3101 Advanced String Formatting. A friend asked me how, given a string to be formatted, he could tell if a variable was refernced by that string and would be expanded.

As he pointed out, this is easy enough if you're using Python 3.2 and have access to str.format_map(). You'd just write a special dict that would remember what keys have been accessed. But before Python 3.2, you're stuck with no good answer.

Given that I wrote the implementation of str.format(), I thought I'd take a crack at this.

My solution was to use string.Formatter. This is a little-known (and even less used) class that exposes the internals of str.format(), but all wrapped up in a Python class with a number of overridable methods. Here was my first attempt:

import string

class Formatter(string.Formatter):
    def __init__(self):
        self.used = set()
    def get_value(self, key, args, kwargs):
        return ''

def is_used(var, format_string):
    formatter = Formatter()
    return var in formatter.used

Given that, here's how you use it:

>>> is_used('foo', '{foo}')
>>> is_used('foo1', '{foo}')
>>> is_used('foo', '{{foo}}')

However, there's a problem. If you have a format specifier that doesn't make sense for a string, you'll get an exception:

>>> is_used('date', '{date:%Y-%m-%d}')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 3, in is_used
  File "C:\Python26\lib\", line 543, in format
    return self.vformat(format_string, args, kwargs)
  File "C:\Python26\lib\", line 547, in vformat
    result = self._vformat(format_string, args, kwargs, used_args, 2)
  File "C:\Python26\lib\", line 580, in _vformat
    result.append(self.format_field(obj, format_spec))
  File "C:\Python26\lib\", line 597, in format_field
    return format(value, format_spec)
ValueError: Invalid conversion specification

My solution was to add another class that ignores any format specifier:

import string

class AnyFormatSpec:
    def __format__(self, fmt):
        return ''

class Formatter(string.Formatter):
    def __init__(self):
        self.used = set()
    def get_value(self, key, args, kwargs):
        return AnyFormatSpec()

def is_used(var, format_string):
    formatter = Formatter()
    return var in formatter.used

Now we can check for any variable, with any format specifier:

>>> is_used('date', '{date:%Y-%m-%d}')
>>> is_used('pi', '{pi:.12f}')
>>> is_used('pi', '{pie}')

Oct 19, 2010

Arduino rocks!

by Eric Smith — last modified Oct 20, 2010 02:45 PM
Filed Under:

I recently went to an event where Arduino microcontrollers were mentioned, so I thought I'd try them out.

Arduino is an open source hardware and software platform, built around the Atmel AVR family of microcontrollers. These are very tiny computers by today's standards. They're only 8 bits wide, instead of the 64 bits of most new Intel servers and workstations. They only run at about 16 kilohertz instead of 1+ gigahertz. They only have about 32 kilobytes of permanent storage, instead of the multi-gigabyte disk drives on the machine you're probably reading this on. And finally, they contain only 2 kilobytes of RAM, approximate 1 millionth of the RAM standard in any laptop sold today.

But they're cheap, tiny, run well on a few AA batteries, and are well supported by the "maker" community. This is a large group of people who build their own projects, often hardware and software. Make magazine is devoted to this community.

The event I attended was at HacDC, which is a great space to get help with any sort of project you might be interested in. They have a couple of very impressive homemade 3-D printers, even!

What am I going to do with my Arduino? I'm not so sure yet. I bought enough sensors to build a simple alarm system, and I'm interesting in controlling my Arduino with a standard infra-red remote control. I might also use it to build a wireless mesh network. This project is mostly an excuse to solder some circuits and get by to my electrical engineering roots. I'll create small blog entries here if I do anything interesting.

I bought my Arduino, sensors, motors and a few tools from Adafruit Industries. There are literally hundreds of sites that sell and support Arduino and AVR. I like Adafruit because the woman that runs it has many great tutorials and helpful blog posts.

Aug 07, 2010

How To Produce Blu Ray Discs On A Standard DVD +R Drive

by J. Robert Burgoyne — last modified Aug 08, 2010 06:40 PM

Shorter length DIY videos can be successfully burned to DVD +R media, at Blu Ray levels of resolution (1920x1080), using a standard DVD +R drive. This article explains how I was able to do it.

I use the Adobe Creative Suite 4 Production Premium Edition software products to produce videos. My video camera is a Canon Vixia HFS100 and I incorporate various digital media from other vendors into my videos. This is how I was able to burn a Blu Ray Disc on my DVD +R drive. 

  1. In Premiere Pro, make your workspace 1920x1080 and create your video. 
  2. Export Your Project as a .f4v file, 1920x1080. I used a target VBR of 35Mbps. FYI, that is a lot of data. The length of my video was 3:05.  
  3. The Adobe Media Encoder will then produce your .f4v file. 
  4. In Adobe Encore, create a new project using the .f4v file you just created. 
  5. In Encore, render to a Blu Ray .iso file. This process crashed my Adobe Encore repeatedly, so I finally rebooted and without any other programs running, Encore was able to complete the job. The resultant .iso file was 591MB. That means the effective data rate is > 3MB/s. That is a lot of data - and that's why Blu Ray is worthy. 
  6. Using CDBurnerXP, a free program that can burn optical media from .iso files, I burned the .iso file to a DVD +R disc.
  7. The resultant disc plays correctly in my LG BD550 Blu Ray player. For some reason there is a green screen pause at the start of my video that lasts about 2 seconds. More experimentation is needed to see what's causing the problem. Otherwise the video quality is outstanding - very impressive. 

Jun 27, 2010

Adobe Flash Update Automatically Installs McAfee Security Scan Plus

by J. Robert Burgoyne — last modified Jun 28, 2010 02:00 PM

The Adobe updater periodically phones home and checks for software updates. The most recent Flash update also installs, by default, McAfee Security Scan Plus.

For some reason, Adobe decided to permit McAfee to piggyback McAfee Security Scan Plus onto the most recent Flash update. Unless the user clears a checkbox during the Flash update, McAfee Security Scan Plus will be automatically installed by Adobe's updater software. Some readers may recall that in April, 2010, an errant McAfee anti-virus program caused thousands of corporate computers to spontaneously reboot. I would guess that anyone affected by that outage would prefer NOT to have this program automatically installed.

We understand the vagaries of software, and that computer systems do fail and break. Accordingly, we try to be fully transparent about our own technical problems, including providing a real-time link to the status of our servers.

We would prefer if the Security Scan Plus installation was NOT selected by default. Perhaps knowing that some consumers would be searching for how to uninstall McAfee Security Scan Plus, McAfee provides a web page in their Corporate KnowledgeBase titled "Unwanted McAfee Security Scan Plus popup windows" dated April 9, 2010.


May 05, 2010

Verizon FiOS disables SMTP to port 25

by Eric Smith — last modified May 06, 2010 08:30 PM
Filed Under:

This caused trouble for some of our clients, read below for the workarounds.

Today Verizon reconfigured residential FiOS in the Washington DC area to block TCP port 25 to non-Verizon servers. They claim this is for network security reasons, and I understand that this change will ultimately be made to the nationwide FiOS network.

SMTP interception: Not a new issue

For a long time we've recommended to our clients that they use port 1025 for sending email to our servers. Our servers listen to this port in addition to port 25. The main reason we recommend this is that many ISPs, in particular hotels, redirect port 25 to their own email servers. We definitely do not want our email to traverse these servers!

For those clients who have already switched to port 1025, today's action by Verizon was a non-event. For other clients (and indeed my own computers at home!) outbound email was broken until the clients were reconfigured.

Problems with Apple

Switching to port 1025 worked well for our clients using Thunderbird, but Apple Mail presented a unique problem. Old Apple Mail clients (2.1.4) worked, but for versions 3.1 and 4.2 the port setting would not survive a reboot. Fortunately Apple Mail tries multiple ports: 25, 465, and 587. So by adding port 465 to the list of ports we were already listening to, these Apple Mail clients started working without any reconfiguration.

Feb 06, 2010

50 Foot HDMI Cables - Do they work?

by J. Robert Burgoyne — last modified Feb 07, 2010 02:32 PM
Filed Under:

You want to use your PC to output images and video to your big TV. The distance from your PC to TV is > 30 feet, so you need to use a 50 foot HDMI cable. Some articles and comments point out that when using such a long cable, there are image defects, video noise, sparkles, etc. on the TV. Other articles say it all works perfectly. Does it work or not? Why? Read more to learn the answer.

The Quick Answer

A 50 foot cable is fine, but not every output device can work correctly with such a long HDMI cable. The devices that work correctly output their content over the long cable and the TV renders the content perfectly. The devices that don't work correctly are unusable - the image they render on the TV is not acceptable.

For an unusable device, it's not clear how long a cable can be before the output becomes unusable, but 50 feet is clearly too long.

The Detailed Answer

My PC has two completely different devices that can output HDMI:

  1. An MSI R4550 Video Card - link
  2. A Blackmagicdesign Intensity Pro Card - manufacturer's link

I wanted to output video that I create to my 42" LG TV and to use the TV as an external monitor. The distance from my PC to the TV is long, so I needed a 50 foot HDMI cable. There are expensive cables and cheap cables. Amazon sells a 50 foot HDMI cable for $21 including shipping, so I bought it. 

The MSI R4550 is unable to use the 50 foot HDMI cable successfully. The images it renders on the TV are full of video static, video noise, sparkles, etc. The HDMI audio works OK. I tried making a few adjustments but no matter what the TV image was unacceptable. I'm not sure if the TV could be damaged under these circumstances, so I unplugged the cable ASAP.

The Intensity Pro renders its content perfectly over the 50 foot HDMI cable! Video and photos are stunning and there are no video artifacts or defects. The HDMI audio is fine. Using the Intensity Pro as the content source, I don't see how a more expensive HDMI cable would give me better output on the TV.

Using the MSI R4550 and Intensity Pro as a Video Card with HDMI Output

Since the MSI R4550 is a standard video card, its HDMI output can be setup and configured with the standard Windows tools. However even though the MSI R4550 has 3 interfaces: HDMI, DVI, and VGA, and 1GB of memory, it can only use 2 out of 3 of the interfaces at a time. So for me, with a dual-monitor setup, even if the MSI R4550 worked with the long HDMI cable, it would still be unacceptable because I would have to give up one of my desktop monitors to use the TV as a monitor. What I do like about the MSI R4550 is that it cost < $50 and it doesn't have a fan, so it doesn't add any ambient noise.

The Intensity Pro is an HDMI video capture and output device. It's output capabilities are not the same as a video card - you can not control the Intensity Pro with the standard Windows display setup tools. This is because the Intensity Pro renders its output only through special plugins for Adobe Photoshop and Premiere Pro. You can't just look at an image or video on your HDMI TV without first starting up one of these programs and opening the image or video. On the plus side, the dual-monitors continue to work independently of the Intensity Pro's output.

Additional Thoughts and Questions

I don't know if an expensive 50 foot HDMI cable would work properly with my MSI R4550. Long HDMI cables can cost $300 or more and I'm not interested in paying more for a cable, since I now know that any display problems which result from using long HDMI cables are the fault of the output device, not the cable.

I would still like to be able to find a video card that does the following:

  1. Works with a 50 foot HDMI cable output.
  2. Is able to drive 3 or 4 output devices simultaneously, including a single HDMI output, without needing to use a dual-video card setup, and still being able to use standard Windows display setup tools.

If you have experience with such a video card, please contact me and let me know - thanks!

Jan 29, 2010

Using rsync with an Amazon EC2 Fedora 8 image

by Eric Smith — last modified Jan 30, 2010 07:10 AM

Amazon provides a number of Fedora 8 images. Unfortunately the provided kernels cause a problem with rsync. Find out how to resolve the problem.

We've recently started investigating Amazon EC2 for some of our computing needs. So far our progress has been excellent. I've been focusing on using the Amazon-supplied Fedora 8 (F8) images, in particular ami-48aa4921, although the problem I describe here applies to all of the F8 AMIs that Amazon provides.

One significant roadblock has been a problem with rsync. In particular, we use the excellent dirvish for our online backups. Unfortunately, Amazon uses the 2.6.21 kernel in its F8 images and this version does not support the lutimes system call. The version of rsync that comes with F8 uses lutimes to set the modification time on directories. lutimes isn't available until the 2.6.22 kernels. For more information on the issue with rsync and lutimes, see the rsync bug entry.

The symptom is errors in the dirvish rsync_error log files of the form:

rsync: failed to set times on "<directory-name>": Function not implemented (38)

Dirvish sees these as fatal errors and marks the images as failed. This prevents dirvish from performing its incremental backups.

Because rsync does not have a runtime switch to ignore lutimes, the easiest way to solve this is to produce a version of rsync that doesn't use the call at all. Unfortunately rsync does not have an autoconf switch to turn off lutimes, so I had to patch and rebuild. The change is simple, here's the diff I use:

--- rsync-2.6.9/        2010-01-29 15:37:35.000000000 -0500
+++ rsync-2.6.9/    2010-01-29 15:38:07.000000000 -0500
@@ -528,7 +528,7 @@
 AC_CHECK_FUNCS(waitpid wait4 getcwd strdup chown chmod lchmod mknod mkfifo \
-    fchmod fstat ftruncate strchr readlink link utime utimes lutimes strftime \
+    fchmod fstat ftruncate strchr readlink link utime utimes strftime \
     memmove lchown vsnprintf snprintf vasprintf asprintf setsid glob strpbrk \
     strlcat strlcpy strtol mallinfo getgroups setgroups geteuid getegid \
     setlocale setmode open64 lseek64 mkstemp64 mtrace va_copy __va_copy \

I created a new RPM for rsync. Here's the diff for the .spec file:

--- rsync.spec.orig     2008-04-09 10:36:56.000000000 -0400
+++ rsync.spec  2010-01-29 22:21:13.000000000 -0500
@@ -1,7 +1,7 @@
 Summary: A program for synchronizing files over a network.
 Name: rsync
 Version: 2.6.9
-Release: 5%{?dist}
+Release: 5%{?dist}.trueblade.0
 Group: Applications/Internet
 # TAG: for pre versions use
@@ -10,6 +10,7 @@
 Patch1: rsync-2.6.9-acl-xattr-delete-bug.patch
 Patch2: rsync-2.6.9-hlink-segv.patch
 Patch3: rsync-3.0.1-xattr-alloc.diff
+Patch4: rsync-2.6.9-disable-lutimes.patch
 BuildRequires: libacl-devel, libattr-devel, autoconf, make, gcc, popt-devel
 Prefix: %{_prefix}
 BuildRoot: /var/tmp/%{name}-root
@@ -33,6 +34,7 @@
 %patch1 -p1 -b .acl_xattrs_bug
 %patch2 -p1 -b .hlink_segv
 %patch3 -p1 -b .xattr-alloc
+%patch4 -p1 -b .lutimes
 rm -fr autom4te.cache
@@ -62,6 +64,10 @@
+* Fri Jan 29 2010 Eric V. Smith <> 2.6.9-5.fc8.trueblade.0
+- Added patch4 to remove lutimes, since the EC2 kernel in ami-48aa4921 does
+  not support it.
 * Tue Apr  8 2008 Simo Sorce <> 2.6.9-5.fc8
 - Security release: 

Once I had the new RPM, I signed it and added it to our local RPM repository. Because it has a newer version than the one supplied with F8, it will automatically be picked up by "yum update".

The only remaining complication is that the AMI I'm using supplies its own copy of rsync in /usr/local/bin, in addition to the one supplied by default in /usr/bin. I'm not sure why Amazon did this, because the /usr/local/bin version has the same problem as the /usr/bin one. The /usr/local/bin version does not come from an RPM, so I just delete it using our automated server configuration tool. The files to delete are:


Once the new RPM updates rsync and the unneeded /usr/local files are deleted, rsync and dirvish are again working correctly.

I'd rather solve this problem by upgrading the kernel to 2.6.22 or newer, but upgrading the kernel is a non-trivial task with AWS. I'd rather let Amazon handle that issue and instead focus on using the provided images. This way we can more easily upgrade when Amazon produces newer AMIs.

For a number of other approaches (but with fewer specifics), see this thread.

Jan 19, 2010

A Superb, Low-Noise, Inexpensive Headset for PC Use

by J. Robert Burgoyne — last modified Jan 20, 2010 12:40 AM
Filed Under:

Are you disappointed with the audio quality of analog PC headsets? I'm quite picky about sound quality and always looking for something better. I've used many different PC headsets over the years, and today I have a new favorite headset for audio clarity — and it's only $35!


Recently I read an article that advocated using USB headsets (not analog) for improved audio clarity and lower background noise levels during Skype calls, WebEx, recording audio directly to the PC, etc. The idea makes sense — it's difficult to remove all the electrical white noise generated by a PC if you use an analog microphone, so use a USB based headphone instead to improve the audio quality and reduce noise. 

My headset search brought me to the Plantronics MX500i headset, currently ~$35 from A photo of the headset and a photo of its USB interface are shown below. 

As is True Blade's custom, we first bought a single headset for testing. My partner Eric verified that the headset was good and had clear audio. I then bought my own MX500i and it arrived today. 

Once I set up my MX500i tonight, I promptly made a Skype call to Asia (from New York City) and it was the clearest PC based audio I've ever experienced. The sound was really that good. 

This headset's design is a bit unusual, with the bulk of the headset resting under the ear, not on top of your ear. That seems odd, but so be it. I can't say it's the most comfortable headset I've ever used, but as of now, I own a new headset with the clearest PC based audio I've ever experienced. Recommended. 

Bravo, Plantronics and NewEgg!

Photos of the Plantronics MX500i USB Headset and its USB Adapter

Jan 05, 2010

How To Properly Implement Pop-Up (Interstitial) Webpages in Plone

by J. Robert Burgoyne — last modified Jan 06, 2010 06:00 PM
Filed Under:

True Blade Systems is the founder of the Plone New York City Users group. We meet monthly to discuss and present on topics of interest to the Plone community.


The January, 2010 meetup will be about implementing interstitial web pages in Plone.

Interstitial web pages are web pages that display prior to anticipated content. Common usages are:

* Agreement to a Website's Terms of Service
* Disclaimers
* Advertisements or Special Offers or Information
* Capturing User Information

In addition, website login pages and introductory pages which precede and explain subsequent content are other suitable uses for interstitial web pages.

At the January, 2010 PloneNYC meetup, Eric V. Smith and J. Robert Burgoyne will explain the path we chose for implementing interstitial pages in Plone using jquery. jquery is the de facto javascript library for AJAX applications and according to Eric Smith: "I think it's worth spending a few hours with it [jquery]."

For a terrific example of an interstitial web page that uses jquery, see this website:

We plan to host the meeting in our office in the Graybar Building and we will also deliver the presentation online via WebEx, for those who cannot attend but would still like to learn the information.

If you will attend in person, please RSVP now.

If you plan to attend via WebEx, please Contact Us and let us know you need the WebEx credentials for the meeting. Online attendance is limited to 20 participants.

Read more about interstitial webpages on Wikipedia:

2010-01-20 — Here's a link to Eric Smith's presentation.


Dec 12, 2009

Thomas Friedman on DIY Filmmaking with Online Resources

by J. Robert Burgoyne — last modified Dec 13, 2009 10:20 AM
Filed Under:

Mr. Friedman's Dec. 13, 2009 New York Times article includes references to numerous vendors whose services assist the DIY filmmaker / videographer with a tight budget. The vendor list is replicated and augmented in our article.


We were instructed years ago that one of our most important tasks as business owners was to develop and nurture a competent set of vendors. 

Thomas Friedman's article generously shares a list of the vendors his friend, Ken Greer of Greer & Associates in Minneapolis, Minnesota, recently used while producing a video. Since we're also a small business producing our own videos, it seems worthwhile to take a deeper look at the vendor list and offer our own suggestions as well. 


Service or Product Vendor Name
and Website
Online File Sharing When working with team members in different locations, it's necessary to have a service that permits everyone on the team to have simultaneous access to all the files required to complete a project. That way you're not emailing documents back and forth and accumulating multiple versions of the same file. appears to fill this role quite well. We use Google Documents from time to time for similar reasons, but Google Docs is primarily used to share documents and spreadsheets - not all types of files such as .JPGs or .MP3 files.

Of course for security, capacity, speed or other reasons you may need or want your own managed, in-house server. This is a service True Blade offers. 

Stock / Royalty Free Photos iStockphoto There are many vendors who offer "stock" or "royalty-free" photos, where for a fee, you purchase the rights to use their photos in your creative work. Mr. Greer apparently had good results with iStockphoto so I'll pass the referral along here.

Doing a Google search for "stock photos" or "royalty-free photos" will bring up a listing of dozens of competing vendors. 

Voice Over Talent This is an interesting service that connects voice talents with people who want and need to pay for the voice talent. Mr. Greer notes that using substantially reduced his overall costs. 

I'll note that when dealing with people, it's best to have an organized system for keeping track of said people. True Blade recently hired someone and to manage the application process for the 80+ applications received, we used an in-house developed series of web forms connected to to directly post the applicants' data to our database. By using our own database, we now have saved all the applicants' data in our own database for future use. See more about our experiences with below. 

Stock / Royalty Free Music AudioJungle Similar to the need for royalty-free photos, you will also need "stock" or "royalty-free" music at some point. is one such vendor. Again, Mr. Greer notes the cost reduction from using AudioJungle. 

We've used a variety of vendors for royalty-free music but recently settled on Digital Juice, primarily because of the high quality of their products and their holistic approach to filmmaking. What we especially like about Digital Juice is that they have tried to offer nearly every product a filmmaker needs, including royalty-free music, photos, and special effects. They also offer free software that lets you manage all of their "assets". 

If you still want to find more royalty-free music vendors, a Google search for "royalty-free music" will bring up dozens of choices. 

People Management True Blade recommends:
Perhaps for reasons of space Mr. Friedman neglected to mention how Mr. Greer keeps track of all the disparate people working on his film project.

But the more you depend on people and resources in remote locations to work collaboratively on a project, the more you need an online database to keep track of everyone and to log and report upon their activities, tasks, goals, and deadlines. We use to accomplish this role. I've also seen people make good use of Google Spreadsheets for the same purpose, but once you want to start connecting tasks to people, you need a relational database - not a spreadsheet. 


We tip our hat to Mr. Friedman and Mr. Greer - thanks for inspiring us to write about our own filmmaking experiences.

Dec 10, 2009

Android Gains Traction in the Investment Press

by J. Robert Burgoyne — last modified Dec 11, 2009 01:55 PM
Filed Under:

Robert V. Green of today published a well thought out article on how and why Android could seriously erode the Windows monopoly.


I was encouraged to see that Motorola recently decided to drop Windows Mobile from their future cell phone offerings to focus on Android. 

Now Robert V. Green of the well-respected investor website writes in an article published today that he believes Android could seriously erode the Windows monopoly over time. 

Based on our own experiences using Android on the HTC G1, we'd say there's a long way to go before Android replaces Windows on the desktop, but it's nice to see the investment press taking notice. 

Power Outage at on 2009-12-11

by J. Robert Burgoyne — last modified Dec 11, 2009 01:00 PM
Filed Under:

True Blade's servers at's DCA2 facility in Tysons Corner, Virginia were not accessible for about 45 minutes this morning.


Apparently the main power failed at's DCA2 facility, and though the switchover to backup power occurred, some of's router equipment did not properly receive power from the backup source. 

Thus, our servers never powered down or rebooted, but they were not accessible until all power was restored. More information is available here

As a result we thought it would be a good idea to create a Twitter account: truebladeStatus so that we can quickly inform our clients and partners of any technical problems. 

Follow the technical status of True Blade's services on Twitter at

Document Actions