eddorre

TV Video Resolutions Explained

January 09, 2007 — 0 Comments

Just thought that I would drop a little link in here while I have a second to post. Jeff Croft recently wrote an excellent article on TV video resolutions. This is by far the best explanation of television resolutions I’ve ever seen – bar none.

If you’re still wondering what the difference between 720p, 1080i and 1080p are, you need to visit this site.

Decision Paralysis

January 30, 2007 — 2 Comments

I’m a self-confessed perfectionist. I’m not sure when it happened but I think that the crucible that we know of as “high school” had something to do with it. Being a perfectionist has served me well since then.

It’s made me tenacious in finding out the “why” of things, whether they be networking issues, programming issues, or a simple as making a good homemade Balsamic Vinaigrette.

However, perfectionism does come with its downside. Well, at least for me it does. The downside is what I call Decision Paralysis. Generally stated, Decision Paralysis can be defined as the inability to make a decision when there are too many choices.

Usually when this happens I try to investigate every possible outcome or dig into the details of every detail and eventually I become overwhelmed and I go play video games or do something to slack off.

There are many different forms of this. For example, this blog. There are many, many articles that I’ve wanted to write, but instead of, as Nike suggests – Just Doing It – I put if off because the article has to be just right for me to post it. No errors, no inconsistencies. It just has to be perfect. Therefore nothing gets done (except for video game playing).

Here’s another example. My home email server, which has been affectionately referred to as the “copier” by my friend Robert. It took men stronger and beefier than me to get it from one place to another the last time that I moved.

If this server was a Playboy Playmate, it would have been a centerfold back in the ’70s. Curvaceous and busty in all the right places; not a skinny, little waif like Mac Mini. This thing has some meat on its bones.

Made of all steel and weighing in at ~80 lbs, it’s at least 2′×2′×2′ and expels more heat than a Habanero Pepper. Anyway, I’m starting to ramble.

I’ve decided to retire the buxom server and bring in a smaller, more lightweight server. Here’s the conundrum. The old server had Exchange Server 2003 but I had considered installing an open source email program on the new server, but which version? There’s Sendmail, Qmail, Postfix, and countless other versions. Of course I’ll want it to have all the bells and whistles in it which means even more choices. Do I want Courier, UW IMAP, Cyrus, Dovecot as my IMAP service?

If that’s not enough there are the particulars of making sure that the email that I’ve been accruing over the last 4-6 years makes it to the new service. Boy, that buxom server isn’t starting to look so bad anymore.

Decision Paralysis can affect people that aren’t traditionally perfectionists as well. The masterful Ilya Grigorik tackles this phenomenon in his post The Non-Paradox of Choice.

The article, which has thorough analysis of this behavior, eventually boils down to this: Weigh as many choices as you can, make your choice and be happy with it. If we continue to believe that there is something better than our current choice then we won’t be happy with it.

Naturally, Ilya presents it in a much more elegant fashion, so I hope you’ll take the time out to read his whole article.

What’s the lesson with all of this? Sometimes you just have to make a choice, take a path, and start on that task without being paralyzed with all the options before you.

OpenID Going Primetime?

February 06, 2007 — 0 Comments

There’s been a lot of talk about OpenID recently. Today, there was an announcement that Microsoft is going to work and collaborate with the OpenID community ( specifically JanRain, Sxip, and VeriSign).

OpenID is a way of maintaining an online identity through a centralized system. Simply put, instead of having to create accounts for every site that requires authentication, you just provide your OpenID credentials.

A picture is worth a thousands words, so it’s best to see OpenID in action. Simon Willison does just that with this screencast.

Exchange and Postfix

February 13, 2007 — 0 Comments

As I alluded to in a previous post, I’m going to replace my Exchange Server with the open source MTA Postfix. However, since I’m so very green at Postfix, I wanted to make sure that I had all my ducks in a row before deploying it.

So here is where the conundrum takes place. I want to have both the Exchange Server working while I’m testing the Postfix server. I have only one public IP address and my router is forwarding connections on port 25 (the default port for SMTP) to the Exchange Server. Because of this the Postfix server, can’t listen for incoming email.

It’s still possible to solve this problem, though. What’s the solution?

The solution is namespace sharing. For this to work, you’ll need two domains registered by a domain registry. Using your domain registry’s DNS management tool, point the MX records for both domains to the public IP address. So for example, I have the MX records for eddorre.com and phxindesign.com pointing to the same public IP address.

I want email that is destined for eddorre.com to go to the Exchange Server and email that is destined for phxindesign.com to go to the Postfix server.

Using namespace sharing, you have the Exchange Server accept mail for the phxindesign.com domain and then it forwards it onto the Postfix server beside it (beside it means logically, not physically). So in essence, both the Exchange Server and the Postfix server are sharing the phxindesign.com namespace/domain.

This is nothing new nor miraculous but it’s the first time that I’ve set this up. Microsoft has a Knowledge Base article with instructions on how this can be done with an Exchange 2000 or 2003 Server.

I should note that I did make some modifications to the instructions. I found it cleaner not to modify the Default Recipient Policy. Instead, I created a different Recipient Policy for the shared domain.

Also, the instructions say to check the option for “This Exchange Organization is responsible for all mail delivery to this address”. I found that this creates NDR when attempting to send email to an account in the shared namespace.

