Tuesday, April 25, 2006

Simple Single Sign-on Scheme

Single sign-on, or SSO, has become the Holy Grail of enterprise web applications and indeed, just like the mythical quest taken up by knights in medieval times, so there has yet to be found a unified standard to allow users to easily login across trusted web sites. The battleground is littered with the corpses of failed initiatives such as Microsoft's Hailstorm. The Liberty Alliance has churned out a number of PDFs but that seems to be the extent so far of their effort. On the open-source side, LID shows a lot of promise but without any major corporate sponsors, it's difficult to judge how successful it will be.

So lacking a working foundation to go on, I decided to strike out on my own. My requirements were simple in that a user would not have to create a separate account, the login procedure would not be a hindrance and above all it had to be secure. Too often in my dealings with vendors I've seen login schemes that easily allow a malicious user to spoof another user's identity and masquerade as somebody else on the site. With this lesson in mind, I went about detailing how it would all work.

We'll need to make some assumptions first. This scheme requires at least two entities. Entity A is the main organization, the one that holds all the users' account info. Entity B is a vendor that has agreed to interface with Entity A so that users will not have to create a second account to utilize Entity B's services. We must also assume that a user logs in with a user ID and password to access Entity A's site. That user ID must be unique and can be an email address or something auto-generated. As well, Entity A must have a service visible to the outside that can validate a user with their ID and password. The easiest method would be to have a web service that checks against an LDAP, RDBMS or some other data store.

The process begins when a user logs in to Entity A's site with their user ID and password. Once validated, a string is generated containing the user's ID and any other meta information Entity A may want to pass along to Entity B. This string is then encrypted using a key that has been pre-shared with Entity B. The resultant encrypted string is put through a Base64 encoding function and then URLEncoded to ensure that no characters are lost. This string is appended to a URL pointing to Entity B's site using an agreed upon CGI variable. This URL can be displayed as a link which the user can then click on.

Upon arriving at Entity B's site via the URL, the appended string is put through a reverse process (URLDecoded, Base64 decoded, decrypted using the same pre-shared key) and from that the user ID and any other attached meta information is made available. At this point, the user should see only an input field requesting their password. The other data can be put into hidden form fields which will be passed along when the user submits the form. When that form is submitted just the user ID and password will be passed back to Entity A but this time to a published web service to authenticate against. If the web service returns success, then the user is logged in. Otherwise, the user is routed back to Entity B's site but with an appropriate error message.

Simple really was the theme of this SSO implementation. Though it lacks the features of some of the more mature setups, it does have the advantage of being relatively easy to deploy. As well, the requirement that a user resubmit their password at Entity B's site means it can withstand a replay attack. And provided that employees at Entity A do not have direct access to users' passwords, they would not be able to login as another user either. You could increase the security even further by changing the pre-shared key every 90 days though even with the most basic Triple DES encryption a brute force attack would be impractical.

This scheme has been in production for over a month now on our member portal with no complaints or reported errors. This feat would not have been possible though without the help of some talented individuals. My colleague John K. proved invaluable when it came to brainstorming on this issue. And were it not for Mark H. at Workmode, my point man at the vendor, this project would not have gotten off the ground. Lastly, the encryption functionality was provided courtesy of DevX.com and was extremely easy to implement and use.

Please feel free to comment on this or email me if you have any questions.

Tuesday, April 18, 2006

Pretty URLs for SPGM

Since putting a photo gallery on my site I have always used SPGM, the Simple Picture Gallery Manager. It's a great application in that it does not require a database, is totally configurable and is very easy to manage. The latest version, 1.4.4, is mature and stable and I look forward to many more years of using it.

However, one thing that's always bugged me about it, and for that matter many other web applications, is the lack of pretty URLs. Now my favorite web framework does away with this issue entirely but web applications written in other languages such as PHP typically do not take this into account. Ugly URLs often do not get indexed by search engines, are more prone to linkrot, and just look darned ugly. So I decided to do something about it.

First, I went about upgrading my version of SPGM. Wow what a difference a year can make! Version 1.4.4 was quite a jump with newly updated themes and a really cool shadow effect that makes my pictures seem as if they are floating above the page. Aside from some minor stylesheet integration issues that I eventually fixed, the upgrade went very well.

My next task was to change the output of SPGM itself so that it would make every link a pretty URL. I started out by replacing every instance of '&', '=' and '?' with constant values named SEP_AMP, SEP_EQL and SEP_QM, respectively. I then defined a constant called PRETTY_URLS which, if set to true, would create URLs that looked like /spgm/spgmGal/gallery_name/spgmPic/picture_id. This modified version of the SPGM engine can be found on my website.

Lastly, I had to put my mod_rewrite skills to use to direct these pretty URLs to their correct locations. For instance, a link to /spgm/spgmGal/Spring_Break/spgmPic/3 would actually be a link to /spgm/index.php?spgmGal=Spring_Break&spgmPic=3. Also, because SPGM relies on relative links, mod_rewrite had to redirect image links from within the galleries in order to display the thumbnails properly. Eventually I was able to accomplish everything with just six RewriteRules in my .htaccess file.