Now I can continue to use the Exchange Server while testing the Postfix server in an Internet environment.

Enthusiasm

March 02, 2007 — 0 Comments
  • Tagged with:
  • zen

I was listening to a the Agile Toolkit Podcast where Dave Thomas of Pragmatic Programmers was interviewed. The interview goes through various topics from Erlang, monoculture, passion, and more. During the conversation, Dave makes this great quote:

Look at the enthusiasm with which kids do things and say to yourself, well I was once like that. Why can’t I be like that again, you know? And I think that’s the thing to look for; is it’s such a shame that you get to the point where you lose your naiveté, where you lose your enthusiasm, you lose your ability to be passionate about stuff because you’re just too busy. And the reality is that you only get one shot at it, you know? So, why not explore and make your life a bit more exciting. I’m really big now on this idea that developers have to find – everybody – has to find things that they’re passionate about and just do it.

Hadouken!

April 17, 2007 — 0 Comments
  • Tagged with:

Capcom and I go way back. When I say way back, I mean in the good ol’ days with the original arcade version of Ghosts and Goblins (circa 1985). Throughout the years, I’ve played Megaman, Bionic Commando, Resident Evil and others. However, none of these games captured my attention (and my wallet) more than Street Fighter did.

Today, I found out that Capcom is going to release two Street Fighter games to XBLA later this year. Super Street Figther II Turbo HD Remix and Super Puzzle Fighter II Turbo are going to be given a full makeover by the people at UDON studios. All the characters, the character select screens, and the backgrounds are going do be redone pixel-for-pixel.

This is pretty exciting, I loved both of these games and spent countless hours playing each of them. It looks like I’m about to go in for round 3 once these games are released. Oh yeah, this means that I finally have to get off my butt and get an XBOX 360. Now, I wonder if they make an arcade like controller – I could never play Street Fighter on a game pad very well.

For more information, head on over to this article on Joystiq.com.

The Warhawk Flies

April 17, 2007 — 0 Comments

This weekend, after copious amounts of reading, preparing, rigorous testing, and plenty of cursing, I decided that I was prepared enough to replace the 75 lb steel server that was playing the role of my Exchange Server.

The new system (codenamed warhawk) is faster, smaller, and a whole lot quieter but above and beyond it’s also running on a completely different platform. Gone are the days of Exchange Server on Windows – this new system is running Debian Etch (now stable), Postfix, Cyrus IMAP with a dose of SpamAssassin and Razor for good measure.

All in all, I think it went pretty well. I did have a little problem migrating some of my mailboxes over to the new server, but once I found what the issue was it’s been smooth sailing ever since.

Two things saved my hide during the whole process. First off, The Book of Postfix is an invaluable resource for understanding everything that there is to know about Postfix. I don’t think I would have even attempted this project without this book at my side. The second thing is documentation; my own. During testing, I wrote down every little command that I ran to make the server run. Without this, things would have easily been hopeless.

I’m pretty happy with the end result. Postfix runs like a dream as an MTA and the multitude of anti-spam features are a breath of fresh air. I’m amazed at how much spam I stop at SMTP time” without it ever hitting my inbox.

What spam does make it through gets whacked by the tag-team of SpamAssassin and Vipul’s Razor. SpamAssassin neatly appends the string “SPAM” to the existing subject line, wraps up the message in an attachment and then attaches it to a new report email detailing why it marked it as spam.

Remote Network Access

April 22, 2007 — 0 Comments

After completing my previous project (read The Warhawk Flies), I embarked on my next project; remote access to my network.

Previously, I was using Windows 2000’s RRAS to create a PPTP VPN and it served me well for years.

Eventually, all good things come to an end and so it was with that VPN server. Windows 2000 is already in extended support with Microsoft and soon it won’t be supported at all. Seeing the writing on the wall, I decided that this was the time to retire it and move onto something else.

I decided to set my sights on OpenVPN, a free, open-source “”Secure Sockets Layer">SSL" based VPN.

Instead PPTP or IPSec, OpenVPN makes use of public key cryptography (you know the same thing that your bank uses to secure your transactions over the web) via the already established OpenSSL libraries to encrypt the data that is being sent to and from the remote host and the VPN server.

I’m in the final testing phases of the implementation and what I’ve seen isn’t encouraging. Using Debian Linux as my server, installing and configuring OpenVPN was simpler than I thought.

The initial connection to the server was simpler than I thought too. Unfortunately, this initial connection only allows me to communicate to the server without being able to communicate to the machines behind it. In order to do that, I instruct the server to “push” some static routes to the remote machine.

This should work much like my old PPTP implementation did (read How to Setup a PPTP Encrypted Wireless Network). I’m not sure what causes it, but as soon as the server instructs the client to add the static routes to its routing table, the log starts to fill up with error messages.

The error message reads: “write UDPv4 [ ]: No buffer space available (code=55)”

More disturbing than the log filling with errors is the performance of my client machine (MacBook 1.83 Intel Core 2 Duo with 1 GB of memory using Tunnelblick as the OpenVPN client) after the errors start appearing.