RewriteEngine on
RewriteRule ([a-zA-Z0-9,_]+)/gal/(.*)$ /spgm/gal/$2
RewriteRule ([a-zA-Z0-9,_]+)/flavors/(.*)$ /spgm/flavors/$2
RewriteRule spgmGal/([a-zA-Z0-9,_]+)$ /spgm/index.php?spgmGal=$1
RewriteRule spgmGal/([a-zA-Z0-9,_]+)/spgmPic/([0-9]+)/spgmFilters/(.*)$ /spgm/index.php?spgmGal=$1&spgmPic=$2&spgmFilters=$3 [L,QSA]
RewriteRule spgmGal/([a-zA-Z0-9,_]+)/spgmPage/([0-9]+)/spgmFilters/(.*)$ /spgm/index.php?spgmGal=$1&spgmPage=$2&spgmFilters=$3 [L,QSA]
RewriteRule spgmFilters/$ /spgm


Both the .htaccess file and the modified version of the SPGM engine can be found bundled on my site. Please email me if you have any questions or comments on using it.

Wednesday, April 12, 2006

The Importance of Teamwork

What a cliché title that is. Unfortunately, I just couldn't come up with anything that was short, witty and as descriptive of the subject matter of this blog entry. Time and time again, teamwork has proven to be the most invaluable and yet undervalued resource. My college curriculum, great as it was, tended to focus on individual projects. The idea was that group projects encouraged laziness on the part of some allowing them to skate through the class without learning the material. To a certain degree that fear is realistic. But it also handicaps many graduates who end up working for companies where group projects are the only way to get things done.

With my former employer, I did not get into any major projects requiring the skills of multiple people. Most of my projects were small and specialized and could be accomplished in just a few months time by myself. But upon arrival at my current employer, it was clear that I had to throw out the old rules. My task was to give them a portal for our members that worked and there was no way I could learn a platform, much less an industry that was entirely new for me, in just a few months.

So I enlisted the help of analysts, data integrators and others from departments as varied as marketing. My address book quickly became quite the motley collection of contacts. But the synergy that developed between us enabled much more than just a quick turnaround on what seemed an impossible deadline. It created something that I had only dreamed of.

Nobody likes to see their work lambasted and I had to bite my lip several times when criticisms were aimed at what I thought were great ideas. Yet by incorporating this feedback into the product, I gained not only a better product but a group of people ready to evangelize the other departments on the quality and usability of it. For me, this automatic buy-in from the people on the team was quite the shock. It makes sense in retrospect but was not something I had personally experienced before.

Wednesday, April 05, 2006

The Joy of Blogging

I've been blogging for nearly six months now, much longer than I had anticipated I would still be doing it. I have found it to be a source of joy that I had previously all but forgotten about, namely writing. I used to do quite a bit of it in high school and in my early college days. But as my studies in computer science took up more and more of time, so my devotion to writing began to wane. The well-formed multi-page essays gave way to quick reactionary comments on Internet message boards. Quality gave way to quantity.

But now that trend has begun to reverse itself. While I still prowl my favorite boards sporting for indepth political discussions, I also make sure to set aside at least a few hours each week to blogging. Some of that time is spent pondering my next piece but a good chunk of it is used on editing what I've written. Spelling errors, grammar mistakes and misused tenses pepper my first drafts. Not only that but simply getting the wording right can take up to five or six drafts. Usually by then though, I feel that it is as polished as it's going to get.

I have also been putting my writing skills to use in the workplace. What should sound like dessicated documentation instead reads like a strange mixture of prose and programming. Though I doubt many will ever read those particular works, if I can manage to bring even a hint of a smile to some future employee who expected something much blander then I will be glad for it.

One other aspect of blogging that I've experienced firsthand recently is notoriety. It seems that some of my former co-workers have discovered the site and while most just lurk, one took the opportunity today to attempt to anonymously post a nasty and rather personal comment. I bolded anonymously because the Internet is anything but. Thanks to some excellent logging utilities I was able to get the physical location of the IP address and from there it was as simple as cross-referencing it with the Yellow Pages to discover the true identity of the culprit. What's funny is that this person had claimed to be my friend yet I knew otherwise. I can only hope that posting meaningless comments to my blog doesn't become a habit for her.

But let's not end this entry on such a down note. As it is, I shared this information with some of my other former co-workers and we all had a good laugh about it. It just goes to show that you can't take the Internet too seriously. The things people say from behind the thin veil of their browser window is rarely anything like what they would say to you in real life. So laugh about it and move on.

Here's to another six months of blogging!

Wednesday, March 29, 2006

Accident on the I-95

John·ny-on-the-spot (noun, informal): A person who is available and ready to act when needed.

Lately that's how I've been feeling with my new Samsung A900 phone. Florida has plenty of strange daily happenings to keep me busy with the camera features of this wonderful gadget but today my phone had a much more serious role to play. On my way home from work at about 4:45pm, traffic on the I-95 came to a standstill. Now its not uncommon for traffic to slow down drastically due to the natives' driving habits but a complete stop is rare at that time of day on that particular stretch so I knew something had to be up.

Immediately I turned on the camera on my phone just in time to catch black smoke rising over the car in front of me. From there the situation only got more serious as firetrucks and ambulances raced by me on the shoulder. As I inched my way forward I knew that this was going to be bad. By the time I got to the scene of the accident the fire had been doused, leaving only the smoking hulk of what looked like a Nissan or Toyota truck.

None of the local stations are reporting anything yet on their websites although it's been over an hour since it happened. I sent in one of my pictures to the Florida Today but there's no telling if they'll use it. I can only hope though that nobody was seriously injured in this accident, or worse yet, killed.

Monday, March 27, 2006

Bring on the Balkanization!

For years now we've been told about the benefits of combining functionality in an effort to do more with less. This has been especially common in the world of software development where once scattered systems now fall under the umbrella of a single system. Generally, this has meant greater functionality at a lower price. I myself have done this with various web components albeit on a much smaller scale. This trend is referred to as Walmartization and socioeconomic considerations aside, it will continue to have a large impact on software development for some time to come.

Yet despite the good intentions companies may have in providing an all-in-one solution, there are some things that simply cannot be predicted as a need when developing the software. More of a hinderance still, they cannot engineer a product so generalized as to allow somebody to easily add powerful features without requiring a basic knowledge of information sciences. The closest I've seen to this laudable goal is the Google Mini which utilizes XSLT so that a customer can render their results however they'd like.

Reality does not seem to faze large software companies though, or the managers with large budgets who purchase from them. Case in point, I am currently at an impasse with management over the direction of our customer portal. While I fully believe that an integrated back end is a great idea, I also feel that our front end should be controlled by us. The customization that has gone into our current product in just over a year is extreme and to expect a vendor to match it would be overreaching to say the least. Not to mention that we are at the whim of our marketing department which expects changes in days, not the months-long timescale vendors commonly adhere to.

For this reason I say bring on the Balkanization! One piece of software shouldn't do everything. Some tasks are just too specialized to incorporate into a product meant for widespread use. Add onto that the fact that IT organizations often serve departments which expect changes quickly and you can see why such control would be better placed in-house.

Tuesday, March 21, 2006

Mid-week happenings

My Dad arrived in Melbourne yesterday though not for familial reasons. Strangely enough, he is here for meetings with my former employer. So far he hasn't run into anybody on campus that I knew but then a lot of them have quit since I was there. We've managed to go out to dinner every night he's been here and that's saying a lot considering how busy I've been. This was definitely not the best of weeks to show up but I've got to play the hand I've been dealt and I'm super happy to have him here. I just wish we could spend more time together.

The theater is where I've been spending the majority of my time lately. I volunteer at the Henegar Center in downtown Melbourne and our latest show Once Upon a Mattress has proven to be quite taxing from a technical standpoint. I am running the lightboard while also calling the show and though we are still in rehearsal, it is fairly stressful. For instance, I thought everything was going along swimmingly when I walked into the booth this evening but as it turns out, Hell was just about to be unleashed. From burnt out lights to messed up cues, it was a miracle we even got through the first act. Tomorrow is our last rehearsal so it had better be as close to perfect as possible.

On the work front I am busier than ever. I finalized the demo product today and begin working heavily on the presentation materials. Everybody who has seen the demo in action agrees that even in its nascent state it far surpasses our current version in every category. This is probably the first project where I can truly feel I have relied on others' expertise. So regardless of how management views it, I know that I will be able to take something positive away from this experience.

Wednesday, March 15, 2006

New York Mets vs. Washington Nationals

On March 15th, 2006 I accompanied my fellow employees to a match of wits and strength between the New York Mets and the Washington Nationals, formerly known as the Montreal Expos. This has been a yearly event for the organization although this was the first year my particular department was invited.

This turned out to be a real learning experience for me. Firstly, I learned just what the limits of my new camera phone were. But more importantly, I gained valueable insight from my co-workers that would not be so easily accessible at work. As it turns out, several people have put faith in my design for a new web portal and are rooting for my success.

More importantly though, it has become clear that there are many opportunities out there for an IT worker such as myself. I have always managed to inadvertently pick fights with my most immediate supervisor and this organization is no different. My vision for the future differs from management's and I believe mine to be the correct one. I hope to persuade my bosses of the same yet the knowledge that there are companies out there that desire a new and efficient solution has given me a confidence that I haven't felt before. I have no intention of leaving my current organization but it makes me feel better to know that other opportunities exist.

In the meantime, please enjoy the impromptu gallery I have put together. This is my first time using Blogger in conjunction with my cell phone to create one but I think it will more than suffice.







My colleague Robert











My boss Christi
Colleague and super cool guy Brandon
Resident consultants Arabinda and Kishore

My other boss Bruce and myself

Fellow IT workers Linda and Brandon


Our CEO just bought another keg, w00t!
John, Brandon, Ashlee and Robert

Friday, March 10, 2006

Installing Sirius into an Audi A4

This project was originally posted on my website in September of 2005. I am reposting it here for posterity's sake. The experience I gained during this install was put to good use when I installed a Sirius receiver into my Dad's Silverado.

Project Requirements
  1. This needed to be easy to moderately difficult
  2. It needed to be simple to remove as I didn’t want to have to rip up the carpet or take half the car apart.
  3. The implementation had to look good/invisible.