After 30 seconds to a minute, the CPU will start to go haywire and the fans will turn on to try to prevent the CPU from overheating. My normally cool CPU, which runs at ~50 degrees celsisus (122 degrees F), will jump to the ~78 degree celsius (172 degress F!!) range. I haven’t stood around to see what happens if I let things run. Usually when I hit this point, I usually just reboot the Macbook (stopping the Tunneblick process didn’t seem to do anything).

The ultimate test comes tomorrow when I attempt to connect to the server from outside my own network. We’ll see what happens.

Remote Network Access – Part II

April 24, 2007 — 0 Comments

Things are looking up on the OpenVPN front. I’ve successfully connect both my MacBook and my Vista machine to it from a remote network.

I also understand why my MacBook started to overheat. More on that at the end of the post.

A normal PPTP VPN works by assigning your computer an IP address on the remote LAN.

OpenVPN has two modes of operation; brigding mode and routing mode. Bridging mode works exactly like a standard PPTP VPN server. It assigns an IP address from the remote LAN to a virtual TUN adapter.

Routing mode is very different. Using routing mode, the server assigns a private, non-routable address to a virtual TAP adapter on both the client machine and the server machine. This address is not on the private network that the server resides on.

For example, let’s say that your server has an IP address of 192.168.1.2. Using your SOHO router you forward port 1194 (UDP) to the VPN server.

The TAP adapter created on the server, using the default configuration, would receive the IP address of 10.8.0.1 and the client machine would receive the address of 10.8.0.5.

At this time, a private tunnel has been created and you can communicate with the server and only the server. In order to participate on the local remote LAN (192.168.1.0/24) you have to alter the routing table on the client machine.

OpenVPN can alter the routing table for you by including in the client config file. What this does is route all information that is destined for the 192.168.1.0/24 network through the virtual TAP adapter (10.8.0.5).

If this wasn’t enough, you still can’t communicate to the remote LAN. You have to setup IP Forwarding on the OpenVPN server and setup a static route on the SOHO router that routes anything on 10.8.0.0/24 through 10.8.0.1.

Whew. Understandably, bridging mode is the easiest of the two. After this has been completed, you should be able to access machines on the remote LAN.

I haven’t really explained why my laptop was freaking out. I had an idea, but I didn’t confirm it until yesterday.

To simulate coming in from a remote network, I was using my MacBook wirelessly. My wireless network is behind its own router that is behind my SOHO router (see diagram of network).

The short of it is that in my client configuration, I was initially connecting to the OpenVPN server at 192.168.1.8 but then when the server pushed the routing information, that said to send all information destined to 192.168.1.0/24 down the VPN tunnel.

I essentially create a huge network loop. My poor MacBook never had a chance.

I can make it work the way the old configuration did, I just have to switch from routing mode to bridging mode.

Babylon 5

May 01, 2007 — 0 Comments

Babylon 5 - The Lost Tales Babylon 5, like any good book, needs to be revisited every once and a while. With this in mind, I’ve been dying to re-immerse myself in the B5 universe for about a year and my girlfriend gave me the perfect excuse . . . she’d never seen it.

While adding season 4, using a custom built interface to Amazon Web Services, to my “What I’m Watching List” I noticed something titled Babylon 5 – The Lost Tales with some packaging that I had never seen.

I thought that this might be a recompilation of some movies or interviews with some of the cast and crew about the B5 universe, but it’s not. It’s actually new material.

This is pretty exciting stuff. First new Babylon 5 material in years! The release date is set for July 31st 2007.

SSMS Windows Authentication and VPN

May 02, 2007 — 0 Comments

SSMS with Windows Authentication is problematic when using it in conjunction with a VPN. SSMS only uses the primary domain login (the local computer) and not the remote domain login (your authentication credentials from the VPN) to try to login. Because of this, you get the dreaded error “Login failed for user ‘(null)’. Reason: Not associated with a trusted SQL Server connection.”

This wasn’t a problem with the old Query Analyzer because it would automatically detect the right username and password to use even if you were connected to a VPN.

There are two ways around this.

  1. In Windows XP, SHIFT right-click on the program and select Run As. Enter in your username and password for the remote domain.
  2. Vista is a bit trickier since you can only select Run As Administrator. So I wrote a simple script that uses the command line runas program to work around it. The script appears below.

I’ve titled the script runassql.cmd.

runas /netonly /user:%1 “C:\Program Files\Microsoft SQL Server\90\Tools\Binn\VSShell\Common7\IDE\SqlWb.exe -S %2 -E -nosplash”

Usage is: runassql.cmd DOMAIN\username SERVERNAME.

Once you run the script, you’ll be asked for your password and then it should work.

Starcraft 2

May 19, 2007 — 0 Comments

<img src=“http://us.media.blizzard.com/starcraft2/images/wallpapers/wall3/wall3-thumb.jpg” alt=“alt=”Starcraft 2 Logo" style=“float:right” />I love Starcraft. My friends and I used to play this game late into the night on countless occasions. I was just about to hit the sack to get some shut eye for the second day of RailsConf 2007 and I decided to pop into the RailsConf Twitter page (I can’t believe that I’m using Twitter) to see if there was any new happenings.

And boy was there! It took nine years, but finally Starcraft 2 is coming out! You can check out a CG announcement trailer on youtube video link or out can check out some screen captures screenshots link.

Update

Here are some more vids:

Of course you can see more at the Starcraft 2 official site.

Akismet Ruby on Rails Plugin

July 10, 2007 — 0 Comments

I’m re-doing my blog engine. I’m focusing on refactoring old crufty code as well as expanding my knowledge of Ruby on Rails.

So far everything is on track and I should be done with it soon. One of the things that I wanted to focus on was the use of modules and plugins. Last time, I was using my own code for accessing the Akismet web service. This time around, I downloaded the ror-akismet plugin and I’m extending my comments class using the built in downloaded methods.

However there seemed to be a bug in the works. Every time that I included the declaration “include Akismet” into my comments controller, all of the other methods would break.

I started tearing out bits of my code and then the modules’ code and no matter what I did, everything would go to hell when I added the include declaration.

It turns out that Rails (1.2.3) seemed to be freaking out because the plugin directory that was downloaded was called ror-akismet.

Once I changed it to ror_akismet, everything worked fine.

Houseblogging

August 27, 2007 — 0 Comments

houseIt seems I’ve been remiss in my blogging duties. I’ve had a lot to blog about but somehow I never seemed to sit down and blog about it. Now that most of our commitments are done and over with for the summer, I’ve decided to sit down and get to it. So over the next few days, I’m going to hammer out some posts.

First off, and I’m sure most of you already know this, but Dear GF and I bought a house last December. It’s a 3 bedroom, 2 1/2 bath house with an office (read: man-room).

We love it. If you want more photos, see the Flickr set.

Dogblogging

August 27, 2007 — 4 Comments

DoggiesI’ll be truthful, my last dog owning experience was a disaster. The puppy was given to me at the worst possible time in my life. I was working two jobs at the time and I lived in a 1 bedroom 500 sq ft apartment.

Add to that, the puppy was a Border Collie/Lab mix. Probably the smartest dog that I have ever seen in real life, but those type of dogs need full time jobs with full time owners.

You can see where this takes a bad turn. Basically, my life consisted of the following:

  • Leaving for work in the morning
  • Coming home to pick up poop and pee and to let the dog out to stretch its legs
  • Rushing to my other job
  • Rushing back home to let the dog out, eat dinner, rinse, lather and repeat.

One can understand why I refer to those days as “The Dark Times.” I eventually had to give the dog away. It wasn’t fair to both the dog and I. It broke my heart (I loved the little pup) but I had to do it.

That was years ago. After that incident, I swore that I would never put myself or a animal in that position again.

When Dear GF suggested that we get some dogs, I nearly died from the flashback. I imagined our brand new house being torn to shreds and the lovely odor of doggy bodily fluids filling the air. I resisted.

I resisted for months, but eventually Dear GF wore down my defenses and she got me to agree to “just look at some dogs.” It always starts out by just “looking at dogs” and the next thing you know you’re taking two of them home with you.

Needless to say, that night, we took home two [Australian] Silky Terriers. I have to admit, I wouldn’t have it any other way.

You can see more doggy photos on the Flickr set.

Webmail for Linux

September 02, 2007 — 0 Comments

Ever since I got rid of Exchange Server as my email server I’ve been sans webmail client.

For a time, this didn’t bother me. I’ve been able to read my email remotely using IMAP (although that’s not really secure) but sending email remotely was an issue. To overcome this, I setup OpenVPN to securely connect to my network (and therefore my email server) at home.

Eventually, I set up the same OpenVPN connection for Dear GF on her work computer so that she could read email and send it as well.

While this worked, it was clunky. To complicate matters, Dear GF got another job at another company where installing the OpenVPN client is out of the question.

So it was time that I started looking at webmail clients for Linux. I had two in mind. Squirrelmail and Roundcube.

I loaded up Debian on a virtual machine on my Mac (using Parallels) and gave Squirrelmail a shot. The install is easy. Install a web server (I used Apache2), PHP, and then run the command “aptitude install squirrelmail” and it’s installed (well you do have to configure Apache2 to point to squirrelmail, but I digress).

The beauty of this is that it’s a Debian Stable supported package and that means that any security vulnerabilites that are found in the future are automatically back-ported to the stable package. In short, you don’t have to worry about security as long as you are installing the updates from Debian.

The client is also very stable and works like a charm but it’s very, very mid-1990s web application. This was before people started caring about <abbr title=User Interface">UI, design, and before AJAX was even invented. I could use it, but I wouldn’t like it. With that, Squirrelmail was out.

So I took a look at RoundCube. At first, I was a little hesitant about it because it requires more than just a web server and the software itself. It requires a database server (either MySQL, Postgres, or SQLite) and in addition to that, it’s not a Debian Stable supported package. You can’t just install it using aptitude and you have to pay attention to security updates and apply them separately. I was having my doubts about it.

Eventually, I decided to test it out and install it into another virtual machine. The install is definitely more complicated that Squirrelmail, but if you’ve installed software on Linux before (without automated tools) then it’s really not that difficult.

Here are the steps that I followed (from a clean Debian install):

Installing Necessary Software to Support Roundcube

Note: I’ll assume that your IMAP server and MTA are on another machine or they have been already installed properly.

  • Remove Apache 1.2 if installed
    • aptitude purge apache
  • Install Apache 2
    • aptitude install apache2
  • Install MySQL Server (5)
    • aptitude install mysql-server-5.0
  • Install PHP5
    • aptitude install php5
  • Install php5-mysql
    • aptitude install php5-mysql (this isn’t in the docs, but without this, I could never connect to the database)