Items needed
(All items listed unless noted are the Radioshack brand)
  1. JVC Sirius receiver (KT-SR2000)
  2. JVC Sirius car kit (KS-K6012)
  3. Blitzsafe 13-pin auxiliary adapter (AUDI/AUX DMX V.1)
  4. Panavise dash mount (75102-600)
  5. 20 ft. of stereo audio cable with male jacks on either end (42-3501)
  6. Stereo Y-adapter (1/8” phone plug to dual phono jack, 42-2542)
  7. Radio removal kit for Symphony radio
  8. 10 ft. of spiral cable wrap (278-1638)
  9. 3-amp fuse (250V, 5x20mm, 270-1054)
  10. Crimping tool
  11. 2 spade tongues
  12. 2 butt connectors
  13. Inline fuseholder (27-1238)
  14. 6 ft. Adaptaplug Cord (273-1641)
  15. Adaptaplug “B” (273-1705)
  16. 3/8” ratchet with 8mm socket and extension
  17. Phillips head screwdriver
  18. Small flathead screwdriver
  19. Duct tape
The total cost should come in under $300.


Slip the Sirius antenna up underneath the hat shelf as shown. With only cardboard and glass between it and the outside this is as good a place as any to put it without the hassle of having to put it on the roof or on top of the trunk. Note that it will not work underneath the trunk. Thread the wire over to the driver’s side.


Take one end of the stereo cables and thread them from the rear-seat to the trunk using a coat hanger. You will need to remove the rear seat by pulling up hard from underneath the front edge. After this you will need to remove the rear driver’s side shoulder by pulling up and out and then down. Attach the stereo cables to the Blitzsafe adapter’s phono plugs. Attach the 13-pin adapter to the CD changer’s plug.


This shows the rear driver’s side shoulder removed with the stereo cable and antenna wire running down.


With the rear seat removed and both cables coming out of the trunk, we now put them underneath the driver’s side kick panel. Use your fingers to pull the kick panel up in sections and simply push the wire up underneath. I used some spiral cable wrap about every foot to keep the wires nice and neat.


Up near the front on the driver’s side is where our cables will come out. Remove the kick panel here with the Phillips head screwdriver. In this picture you can see our cables near the door trim routed around the fuses using duct tape.

Before moving onto the next step be sure to remove the plastic piece underneath the steering column. First remove the side panel (not pictured) facing the door by slipping the small flathead underneath it and pulling it off. Remove the bolt there using the 8mm socket. Use the flathead again on the two removable plastic covers on either side of the steering column and remove those bolts. There is one more bolt that needs to be removed on the right side farther up underneath. Once these four bolts are out the piece should come off easily.


Now it’s time to make our power adapter. Crimp a spade tongue on each end of the inline fuse holder wires on one side and crimp butt connectors on the other end of the wires. Cut off one end of the Adaptaplug cord then split and strip the wires. Attach the positives (white stripe -> red wire) using the butt connector and do the same with the negatives. Don’t forget to put the 3-amp fuse inside the fuse holder.

Next attach the negative from the inline fuse holder to the ground shown in the picture above. Since we’re using a spade tongue you will only need to loosen the bolt a bit whereupon you will slide in the spade tongue and retighten the bolt. Our positive from the inline fuse is shown in the foreground.


Attach the positive from the inline fuse to the post marked 75X using the spade tongue. This is “switched” power from the battery. That means that it receives power when the car is either on or in accessory mode. Use a zip tie to keep these wires up and out of the way as we don’t want them getting tangled around the hood release. Take your new power cord and attach it to the Adaptaplug “B” plug. Using a straightened coat hanger push the Adaptaplug cord, the antenna cord and the stereo cables behind the console through to the passenger side.


Using your radio removal tools, take the Symphony radio out and attach the Panavise mount as shown in the instructions which come with it. The angled ends of your four removal tools should point inwards. Grasp the radio by the tape deck and give it a good yank to pull it out. It should slide out with no problem. After you have replaced the radio and the Panavise mount is firmly in place, screw the receiver mount to the Panavise mount using the four small screws that came with the car kit.

Plug the phono jacks into the stereo cable. Wrap the visible part of the wires in the spiral cable and attach each plug to its complimentary jack on the receiver mount.


You may have to press the power button on the Sirius receiver the first time it is attached with the car turned on but afterwards it should turn on and off with the car. If everything is working properly then congratulations, you now have Sirius!

Questions?
Email me at sean.soper@gmail.com if you have any.

Legal Stuff
All brands are copyright of their respective owners. I am not responsible if your car malfunctions after following these instructions. There may be more ‘professional’ methods of installing this unit but after two weeks of various attempts and many trips to Radioshack, I believe this to be the best layman’s method.

Thursday, March 09, 2006

'Drawn Together' is filthy, disgusting and absolutely hilarious

Having been an avid watcher of South Park for some time, I am surprised I did not stumble across this show earlier. I had always considered South Park to be somewhat of a guilty pleasure, especially with episodes like Fat Butt and Pancake Head and Bloody Mary. But upon my first viewing of Drawn Together I knew that I had never seen anything quite like this.