Installing Roundcube

  • Create a “roundcube” directory at /var/www/
  • Download roundcube stable from their website. I downloaded the tar file
  • Unpack the contents of the folder to /var/www/roundcube
  • Remove the .dist extensions from the files in /var/www/roundcube
  • Create a database called roundcube in MySQL
    • CREATE DATABASE roundcubemail DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
    • GRANT ALL PRIVILEGES ON roundcubemail.* to roundcube@localhost INDENTIFIED BY ‘[password]’; (obviously you’ll want to supply a good, secure password to that user)
  • Import SQL script to create database tables
    • mysql roundcubemail < /var/www/roundcube/SQL/mysql5.initial.sql

Setting up Apache

Since this will be accessed over the Internet, I want to use SSL instead of plain old HTTP.

  • Create an self-signed SSL certificate
    • openssl req $@ – new -x509 [number of days] -nodes -out [path to file ] -keyout [path to file] (note: This requires OpenSSL to be installed (aptitude install openssl))
  • Have Apache listen on port 443 instead of port 80
    • Edit /etc/apache2/ports.conf and replace “Listen 80” with “Listen 443”
  • Enable SSL Support in Apache
    • a2enmod ssl
    • /etc/init.d/apache2 force-reload
    • /etc/init.d/apache2 restart

Configuring Apache website for SSL support

In your Apache web site config, you’ll want to have these values listed (in addition to the rest of your config):

  • SSLEngine on
  • SSLCertificateFile [path to file] (use the same [path to file] as when you used to generate the SSL certificate

Configuring Roundcube

  • Point Roundcube to the database
    • In the file /var/www/roundcube/config/db.inc.php change the database connection value:
      • Example: $rcmail_config[‘db_dsnw’] = ‘mysql://roundcube:[password]@localhost/roundcubemail’;

You’ll also want to setup your mail server options in the main config file (/var/www/roundcube/main.inc.php), but these are self explanatory, so I won’t detail them.

With that, you should have a valid working RoundCube install that’s available over HTTPS.

RoundCube isn’t perfect, but it’s still being actively developed and it addresses my needs. It’s gonna work for me (and Dear GF).

Linux to Xbox 360 Audio and Video Streaming

September 04, 2007 — 0 Comments

I’ve been wanting to build a file server that would centralize all of my media files so that I could play them from anywhere on my home network. In the old days, I would have picked a version of Windows Server as the Operating System for the PC, but I’ve been steadily moving forward with plans to go Windows free and that wouldn’t have fit in the plans.

Since I’ve standardized all of my other servers on Debian Linux, I decided that I would do the same for the new file server as well. During the time that I was buying components for the new PC, I bought an Xbox 360 Elite to go with our new HDTV (Sharp Aquos 46").

Shortly after, I found out that you could stream audio and video to the Xbox using XP or Vista. “Well, damn”, I thought to myself. “I might have to go with Windows after all.” However, one look at the price of Windows Vista or Windows Server changed my mind. I started researching alternatives that would work on Linux.

It turns out that all you need is software that provides UPnP media devices (which the Xbox is) with information on available multimedia files and there are plenty to choose from.

Xboxmediacenter.com has a list of both commercial and free offerings on their site under the entry of UPnP Sharing.

After a bit of research and some trial time, I decided on TwonkyVision’s TwonkyMedia software. While the software is not free, at 29.95 € (euros) it’s something that is palatable to my financial tastes.

The DLNA certified software runs on Mac, Windows, Linux. It also supports a large number of media formats and it’s easy to install on Linux. In addition to that, it comes with a web-based administration console making a snap to add your media.

There are some issues that I’ve experienced. First, it doesn’t seem to work in a routed environment. I think that this might be more of an issue with the UPnP protocol than the software itself though.

I have also encountered some buggyness streaming music to the Xbox. Songs appear to keep playing but no sound comes out and eventually (if left to its own devices) the Xbox will start periodically making a horrible buzzing sound. With that being said, I haven’t ascertained if that’s related to the Xbox itself, my wireless network dropping the stream or the actual TwonkyMedia software.

I did make one modification that seems to have alleviated the issue. In the web-based console, I changed the buffer size from 16384 (the default value) to 96000.

Overall, I’m pretty pleased with the software and I’d recommend it to anyone that is looking for a low-cost, Linux based UPnP server.

Gone in a Flash

September 10, 2007 — 2 Comments

Summer time is almost coming to an end. I’m not sure if I can remember when it started and now it’s already ending. You could say that it’s gone in a flash.

Speaking of flash, Sci-Fi channel’s new remake, Flash Gordon, is rumored to have gotten the axe. It’s not surprising considering that the show has been universally panned by fans and critics alike.

I was originally going to write a review on how horrible this show is, but when I read DBCooper’s review, I knew that I had nothing else to add.

Price Hiding

September 10, 2007 — 0 Comments

Content is king; especially on the web. Without meaningful content your site fails at its primary objective; to give your users information. With this in mind, I’m still shocked to see some companies that break this cardinal rule by “price hiding.”

The art of price hiding usually consists of replacing the actual price of an item with something that reads “Call for Price” or a web form that contacts their sales department. I’ve seen this pervasively on software companies’ websites and I’ve even seen this at a local gym.

I’m not sure how these shenanigans are justified when putting together a web presence. Look, if you’re too embarassed to put your pricing up on your website and you’re relying on the jockeying of your sales department to get your product sold, then something is terribly wrong.

Anyone that is serious, really serious about your product or service can easily handle the price. Those that aren’t will run for the hills screaming and that’s fine because they weren’t going to buy or use your service anyway.

I’ve demoed more software than I care to admit to. I’ve had significant input (if not the sole input) to buying decisions that cost thousands, tens of thousands and even hundreds of thousands of dollars. If your website hides the price, I’ll assume that your company is hiding something and I’ll immediately move on.

The solution is simple, be open and honest with your potential customers. Give them as much information as possible on your website to empower them to make informed buying decisions.

Good Ol’ Cheney

September 11, 2007 — 0 Comments

Cheney/Satan '08

I was sitting in traffic on my way home and I noticed the bumper sticker. I’m don’t usually get a chuckle out of bumper stickers but I thought that this was pretty clever (and probably not that far off from the truth).

You can get that sticker and more by visiting this site.

The iPhone Ringtone Debacle

September 13, 2007 — 3 Comments

I’ve always been confused by the whole ringtone business. The notion of paying $2.50 or more for a 15-30 snippet of song, which you may already own, is absurd.

Last week, Apple threw their hat into the ringtones extortion racket with the release of iTunes 7.4.

In order to get ringtones onto your iPhone (from iTunes) you have to first buy the original song and then on top of that you have to pay for the ringtone for an additional 99 cents. In addition to these restrictions, not all the songs from iTunes are available for ringtone download and probably worst of all, if you want to create a second ringtone using a different part of the same song for which you’ve already paid for you have to pay again.

Rather than regurgitate what’s already been written on the Internet regarding this subject, I’ll point you to John Gruber’s complete treatise on the this subject in his article The Ringtones Racket_racket.

The entire article is brilliant but one of the best parts is:

The distinction between ringtones and songs is an artificial marketing construct. It is a misconception, albeit a widely held one, that there is any foundation in copyright law for this, i.e. that an honest consumer is obligated to pay for ringtones separately from “regular” songs for some legal reason. Not so. Copyright attorney Nilay Patel dispelled this notion last week in a piece at Engadget. Patel points out that, oddly enough, even the RIAA agrees:

Well, the RIAA wanted to be able to distribute ringtones of its artists without having to pay them big money to do so (surprised?), and it won a decision last year before the Copyright Office saying that ringtones weren’t “derivative works”, meaning they didn’t infringe on the copyright of the songwriter.

So if you have the right to play a song, you have the right to use it as a ringtone on your phone. There’s no reason to feel one iota of guilt about using tools like MakeiPhoneRingtone or iToner.

Digital Music Archive

September 15, 2007 — 2 Comments

Now that I have a Linux file server with Samba up and running, I’ve decided to tackle the next project; ripping my 500+ CDs and putting them in a digital archive. I honestly don’t know how many I actually have, but I think it’s somewhere to close to 500.

I had two goals when I started the project. First and foremost, I was tired of not have all my music at the tips of my fingers when I was either at my computer or downstairs. Second, was to liberate my office from the space that two huge CD racks were taking up.

I’m not going to sell them like some people do when they digitize their music, but I fully intend on boxing them all up (maybe with the exception of a few display CDs) and putting them in storage.

It’s certainly a time consuming task and not something that you can do in a weekend but I know the end goal will be worth it. I can now finally see the end of the tunnel. I’ve just completed CD number 376. Only 130 or so to go…

Digital Music Archive Completed

September 23, 2007 — 0 Comments

I’ve finally finished ripping my CDs to my file server. I finished yesterday afternoon which makes my estimation of twelve days spot on. The final count: 537 CDs ripped and approximately 56 GB of music, but that’s not all of my CDs. So what gives?

Well, there are three CDs that are missing, meaning that I have the cases but I can’t find the CDs. I’m sure that they are around here somewhere because I recall seeing them recently. So I’m sure that they will turn up. Then there are 17 that were damaged or destroyed during The Dark Times. Unfortunately, I’ll have to replace these. So I’m done for now.

Now that I have everything ripped to my file server, I did the prudent thing and copied all of the music to my external backup drive just in case the main drive of the file server fails.

Removing Old Rails Session Files

September 23, 2007 — 0 Comments

I’m sure that this is elementary for all of the *nix experts out there but I recently discovered this and thought that I would share. Ruby on Rails, by default, holds session information on disk in [application root]/tmp/sessions/ and unfortunately they aren’t purged automatically. Even for small sites, the number if session files can quickly grow out of control. For large sites, it can bring an application server to its knees by filling up the disk.

The “best practice” for Rails sites is to use the database to keep track of sessions using following commands:

  • ruby script/generate session_migration
  • rake db:migrate

Then uncomment the line in the environment.rb file that reads: config.action_controller.session_store = :active_record_store

If you’ve completed the above steps, then your sessions should now be stored in the database but that doesn’t remove the session files from disk. If you’ve been running with sessions on disk for a while, the command, rm /[application root/tmp/sessions/ruby_sess.* will fail with the error “Argument list too long”. If this happens, you can delete the files by running the following command:

find /[application root]/tmp/sessions/ -name ‘ruby_sess.*’ | xargs rm

I found this little gem of information at ducea.com. The comments have other commands that you can run to delete mass files if necessary.

Wowie Zowie, Amazon!

September 25, 2007 — 2 Comments
  • Tagged with:

The ever adept Mac and technology blogger, John Gruber, has published an article titled The Amazon MP3 Store and Amazon MP3 Downloader. In the article, he gives the store and the software a complete, thorough review but the short and sweet of it is that Amazon has just unveiled their new Amazon MP3 store.

The store (url: www.amazonmp3.com/), has over 2 million songs in its library and has a selection of 180,000 artists and over 20,000 labels. Most individual songs are priced between 89 and 99 cents. Entire albums are marked between $5.99 and $9.99.

None of this is really noteworthy. Apple’s iTunes has more artists, labels, and songs and is priced similarly. The standout feature of Amazon’s store is the fact that ALL of their songs are completely DRM free without an additional cost. That’s right, no DRM whatsoever. Use it on any device you want, anytime.

This could be the first real contender that iTunes has ever seen.

The War – No Place for Children

October 01, 2007 — 0 Comments

I watched 6 hours of Ken Burns’ The War on PBS this past week. The documentary focuses on the effects of American towns during World War II; specifically Sacramento (California), Mobile (Alabama), Waterbury (Connecticut), and Luverne (Minnesota).

Using in depth interviews with residents of the towns and soldiers from the town, the documentary brings the war, which is a huge conflict in losses and scope to a more personal level. It’s gripping and exhausting at the same time, especially after doing a marathon of 6 hours and not taking a break. I almost feel that one needs to watch it all (all 14.5 hours of it) in one sitting to get the full effect of the series. By being fully immersed in these people’s lives and not taking a break you start associating the length of the movie with the length of the war. By the time that the soldiers are exhausted from fighting as the war draws to and end you will be too.

In one the episdoes, I heard a quote that I absolutely love. During the constant shelling at Anzio, a soldier exclamied, “God help us! Come yourself, don’t send Jesus. This is no place for children.”

Ta-da List Widget Password Fix

October 22, 2007 — 0 Comments

A few months ago, I started looking for a to do list manager for my Mac. My requirements were few: It needed to be mobile (I could access it from anywhere), and it needed to be free.

I could have very well built my own web application to do this, but I didn’t want another project on my plate. With that in mind, I settled on 37Signals’ Ta-da List. It’s easy to use and it’s free. Most importantly, since it’s web based, it’s completely mobile. However, the web based feature is a two-edged sword.

It’s mobile, but I’m tied to a web browser every time I want to run the application. Sometimes, I just want to open a widget and see what tasks I have left to do for what projects.

Enter the Ta-Da List widget for Mac OS X. The software allows you to get and post information to the Ta-Da List web application without launching your browser. Just what I needed. Except it didn’t work.

I would login using the web application and it would work fine but when I tried to login using the widget, I would get an authentication error. Unfortunately, the widget (like most widgets) don’t have any debugging functionality built into it so I couldn’t tell why my authentication information was being rejected.

Last night, I was determined to solve this issue. I fired up tcpdump (tcpdump -i en1 -vvv -n -s 0 -w ~/Desktop/DumpFile.dmp) and then logged into tadalist.com using the browser. Once I logged in successfully, I stopped the packet capture.

I then fired off another tcpdump (same command as before with the exception of the file name: (DumpFile2.dmp)) to analyze what the Ta-da List widget was sending back and forth.

I found that the difference between the two was the way that the widget was sending the password to the server. With the web application, the password was URL Encoded so that it properly translated symbols for web use. With the widget, they weren’t. Since my password has has symbols in it, this was making the authentication check fail (numbers and letters don’t need to be translated).

Luckily, the Ta-da List widget isn’t a compiled application and most of the code is in Javascript files that you can freely access and modify.

The code for the widget is stored in /Users/[your login name]/Library/Widgets/Ta-Da Lists.wdgt/scripts/. If you want to view the files in widget, right click on the Ta-Da Lists icon and select Show Package Contents.

The file that needs to be fixed is tada.js. I URL encoded the password right
before it’s sent to the server with this line:

conn.connect(url, "POST", "username="+getUsername()+"&password="+escape(getPassword()), loggedIn);

But you can encode it directly in the getPassword function like so:

function getPassword() { return escape(widget.preferenceForKey("password")); }

After, I made this change, the widget started working correctly. According to the tcpdumps, the password being sent in it’s URL encoded form to the server (as one would imagine).

Leopard: A Face Only a Mother Could Love – Part I

November 15, 2007 — 0 Comments

The first time that I used Mac OS X Tiger, I was in love. Coming from the Windows XP and Vista world, the interface seemed like such a breath of fresh air. Yes, it does have eye candy elements but it didn’t seem gaudy.

Last night, I finally sat down to install Leopard on my iMac. Honestly, I haven’t had much play time on it so I don’t know all of the ins and outs of the Operating System but after a day of using it my initial impression is, “Wow, it’s just so…ugly.”

Whereas Tiger seemed timeless and classy, Leopard looks cheap and forgettable. Here are some of the problem spots:

The Dock

Although the “glass” reflective surface doesn’t bother me as much as it does some people, I think the little “glow” lights underneath it that denote which programs are currently running is completely unusable. Look at the difference between the Leopard Dock and the Tiger Dock.

Tiger:

Tiger Dock

Leopard:

Leopard Dock

You can remove the glassy shelf from the dock by using the following commands at the terminal:

  • defaults write com.apple.dock no-glass -boolean YES
  • killall Dock

Also, one can get the triangles back by reading the article Leopard Dock with black triangle

The Folders

The folder icons from Tiger have changed from a 3/4 perspective view to a front perspective. Although a regular folder is easily recognizable, system folders and docked folders lose contrast when compared to their Tiger brothers.

Consider the following folders.

Tiger:

Tiger Folders

Leopard:

Leopard Folders

The difference is striking. At a glance, the Tiger icons are clearly different from each other giving meaning to the icons. The Leopard icons lose this contrast and easily become lost within each other. It’s hard to tell if there is anything special about these icons at all. This is especially true for those users that do not have the best eyesight.

In the next article I’ll cover the huge drop shadow and that dang highlight color.

Got Reverse DNS?

November 17, 2007 — 0 Comments

As an email administrator, I’ll sometimes get complaints that my email server is blocking legitimate messages. In about 90% of the cases, the culprit is a misconfiguration of the sender’s DNS servers.

The reason that it’s DNS instead of a mail server configuration? Reverse DNS is the answer. Reverse DNS or RDNS is widely used by email administrators to block spam messages coming from personal computers that are acting as zombies as they will always fail a reverse DNS check. Unfortunately, small and medium sized businesses that don’t have the luxury of having on-site mail administrators sometimes get caught by the RDNS trap as well. For those, fixing the DNS issues is vital to their continued business.

Here is how it all works.

Let’s say that I have cable Internet access through Cable Internet Company X and my poor Windows PC has been unwittingly turned into a zombie by a virus. From this point on it’s starting to send out spam messages to the Internet. For the sake of the example, we’ll say that my IP address is 85.105.64.87 (note: this is an actual IP address that was blocked by my Postfix server).

When a connection attempt is made to a mail server that is doing RDNS checking, the server will attempt to lookup the name that corresponds to that IP address.

If you have a * nix machine, you can do a reverse lookup by using the dig program. dig -x [ip address]. This this case, dig -x 85.105.64.87 returns the following:

87.64.105.85.in-addr.arpa. 85395 IN PTR dsl.static851056487.ttnet.net.tr.

I should note that if there is no PTR record for that address, then the RDNS check fails right here! This is actually where most legitimate servers get blocked since you can’t use GoDaddy or Register.com to create PTR records. You have to go through your ISP to have those created. However, in our example, there is a PTR record so the check continues.

Using the PTR information, the mail server will then do a forward lookup for the address dsl.static851056487.ttnet.net.tr. On a *nix machine a forward lookup is done by typing in dig [hostname].

In order for a RDNS check to be completely successful, the A record would return the IP address for the PTR record. These have to match! In the case of our example, the A record should point to 85.105.64.87. The dig program reveals something else instead:

dsl.static851056487.ttnet.net.tr. IN A

Notice that there is no IP address after the “A” part? This is a failure.

A valid set of DNS records would be similar to the following:

“A” Record:

mail.eddorre.com. IN A 192.168.1.1

PTR” Record:

1.1.168.192.in-addr.arpa. IN PTR mail.eddorre.com.

If legitimate email is being blocked because of a Reverse DNS check failure then make sure that you have done the following:

  • Make sure that your mail server has a static public IP address
  • Make sure that there is an A record pointing to the static public IP address. I usually create one by adding “mail.” to the domain name. For example: mail.eddorre.com. I should note that you can create an A record using your domain registrar’s DNS utilities. You don’t need your ISP to do this for you
  • Call your ISP and have them create a PTR record for your static public IP. The PTR record should point to the name you chose in step 2

Creating a Ringtone from a Song for your iPhone

December 28, 2007 — 0 Comments

With the latest version of the iPhone software, you can once again create ringtones for your iPhone for free. As to how long this will last is unknown, but for the moment it will work.

In order for the following steps to work the following have to be true:

  • The song cannot have DRM on it (meaning you can’t have bought it from the iTunes Music Store)
  • You must be using firmware 1.1.2 on your iPhone
  • You must be using iTunes 7.5
  • Ringtones should be between 30-40 seconds long

Creating the Ringtone

  • Open iTunes
  • Highlight the song that you want to use as a ringtone
  • Right-click on the song and select Get Info
  • Click on the Options section (Options Tab in Windows)
  • Enter in the start time and end time that you want (remember the 30-40 second rule)
  • Right-click on the song and select Convert Selection to AAC or Convert Selection to MP3. By doing this, you’ll have a new 30-40 second clip in iTunes (the song will automatically start playing)
  • Select the new 30-40 song selection, right-click on it and select Show in Finder (Show in Windows Explorer in the Windows version of iTunes)
  • Copy the file to the desktop
  • Go back to iTunes, right-click on the 30-40 song selection and select Delete (click the Remove button in Windows)
  • Opt to move the files to the trash (Recycle Bin in Windows)
  • Go to your desktop, and rename the file changing the extension from mp3/m4a to m4r
  • Double-click the file and it will import into the ringtones section of iTunes