First, the cast of characters is quite diverse. In terms of animation styles, they range from the 1920s black and white cartoons to the two-dimensional graphics common to Flash videos. And as for personality types, they range from uber-gay to uber-conservative. Inspired by the mind numbing reality shows on TV, this production violates every taboo of modern society (and not just American society) in garnering its laughs.

Last night's episode was about Clara's hentai-ish vagina and her desire to get an "extreme makeover" ala Ty Pennington's show on ABC. Disgusting as this may sound, last week's show about Xandir coming out to his parents and how they would respond was even worse. While play-acting the possible consequences of his decision, he ends up in a house of ill repute servicing perverted Japanese businessmen, eventually killing one by accident that was underneath the shitting table he was squatting over. If you don't understand the last part of that sentence then please, don't concern yourself with it. It is a revolting thought.

But it's also damned funny. Not gay cartoon characters killing people with shattering shitting tables but the fact that traditional celluloid animation has been used to convey such a perverted act. By some small miracle, the same medium that entertained me as a child with shows like Transformers can still keep my attention, albeit with productions of a more depraved nature. Here's to many more seasons of Drawn Together and their lewd form of humor.

Thursday, March 02, 2006

The Samsung A900

Until quite recently I was the proud and happy owner of a Samsung vi660. It was a simple phone in terms of features but had color graphics, was fairly compact and got great reception. Yet as with all clamshell designs, the hinges were susceptible to wear and what started out as a hair thin line last December become a full blown crack earlier this week. Shortly thereafter parts started falling out and thus I was involuntarily placed on the warpath for a new phone.

Because I still had four months until my two-year contract with Sprint matured I was only able to get $75 off any new phone I purchased. My journey started at the Sprint store and as I made clear with the automated survey I responded to earlier this evening, the experience could have been a lot better. The salespeople were not at all knowledgeable about the product as they made several promises, such as being able to transfer the contacts from my old phone, that turned out to be completely based in fantasy.

That leads me into my major complaint about this phone. Though the camera, multimedia capabilities and enhanced web access are all new, the basic applications such as the calendar and address book are virtually unchanged from the vi660. For instance, transferring contacts stored on your computer requires a Bluetooth connection despite the presence of a USB connection. And even then it's considered a small miracle when it works. If you're thinking about synching the phone with your calendar, forget about it. The capability simply does not exist.

Yet despite these glaring feature omissions, this phone is simply amazing in terms of multimedia support, ease of use and looks. And by looks I mean it looks damn fine. In my opinion it's the best looking phone out there, even more so than it's inspiration the RAZR. The swivel camera is a definite plus as it allows you to take pictures or videos of yourself while previewing. And with the USB connection I can easily transfer items to and from my computer without the need for a 3rd party vendor.

Indeed, the past few days have found me using the A900 to watch videos, play games and in general do much more than just call people. It is truly a multimedia wonder for such a small size. And yet I know that I probably haven't even touched on half of the available features. No doubt I will be spending the next month grokking this phone in an effort to maximize its capabilities. I look forward to the surprises in store for me.

Wednesday, February 22, 2006

Nothing personal, it's just business

So for the past three weeks I have been working my tail off to do by myself in Ruby on Rails what took my predecessors years to do in J2EE. That is, rewrite my company's web portal, albeit only a portion of it, which will be shown at a demo. Thanks to Rails' fully featured stack and the wonderful simpleness that is Ruby, I'm nearly done. The hard part has been getting some of the team members to get their tasks done. They're not lazy, they are in fact very hard workers but they are absolutely swamped with other stuff and this is at the bottom of their priority list. I'm quickly finding out that managing a project and doing just the programming as I am accustomed to are two very different things.

Sometimes I wonder if all this hard work is really worth it. Only a month ago management was touting my proposal as the panacea to their problems. Costing only $15,000 and taking less than six months to complete looked very appealing. Of course, the more conservative members of the corporate IT team didn't think it could be done, hence the reason for this one month frenzy of coding to get a working demo out there.

Yet while I'm performing this Herculean task, management is actively seeking external solutions, i.e. vendors. Ugh, the "V" word. It's not that I hate vendors per se, that's too strong a word. It's just that they tend to promise the world and rarely deliver on it yet get away with charging an outrageous sum of money. Colleagues with more experience in the industry than I have tried to explain it using terms like "mitigating risk", "outsourcing experience", and "long term management". But when a product costs 100 times more (that is not an exaggeration in this case) , won't be delivered for at least a year and has little to no customization available, it really makes you wonder what sort of solution management is looking for.

On the plus side though, it's good to know a manager and their fiscal year's budget are so easily parted. It ensures that the smartest workers of this country's growing knowledge-based economy will always have gainful employment provided they charge the "right" price.

Sunday, February 12, 2006

Edward Murrow's dream fulfilled

Having recently seen a viewing of Good Night, and Good Luck I was impressed by the passion and diligence with which Edward R. Murrow, host of the show See It Now which is often credited with helping to bring down Joseph McCarthy, approached his job. After revolutionizing radio broadcast journalism during WWII, he went on to develop CBS's television news services. But it was during the McCarthy hearings that Murrow's genius really shined.

Nearly every school age child in this country knows of the dangers of "McCarthy-ism". It is synonymous with the Salem witch trials yet even today people of influence make unabashed accusations against those who they disagree with. They do this without even a shred of evidence yet they have audiences numbering in the millions and it is this blind faith in that bright box that sits in our living room that Edward Murrow warned us about.

In one of his most famous speeches, Mr. Murrow told the members of the RTNDA convention in Chicago in 1958 about the dangers of filling the airwaves with simple minded programming. His show, though not the highest in the ratings, nevertheless performed a valuable duty by giving Americans a larger view of the world around them. People might forget what the question was a few hours after watching The $64,000 Question but it would be hard to erase the memory of Joseph McCarthy publicly humiliating innocent Americans to satisfy his own personal lust for power. Education and enlightenment were Murrow's goals and he achieved them beautifully.

Unfortunately the major networks were not along for the ride. They preferred the moneymaking shows, the sure bets, the kinds of shows that didn't strain Americans' comfort levels or push them intellectually. Fortunately for Americans, technology doesn't stand still. In 1985, the Discovery Channel first aired and since then television hasn't been the same. It has been joined by other educational channels such as the History Channel, the National Geographic Channel and my personal favorite for world issues, the Discovery Times Channel.

On the future of television Edward Murrow had this to say:
"This instrument can teach, it can illuminate; yes, and it can even inspire. But it can do so only to the extent that humans are determined to use it to those ends. Otherwise it is merely wires and lights in a box. There is a great and perhaps decisive battle to be fought against ignorance, intolerance and indifference. This weapon of television could be useful."
But before enlightening television can be appreciated, it first requires the use of Man's greatest tool, his brain. So even if all three networks were to air educational and political shows 24/7 I don't think it would do much good unless people actually wanted to see it. Thankfully in today's age we now have that choice.

Wednesday, February 08, 2006

Two week hiatus

The hiatus was not intentional, more just the result of being extremely busy. Work last week was hectic especially in light of all that's going on there with my proposal to use Ruby on Rails. As it turns out my charm offensive was not nearly as effective as I hoped it would be. After taking the time to setup the accounts for the guys so they could try it out I get a snide email chiding me for going with non-standard software. And to add insult to injury my logs show that none of them have even logged in. I've only got one thing to say to that: don't knock it till you try it guys.

I was also super busy last week getting ready for my big trip to Washington, D.C. and oh boy was it big! I went up there to see my good friends Mike and Shayan. Brazilian restaurants, trendy clubs and hookah bars made up the majority of our nighttime activities. But by far the high point of the trip was the Smithsonian National Air & Space Museum. I absolutely love airplanes, jets, rockets and anything else that leaves this earth under its own power. I probably get it from my Dad who works on aircraft for the Navy.

So though I may have been derelict in my blog duties these past few weeks I can't say that I wasn't busy doing something else. And though I would like it to be higher, I seem to have found a balance with one or two postings a week.

Thursday, January 26, 2006

Stepping over the stones

Yesterday I headed on up to what's affectionately referred to as the Business Center. It's where a lot of our hardware is located and also serves as offices for some of my colleagues who aren't quite in the same organization as me yet I have to deal with them regardless. They're nice enough folk but their mindset is a bit different than ours. They would argue that we don't necessarily "get" the grand plan while we would counter that our direct interaction with customers, as opposed to just fellow employees, doesn't allow us such a luxury.

So in the bi-weekly meeting that I attend up there I dropped the bombshell that I was planning on using Ruby on Rails in the rewrite of our web portal. Now understand that our current version, which was written before I started working there, is nowhere near what was promised to upper management in terms of capability and speed. Add onto that the enormous costs and the fact that the final product still hasn't been delivered and you can see how the people I answer to would be a bit anxious to get something rolling.

But naturally my colleagues didn't see it that way. Immediately a furor was raised over how I was going against the ingrained standards of the company and how difficult it would be to support an application written in an "alien" language. They made it seem as if it was Sean vs. The Holy J2EE Standard. Regardless, I know that the way to get Ruby through the system is not with direct confrontation. I did plenty of that at my last job and would much prefer to build bridges here. So I'm going the other route: I'm gonna charm 'em.

Upon return to the sanctuary of my cube I immediately set about creating accounts on my Linux box for each of those programmers who raised an objection. I then gathered all the helpful tutorials and links that I used when I was learning Ruby on Rails and put all the information into a nicely formatted, kindly worded email. The idea is that once they see the true power of this amazing framework they will better understand why I am going this route. I don't expect to make converts out of them overnight but I do hope that they drop their blind reluctance to it and give it the chance it deserves.

Wednesday, January 18, 2006

Detective Robert Goren, modern-day superhero

Superheroes amaze our senses and make us question what's possible. Detective Robert Goren, the star character of Law & Order: Criminal Intent is no different. He makes intellectually Herculean tasks look like child's play. From the very first episode where he connected a suspect's sexual habits to their need for control to his colossal battles with arch-nemesis Nicole Wallace, Goren is constantly observing and putting together the puzzle that will eventually solve the crime.

But with this highly developed ability comes some peculiar habits. For one, there is the famous "head-cock" which is employed in nearly every episode and to great effect. It allows him to get in the suspect's face without having to come down to their level. And his penchant for stopping mid-sentence while digesting a new piece of evidence causes everyone to look in his direction in an attempt to glean any information from whatever new insight has just come across. These habits may put off those unfamiliar with his style but to his immediate colleagues they have become endearing.

The famous Goren "head-cock"

There is no doubt that the fictional streets of New York are safer thanks to this police detective's hard work and dedication. But without that uncanny instinct for deciphering a case, the sense that guides him down the true path to solving a crime, he would be just another member of the Major Case Squad. Hats off to Dick Wolf for creating a superhero that lives and breathes as we do.

Wednesday, January 11, 2006

Back in the saddle again

Whilst some people like to keep their computers on the cutting edge constantly upgrading it, I have always tended to do mine in large leaps. My current setup is a real beauty: 2.8GHz Intel-based product with 1.5GB of RAM and an ATI Radeon X700 video card all wrapped up in a Shuttle form factor case by Chenming. Up until very recently this computer had actually become somewhat of a bane. It had a funny habit of rebooting whenever I turned it off. It required me turning off the monitor beforehand so that it would not randomly restart.

All this changed two days ago when I replaced my old & busted 9600 video card with the X700. Not only did Counter Strike Source look 100x better but the random rebooting stopped as well. And when I played Battlefield 2 for the first time with this beast, I was absolutely blown away. Details that had remained hidden from me jumped out in full vivid color at 1024x768 resolution. With this setup, I finally feel like I have the gaming box I have always wanted. Now the question is, how long until it becomes outdated?

Tuesday, January 03, 2006

Compiling MPlayer on SUSE 10

For those of you brave enough to have installed SUSE 10 you are no doubt getting increased productivity thanks to better apps, a well-thought out interface and nearly seamless integration with 3rd party software. I say nearly because in attempting to compile MPlayer for SUSE 10, I came upon the problem of having GCC 4.0 installed by default. Being as it is such a new compiler, most dev teams haven't had the time to fully test and integrate with it. Remember the 2.96 debacle? I just hope the SUSE team's enthusiasm for cutting-edge software will not cause their product to get slammed like RH7 was.

So the first order of business is downloading everything you'll need. Go to the MPlayer homepage and grab the source tarball and a skin tarball. I chose proton although I'm thinking of going back to the classic Blue theme. If you'd like to play Windows media files then download the 'all codecs' package as well. In addition, you will need to download an older version of GCC. I chose 3.4.5 as that was the last stable version in the 3.x tree.

Once you get yourself a previous version of GCC downloaded and untar'd, create a directory titled gcc-3.4.5 in your /opt directory. Assuming you are in the newly untar'd directory, configure your build of GCC with the following command:
shell> ./configure --prefix=/opt/gcc-3.4.5

If everything goes well, you should get no errors. Follow up with the requisite make and make install commands. To test your new version of GCC out, cd to /opt/gcc-3.4.5/bin and type ./gcc. The help screen for version 3.4.5 should thus be displayed.

Now that we have our previous version of GCC up and running, it is time to compile MPlayer. Untar each of the downloaded files. Copy all the files in the directory which contains the Windows codecs into /usr/local/lib/codecs if you will be using them. Change back to the MPlayer untar'd directory and type the following command:
shell> ./configure --enable-gui --cc=/opt/gcc-3.4.5/bin/gcc

This tells the compiler to enable the GUI and to use the older version of GCC that we installed. Again, follow up this command with the requisite make and make install to complete the installation of MPlayer. As well, be sure to copy the contents of the downloaded skin directory into the installed mplayer/Skin directory, by default located at /usr/local/share/mplayer/Skin/. Type gmplayer at the shell to bring up the graphical version of MPlayer.

Tuesday, December 27, 2005

Installing Sirius into a Chevrolet Silverado

This install was performed on a 2000 Chevy Silverado using the KTC-H2EC kit from Kenwood which includes the Sirius receiver and car installation accessories. In addition to this package you will also need:
  1. Panavise dashmount 751101799
  2. PIE GM9-AUX converter
  3. 6-ft shielded audio cables (Radioshack part no. 42-2483)
  4. Four 16-gauge butt crimps
  5. At least 2 ft. of 16-gauge wire
Wiring that allows for a direct connection to the vehicle's switched power is included but the included wire is too short for the Silverado's dash length. Therefore you will need to splice in an additional foot of wire using the 16-gauge wire listed. You will also use the butt crimps in this step. Be sure to splice it on the side between the in-line fuse and the connection to the car so as to not interfere with routing through the dash and into the receiver.

After splicing, you will need to open the fusebox located on the lower part of the dashboard on the driver's side. It is accessible when the door on that side is open. Attach the negative lead to the lower bolt on the inside of the fuse panel. Wrap the positive lead around one of the posts of the fuse labelled RDO #1. This will allow the unit to perform just like the radio, even staying on when the car is off until the door is opened. The labelling for the fuses can be found on the plastic piece covering the fuses.

This shows the fusebox covering removed

Next we'll want to attach the antenna for the receiver to the roof. Remove the third brakelight above the rear window using a screwdriver. Thread the antenna wire over to the passenger side using a coat hanger. On the passenger side of the car you will need to pull out the tabs holding the overhead handles in place. Once these are loose you can pull down on the handles to remove the edge of the headlining. You can then push the coat hanger through and thread the antenna wire the rest of the way down past the A-pillar and just below the glove box.


The tabs on the handles need to be pulled out

Now we'll want to get the audio portion hooked up. Make sure that the vehicle has the parking brake on and is on a flat surface. Put the key in the ignition and turn it once so that you can put the vehicle in 1st gear. As well, move the steering wheel into the lowest position. Remove the ashtry and feel underneath the bezel of the dashboard. Pull gently until you hear a click and it comes away from the rest of the dash. Continue in this fashion counter-clockwise around the edges of the bezel until you have completely removed it.

The stereo headunit is held in place by a clip on either side. Remove the unit and do the same for the environmental controls located just underneath it. Using the harness that comes with the GM9-AUX, route the end with the 9-pin connector up behind where the stereo would go leaving the other end to come out in the space below. Put some strong adhesive tape, such as duct tape, on the bottom of the GM9-AUX unit itself and place it just behind where the environmental controls would go. Plug the clear plastic connect on the harness into the GM9-AUX and plug the other end of the harness into the 9-pin connector on the back of the stereo headunit. Then plug the stereo plugs of the 6-ft. audio cable into the other side of the GM9-AUX and route the stereo wires into the compartment just right of it.


The harness included with the GM9-AUX plugs into the back of the stereo headunit


The GM9-AUX fits snugly behind the environmental controls

Now you'll want to route the power cable and antenna cable into the same compartment as the stereo cables were routed. Eventually these three cables will come out of the right side of the bezel via a drill hole. When drilling the bezel, keep in mind you will need a 1/2" drill size for a 3/8" grommet. As well, a small notch will need to be cut out next to the hole to fit the wires through since the right-angle plugs make fishing them through the hole impossible. At this step you will also want to finish up the antenna installation. Center the Sirius antenna on the roof using the length of the wire protector as a guide. Be sure to wipe down the area where the wire protector will go with isopropyl alcohol so that it will adhere cleanly. Reattach the third brake light after you are finished with this.


The power, stereo and antenna wires will exit the bezel on the right side


The Sirius antenna with a clean centered look

Using the bolts found on the upper right edge of the dash where the bezel would be attach the Panavise dashmount. Reattach the bezel to the dash by gently pushing in the edges of it and moving in a clockwise fashion around the rest of the bezel. Cut the 3/8" grommet in half so you can put the wires through it. Using a small jeweler's flathead screwdriver, gently push the grommet into the 1/2" drilled hole in the bezel making sure the wires are long enough to reach the dashmount. Attach the Sirius receiver's dock to the dashmount using the four small screws provided with the H2EC kit. Plug the wires into their respective inputs and plug the receiver into the dock. Provided the radio is on then your Sirius receiver should be on too though you may have to press the power button (the small upside-down red triangle) the first time. You may also need to press the CD/AUX button to select that audio input. Congratulations, you are now ready to activate your Sirius receiver and enjoy radio again.


Final installation

Questions?

Email me at sean.soper@gmail.com if you have any.

Legal stuff
All brands mentioned in this document are copyright of their respective owners. I am not responsible if your equipment or vehicle malfunctions after following these instructions. You may copy this information as you see fit but please cite this article as a source if you do so.

Thursday, December 22, 2005

'Syriana' proposes bold changes for US foreign policy

The mechanisms of terrorism are complex and interwoven but capturing that interplay is what Steven Gaghan attempts with his latest film Syriana. It starts out in modern day Iran showing a beautiful and scantily-clad young Persian woman preparing to leave a Western-style party by covering up in the heavy dress required by that country's religious leaders. This stark contrast between appearance and reality sets the tone for the rest of the film.

The opening scene is not the only one where a hijab and abaya are present. Much of the movie takes place in the Middle East and concerns the plans of Prince Nasir Al-Subaai, played by the very talented Alexander Siddig of DS9 fame. Throw in a CIA agent who has outlived his usefulness, a genius economist, a no-holds barred lawyer and some greedy oil executives and you get a full-blown Parallax View-like movie revolving around our ever-increasing need for oil.

Now this movie is not for those looking for cheap thrills or a sultry love story. It requires intelligence and quickness to keep up with the tempo. The scenes come at you at a fairly brisk pace and the large number of seemingly extraneous characters can be confusing. But the payoff at the end of the film is well worth any resultant head-scratching for with this movie comes a powerful and very real message: the US substitutes short-term gain for long-term prosperity and in the process creates its own enemies.

The worst part of it is that there are well-meaning people working against our best interests without even knowing it. A lawyer fighting to put corrupt oil executives behind bars can't possibly be expected to know that their actions are helping to create suicide bombers on the other side of the globe. And thus it is with this powerful imagery that we are shown how a contradictory foreign policy works against our long-term interests.

If we are to survive the next century, what with being sandwiched between China's growing need for oil and the Middle East's increasingly turbulent atmosphere, then we will need to have a unified approach to foreign policy. The doctrine that gave the mujahideen arms to defeat the Soviets but not the means to rule themselves democratically once the Soviets left will not pass muster in this new century. We must stop seeing only the short-term gains. Our long-term survival depends on it.