Tuesday, May 13, 2008

Scheduled and automated Secure FTP (SSL)

A few months ago I had a request from one of our department members to automate a tedious process. One of our health systems crank out a plain text file which on a daily basis needs to be sent off to an insurance carrier. The insurance company uses FTP to facilitate the "upload" of data, but there is a catch. Because this information contains patient health data, you would not want to send it in plain text. Their method of securing the data is to use certificate based secure FTP. I should state that there are other methods of securing FTP traffic, namely with SSH tunneling. Using certificates for an FTP server is not common practice, and so automating it was difficult.

Here is the script that I created which happily runs on an Ubuntu Linux box. Note that names, passwords, and the like have been removed to protect confidentiality.

#!/bin/bash
#
# HL7 FTP drop
# By Steve Ballantyne 02-28-08
#

# Calculate the date in specified format and make a directory with it
TIME=`date +%m-%d-%Y`
# Build working directory
if [ -f /data/healthinsurance/README.txt ]
then
sleep 0
else
mkdir "/data/healthinsurance/$TIME"
fi

cd "/data/healthinsurance/$TIME"

# Check for SERVER Share
if [ -f /mnt/healthinsurance/README.txt ]
then
mv /mnt/healthinsurance/Submissions/healthinsurance/working/KCHDEM* /data/healthinsurance/$TIME
else
#Map to SERVER drive
mount -t smbfs -o username=ballantynesd,password=password "//SERVER/e$" /mnt/healthinsurance
# Now move it
mv /mnt/healthinsurance/Submissions/healthinsurance/working/KCHDEM* /data/healthinsurance/$TIME
fi

# Go put the file on the server
curl --ftp-ssl ftp://ftp.generichealthcare.com -u username:password -T /data/healthinsurance/$TIME/KCHDEM*.txt --insecure
# Done - Exit


Here's the play-by-play of what this script does.

1) A check is made for a README file. If this file doesn't exist, someone may have messed with our directory structure.
2) A date variable is created in the form of MM-DD-YYYY. Then, a directory is created using that variable, and we change directory, or 'cd', into it.
3) We check to see if a README file exists on a shared drive, which has been mounted. If it does not exist - then the drive has come un-mounted so we run through a routine to re-mount the Windows share.
4) Once the mounting issue is resolved, we move the file from the SERVER into that local folder we created with the date variable.
5) With the file in our grips, we use 'curl' to send the file to the health insurance company. Note that we needed two special switches: '--ftp-ssl' and '--insecure'. The '--insecure' was required in my case because the certificate being used for this connection was self-signed.

Now that we understand what we are doing, how will we automate it?

I saved the above script into a file called /root/healthins.sh. Then I did a 'chmod 755 healthins.sh' so that it was executable. Next, I became root by using 'su -' and supplying the root password. Finally, I ran 'crontab -e' which allowed me to edit the root users cron entries.

This is the line I added to the bottom of my scheduled jobs (it was empty).

1 1 * * * /root/healthins.sh >> /root/healthins.log 2>>&1

That line says that on the first minute of the first hour of every day ... run the script called 'healthins.sh' which exists in the /root directory. Then, redirect all of the output from this process into a log file called 'healthins.log' which also exists in root. The '>>' indicates that this file should be appended. That is, *added to* and not overwritten.

I'm happy to say that this has been running well, aside from a mistake I had made in my logging process. But I figured since I was in fixing this - I should document this process for future generations. If this helped you in some way, won't you please drop me a line?

-Steve Ballantyne

Friday, May 09, 2008

Dress up Ubuntu 8.04 Hardy to look like gOS Space

The nice people over at gOS (read: good Operating System) have released their latest project called "gOS Space". Think Ubuntu, if you layered it up with some eye candy, and then added a nifty dockbar and populated it with MySpace and YouTube Launchers. I have to admit that the visual appearance is pretty good. It's also oddly familiar, because with all of these various pieces mixed together, it resembles the latest OS from Apple.

I downloaded it and tried to boot it in a virtual PC (using VirtualBox). I failed. I also tried burning it to a CD-ROM and I failed at that too. That's because the ISO image is about 68 meg's off from fitting on a standard CD. So I grabbed a DVD and burned a copy. Then I booted it up. The "beauty" of gOS is that you don't have to install it. You can boot to it, and try it out. I tried it. I played with it a while. I was ready to get back to Ubuntu which I had all ready installed, but I wanted to take this nice theme with me.



Here's how you can re-theme your Ubuntu 8.04 Hardy with the pretty space theme.

#1 - Get the wallpaper
If all you wanted was the wallpaper, this is an easy task for you. Because I have mirrored it. you can right click here and download a copy. Then make it your background. You're done!

#2 - Install the wicked green bubbly window theme
One of the niftier looking aspects of this theme are the windows. You won't really see what these look like unless you do some digging. The screen-shots on the gOS site don't show them. I borrowed them the best way I knew how. Find the directories ... tar-ball them up ... and carry them over.

* Right click here and Download this file (save it anywhere).
* Move the file to the root of the file system, and un-tar it. In a Terminal ...
cd Desktop
sudo mv newgosspace.tar.gz /
cd /
sudo tar -xzvf newgosspace.tar.gz

* Apply the theme you just installed: click System > Preferences > Appearance. Then select the "gOS_Theme". Click "apply".
* You're done. Everything is green.

#3 - Install the pretty Dock Bar
gOS makes use of the "Avant Window Navigator". This has been around for quite a while, and can be installed relatively easily to Ubuntu Hardy. But ... the version that they are using for gOS is slightly newer than what you would get from the Hardy repositories. Trust me, you will want the latest stuff if you want the full effect. Namely, what the new version offers over the old one is a big collection of "applets" for your dock-bar, and that neat looking "tilted tile" of your icons (as seen in the screenshot).

If you want to live on the edge, and install the latest stuff ...

* Open up /etc/apt/sources.list and add this line to the bottom:
deb http://ppa.launchpad.net/reacocard-awn/ubuntu hardy main
You will need roots authority to save this file, so you might want to run something like "sudo gedit /etc/apt/sources.list" to open it.
* Now, in a Terminal run "sudo apt-get update".
* Also in a terminal, run this ...
sudo apt-get install awn-core-applets-bzr avant-window-navigator-bzr python-alsaaudio python-awn-bzr python-feedparser
* You will be asked if you want to install all the above, plus some dependencies. Say Yes!

You are almost done. But here is the problem: you have no "preferences manager". Why didn't you install it in the above command? Because it won't work. Basically, you are mixing old and new parts of this application together, and Ubuntu doesn't like it.

* Open this web page, and find the version of awn-manager-bzr_0.3.1.bzr234.1~hardy that matches your version of Ubuntu and PC type. If you are running Hardy and have a standard Intel i386 version, you want to download this one.
* Find the file you just downloaded, and open it (double click it). Then, click the green Install button to install the package. You may be told that this same package exists in your repository. You should ignore that message. It's referring to an earlier release of that same package.
* Click Applications > Accessories > Avant Window Navigator. It should launch at the bottom.

If you were using a "bottom Panel" you now have some real redundancy going on here. You may move that bar to the right side of the screen (click and drag it) or you can right click on it and "delete it". I suggest you keep it around in case you don't like this dock bar (it's been known to be buggy, while it's been very stable for me).

Now you have some configuration to do. If you right click the left most portion of this Avant bar (there's an empty little slice there) you can select "Preferences". From there you can add applets, and the like. I suggest you add the "Stacker" applet (one for each stacker menu you want to create). Then you can right click on each Stacker (as it appears in the dock bar) and click "Preferences". If you would like to use the "visual styling" that I created for my dock, you can download this file. Just save it somewhere handy, and in the dock preferences, click the Themes tab, then Add, and browse to that file. I found the manager to be a bit buggy with themes. If you add the theme, and it doesn't show up in the list - close the manager and re-open it.

If you want the slick Apple look for a Stacker... click the Backend tab and choose "Folder backend". Point it to a folder which contains shortcuts. If you don't have a folder of shortcuts - create one and come back. Click on the Applet Layout tab and check "Composite applet icon". Click the Stack Layout tab and change the Layout to "Curved gui". You may want to fiddle with the other options and tweak them to your liking.

Now you can run full fledged Ubuntu, with all the style of gOS Space! Enjoy.

-Steve Ballantyne

Monday, April 28, 2008

Nightmares with Exchange 2003 Free/Busy Time

I hadn't been in my current position long before I started noticing strange problems with our Public Folder structure. When I accepted my position as the Network Administrator I became the lucky winner of a battered 2003 Exchange server which was migrated over from version 5.5 back in ... 2005 or so.

I suppose the first sign that something was wrong was that there were strange little entries in the Public Folder list that didn't do anything. When you clicked on them in Outlook a message said "Unable to display the contents of this folder". I used to wonder what was in there and why I couldn't see it. But after asking around I could see that these were "artifacts". That's a nice way of saying, "junk that was left behind and for reasons beyond explanation - they will remain to exist for the life of the server". I tried to delete them. Operation failed. Crap. Now I didn't really care what was in them. That fun curiosity had left me. I just wanted them to go away.

And then came the Free/Busy issue. I had one of our more important and highly scheduled administrative folks ask me why people could schedule her to meetings when she was clearly booked solid. It only took a little bit of clicking around to see that something was wrong here. She was booked all day long but her "free time" only reflected an hour of busy time. I began with trying all the easy fixes, starting with "outlook.exe /cleanfreebusy" from the command line. It ran, without error. It fixed nothing.

Then I stared digging through an endless search of forums, newsgroups, and "knowledge-less bases". It seems I am not alone in my quest for operational Free/Busy functionality. There are many out there that like me are having the same types of issues. I saw a lot of people asking "can't I just delete this Free/Busy time and start it over"? The answer is, no. Because Free/Busy time is a system folder which lives in Public Folders, it isn't easily accessible by anyone. From within the Exchange System Manager you can navigate to it, play with it's simple permissions, and check it's replication. But that's about it. Oddly enough, I didn't really see anything wrong with this folder, despite the fact that it was totally broken.

I also publicly displayed my frustration in a newsgroup, which bared no helpful advice whatsoever.

After reading techno-babble off and on for the better part of two days I came across something of interest. It asked me to check an attribute on the Exchange server using the adsiedit.msc tool. Lo and behold I had located a problem. A particular attribute still held a link to my dead Exchange 5.5 server. Fixing this broken link would theoretically release, recreate, and reattach my Public Folder infrastructure. And so the following weekend I stayed up late drinking diet soda and hacking up my server only to find that the problem STILL EXISTED.

So here is the solution for anyone else that might end up in this mess. First I should mention that I have held back on releasing this entry until today (even though I performed this work nearly a month a ago). The details are a bit fuzzy to me now, but I didn't want to post a solution that wouldn't work. Today, I can honestly say that everyone's Free/Busy time is in good standing - and all those odd-ball Public Folders have been done away with.

Following this procedure will blow away your Public Folders completely, leaving nothing behind. The majority of this process covers how to backup and restore the data that your users will want back. This is a risky procedure, so if you try to do this and break things really badly - don't come looking for me. You have been warned.

Another important note: Performing this procedure will break "favorites". That means if your clients have opened up Outlook and said "add this folder to Favorites", they will now have a broken link. Even if your folder comes back with the same name and the same location - the shortcut will still not work. They (with your help) will need to recreate all of those shortcuts. Expect calls. Clicking on a dead shortcut will cause Outlook to crash!!

Step #1 - Make a backup. If you use Veritas, Symantec, or something of that nature - make a full backup of your Public Folders now. Hope you will never need it. In fact, try not to ever use it. Refer to the notes at the end of this post.

Step #2 - Back up the Public Folder permissions. Get a copy of the Microsoft Exchange Server Public Folder DAV-based Administration Tool. Install this tool (it extracts to a folder) and run it. Then click File > Connect. Enter the properties for your server, and run this as someone with Administrative access. Make sure that the radio button option is selected for "Public Folders". Now you should be able to expand Public Folders, and see them all listed in the left pane. Click on the very top item "Public Folders", and then click Tools > Export Permissions. Leave things at default, and click OK (you may have to set up a log file, so create one if prompted). This will create a text file with all of the Public Folders names, and all the permissions to go with them. In my case, I then opened up this text file ... went down to where it switched from "real" public folders to invisible System Folders. Then I *deleted every line* which referred to System Folders. You should do this too. Problems with Free/Busy could be related to incorrect permissions being applied to your folder set. You do not want to re-import those faulty permissions back onto a healthy Public Folder store.

Step #3 - Back up your Public Folder data. I did this the old fashioned way. By that, I mean that I opened up Outlook, expanded Public Folders, then selected All Public Folders. Then I performed a File > Export, and exported *everything* in Public Folders to a PST file. The danger in doing this is: you cannot back up folders that you have no permission to. So if someone has excluded you access to a folder, it will not get backed up. That could get you in trouble. Compare what you see in Step #2, with what you see inside of Outlook. Make sure you are not missing anything. Also know, this could take *HOURS* depending on the amount of Public Folder data that you have. In my case the store was a little less than 700MB and it took 45 minutes.

Step #4 - Remove Public Folders. To do this, go into Services on the Exchange Server and stop the Information Store. Now, browse to where the Exchange data files are physically stored. Usually this is in x:\Programs Files\Exchsrvr\mdbdata. There are two files; pub1.edb, and pub1.stm. Rename these files - but do NOT delete them. I just added an .old extension to them. Now, go back and restart the Information Store service. This will cause chaos and confusion to your Exchange Server. It should give you a bad news message and ask if you want to create a blank Public Folder set. Say yes. Congratulations, you just destroyed all of your users data. Better act quickly on step #5.

Step #5 - Put the Public Folder data back. This is the reverse of exporting. Go into Outlook, Expand Public folders and notice that it's empty. Now, import your PST back to Public Folders. Note that there is a trick to this! The trick is, you cannot import back into a system folder without Outlook telling you to "stop doing that". What you can do, is expand Public Folders, then expand All Public Folders - and then start the File > Import wizard. At the second or third step where you tell it where you are importing to - select "to currently selected folder". You will also notice that in your PST file this subtree has some bizarre name like "IPM_NON_SUBTREE". Don't worry about that. It will restore to where it needs to. Watch the files copy. When done, make sure things look okay.

Step #6 - Still awake? Now fix the permissions. Open up your tool from Step #2, and click File > Connect. Again, fill in your server properties and make sure Public Folders are selected. Now select Public Folders and then Tools > Import Permissions. This should go pretty quickly. To see if things worked, you should go right clicking randomly on your folders and make sure that the permissions look right. You can also check the log for this tool you have been using.

Step #7 - Update everyones Free/Busy time. The best way to do this is to send out a mass meeting notice for a "fake meeting". You can put it for a Sunday at Midnight, make it last 10 minutes, and put the location down as "fairy land". What's important is that everyone in your organization gets it, and agrees to the meeting. Doing so, will reset their free/busy data on the server. You can also recreate this data by having each user run Outlook from a command line with the /cleanfreebusy switch. Good luck with that! I used the fake meeting method, and it worked wonders.

That should be all there is to it. But there are some ...

Possible Pitfalls!
Free/Busy still not accurate - Let's say that you have imported everything, fixed all the permissions, and the Free/Busy is still whacked. Take a moment to think about this. We have fixed all future appointments, but existing ones may still be a problem. I found that if you delete a reoccurring appointment and recreated it, the free/busy became accurate. Also - waiting longer seems to work. I waited about two weeks and everything seems correct. What fixed it? Who knows. It's Exchange Server.

Folders are missing - If someone had a folder which you could not access, than you probably didn't back it up. Way to go! The good news is that you *renamed the data files*, you did not delete them. The bad news is that you will have a hard time getting the data out of them. If at all possible - do NOT restore from a tape backup. The best thing you can do is use a tool to extract the data from the public folder files. One such tool is called OnTrack PowerControls. It's expensive to buy, but you should be able to use the trial version to extract from a detached Information Store database file. Basically you need to extract the data into a PST, and then import that PST back to the Public Folder tree. If you are stuck doing this ... read the manual for the PowerControls product. ;-)

I sincerely hope that this information comes in useful to someone, some day. It took me a few weeks of off and on experimentation to come up with this. If this helped (or harmed) you won't you please drop me a comment and let me know?

-Steve Ballantyne

Tuesday, April 22, 2008

VirtualBox with Multiple Bridged Network Interfaces

Several months ago, I made the switch from VMWare over to VirtualBox. It didn't require a lot of arm twisting. VMWare costs around $500-$600 (for a basic Workstation license) and VirtualBox is absolutely free. While VMWare is a far more robust product, I don't really use most of the advanced features that justify the inflated cost.

Now - many months later I have run into a dilemma with VirtualBox. I want to have two virtual machines running (simultaneously) which can both access the network using IP addresses which they have obtained through DHCP. Setting up a single workstation proved to be quite a challenge, and two required a lot of reading and digging. VMWare definitely makes virtual networking easier - at least on the Windows side of things. I am, of course, running Ubuntu Linux natively and virtualizing all my Windows Operating Systems with VirtualBox.

Here is the script, which made this all possible for me - with comments to follow. In this example, I have TWO physical network cards. eth0, and eth1. eth0 connects my host (the Linux box) to one network for Internet connectivity, etc. in Linux. eth1 is connected to our production network, and will be used solely for my virtual guests.

Note: You will need to install uml-utilities and bridge-utils first. Do that with: sudo apt-get install uml-utilities bridge-utils.

modprobe tun
tunctl -t tap0 -u ballantynesd
brctl addbr br0
ifconfig eth1 0.0.0.0 promisc
brctl addif br0 eth1
ifconfig eth1 up
dhclient br0
brctl addif br0 tap0
ifconfig tap0 up
chmod 0666 /dev/net/tun
# This was added Apr 22 2008
tunctl -t tap1 -u ballantynesd
brctl addif br0 tap1
ifconfig tap1 up
echo 1 > /proc/sys/net/ipv4/conf/tap0/proxy_arp
echo 1 > /proc/sys/net/ipv4/conf/tap1/proxy_arp


The above was saved into a file, which should be run as root *before* starting VirtualBox. You can do this with a 'sudo vboxup.sh', or similar. Exchange 'ballantynesd' with the user name that you are running with on your Linux box. Exchange eth1 for your production NIC, whatever that happens to be.

To complete setting up your virtual guests, you will need to shut them down, open up the settings for them, browse to network settings. Change from "NAT" to "Host", and in the lower area set the network card to tap0 or tap1. Leave the rest alone!

With luck, and prayer - you should be able to boot up your virtual machine and obtain an IP with DHCP (or assign one statically if you like).

Good luck! Give me a shout if this should help you out.

-Steve Ballantyne

EDIT: 05/08/2008

It seems that an upgrade to Ubuntu 8.04 LTS, and an upgrade to the new "Sun" branded VirtualBox 1.6.0 ... is not a good idea. I have tried for the past two days to make things work as documented. Namely, the nice little bridge that I had going on. Following the prescribed documentation got me nowhere, so I reverted back to configuring my interfaces "the old fashioned way" and used the above script. My new script is for a single Virtual Box, and it looks a little something like this ...

As stated earlier - this script must be run with 'sudo'.

# Don't need these, so they die
ifconfig vbox0 down
ifconfig eth1 down
# Throw up a bridge
brctl addbr br0
# Add my main card to the bridge
brctl addif br0 eth0
ifconfig eth0 0.0.0.0 promisc
# Bridge goes up
ifconfig br0 up
# Bridge obtains an IP address
dhclient br0
# Give me a virtual adapter
modprobe tun
tunctl -t tap0 -u ballantynesd
# Add the adapter to the bridge
brctl addif br0 tap0
chmod 0666 /dev/net/tun
ifconfig tap0 up


Good luck!!

Monday, March 24, 2008

Connecting RightFax to SharePoint Data

If you have set up SharePoint “correctly”, then everything should be going into two SQL databases. One to hold the configuration notes for the server, and another to hold the bulk of the user data. It’s likely that you have created a few “Lists” for the sake of holding onto (and sharing) contact data.

Why not then – tie your RightFax Phonebook right into your SharePoint contact data?

To begin, you will need to identify the “List” in which you want to query. From within SharePoint, your List has a “name” which you have given it. In my case, it was called “KCH Directory”. SharePoint has an “ID” which it uses to track this data, and we need to locate this string.

Get onto the SQL server which houses your SharePoint data, and run the SQL Query Analyzer. Point the query analyzer to the correct database. Mine was called “KCH_WSS_CONTENT”. Now, enter this SQL query …

select tp_ID from Lists where tp_Title = 'KCH Directory'

… where ‘KCH Directory’ is the name of your list. Then click the green arrow to process the query. You should see one row returned, with the ID we are after. Right click on that ID and “copy” it. Now paste it to Notepad for later reference.



Next, we need to create an ODBC connection for your RightFax server to use. Open Administrative Tools > Data Sources (ODBC).

Click the System DSN tab, and click “Add …”. Scroll to the bottom of the list and choose SQL Server, then “Finish”. Next you will be given a wizard. Name your source whatever you want. I named mine “passql”. For server, enter the name of the SQL server which houses the SharePoint database, then click next. Change the authentication type if you need to (I didn’t) and click next. Make sure you stop here and “Change the default database to” – and enter the name of the database that has all of your SQL data in it. Then click next, change nothing, and click Finish. Finally, click Okay to leave this window.

Now right-click the RightFax system tray icon, and choose “ODBC Configuration”. Then click “Add”.

Now, name this phone book whatever you like and select our recently created ODBC connection from the ODBC source list.

Fill in your fields “appropriately”. You may need to do some mapping here. That means going back to your SQL Query Analyzer and performing a dump of your UserData table with a query like this …

select * from UserData where tp_ListId = 'YOUR-ID-STRING'

In my case, I was able to match up fields in RightFax to these:

nvarchar1 – last name
nvarchar2 – first name
nvarchar17 – fax number
nvarchar11 - location
nvarchar15 - voice
nvarchar6 – company

So entering them into the RightFax ODBC window, looked like this:



Notice that we only have one field for a name, while SharePoint divides it into a first, last, and middle initial. I have combined first and last, and skipped middle initial (creating one solid RightFax field). All of this information will end up on your Fax Cover Sheet (FCS), which is nice.

The “WHERE” box is a SQL statement “where”. What we are saying here is what we want and don’t want from the UserData SQL dump. In my case I am specifying the particular List that I had in mind, minus the blank company names, and fax-less entries. I also (optionally) told it to only show me entries where the fax number started with a left parentheses “(“. That was because someone had typed textual information into the fax fields on some of my SharePoint data.

My WHERE looked like this (photo obscured) …

(tp_ListId = ‘YOUR-ID-STRING-HERE' and UserData.nvarchar17 is not null and UserData.nvarchar17 like '(%' and UserData.nvarchar6 is not null)

The “ORDER BY” allows you to sort your entries. In my case, I just let it try to sort by last name. But this could have been Company Name, or even numerical Fax Number.

Click OK, and try it out! In my case, I had to do a lot of checking and double checking of my SQL syntax. One little typo and your Phonebook will show up stone empty (there will be no error messages).

To test it – open RightFax FaxUtil, and click the yellow address book symbol. You should have a new tab with the name that you used in the ODBC configuration (mine was passql). When you click the tab, the actual query will take place so there might be a slight delay. You should get a nice list of data, and a few boxes overtop to help you filter out what you were after.

Obviously the ODBC connection, and the RightFax ODBC configuration will need to be repeated for your clients. But there is a way to cheat this as well. You can export elements from the registry, combine them into one .reg file, and import it after running through the installation. You can find the Captaris KB article: here.

I certainly hope this is useful to someone else out there. Drop me a line in the comments and let me know! ;-)

Thursday, November 29, 2007

News Flash : Vista Is Terrible

You are probably sick of reading it and I am sick of saying it but Vista is very, very bad. My latest gripe is all the new error messages that I seem to be generating. This takes me back to the days of old with Windows where you get a message that makes absolutely no sense at all, which also supplies you with the sense that someone will do something about it, and then leaves without giving much more detail (only to reappear in an hour or so).

Here is one ...

A program stopped working. I knew that all ready though, because it went away when it crashed. The error message indicates that Windows will notify me of a solution. But when I "close program", I don't get any notifications. I guess they will track me down and call me. One day I will get a call from an engineer who has a solution to the 3,000+ crashes I had this year.

Here is another ...

It seems that "some program" which wants to remain anonymous is trying to tell me something, but it simply can't. Oh the suspense! Should I be reminded later? What if the program has something really important to tell me? Unfortunately I didn't click the "Why does this happen?" link. I will never know the crackpot reasoning behind the message. It ended up being a browser window which was trying to refresh it's advertisements.

More worthless error messages to come!

Sunday, October 28, 2007

The Desktop Revolution

Apple started it. Many years ago, they released OS X. Everyone marveled at the new effects and tools that it brought, and suddenly Microsoft began to show an interest in giving their desktop products a long overdue makeover. Pretty soon, Windows XP was "all the rave". It was met with a lot of resistance by the business users who were probably correct in saying "Windows 2000 seemed to run faster ... and I don't need these effects to do my job".

Apple continued to build upon it's success in OS, releasing a new version nearly every year for five years. Each time, outdoing itself with innovative new features that provided new tricks for the user, but also looked *really* good doing it. Microsoft answered with "please wait". Once they felt that they had caught up, they release Windows Vista. Even with the BETA releases it was obvious that Microsoft would never keep up with the "design wars" that laid ahead. Windows Vista simply duplicated a few effects that they liked from OS X but also tried to sneak in a software-crippling security overhaul. This has of course left most users demanding "I want Windows XP back".

Meanwhile, open source groups have aimed to out-do the commercial software companies when it comes to good looks. And why not? Linux after has been built and is maintained by the people, for the people since it's inception. It's the democracy of software. If something bombs and doesn't work, it either gets fixed or becomes "deprecated". Developers can work together on projects and build code at all hours of the day and night using systems that they developed earlier on. So it shouldn't be any surprise that the race to come up with the best looking desktop will be plaid out on open source platforms.

If you work in or around IT, or you have a nerd for a friend, you have no doubt heard of Beryl. Beryl was an experiment in using a commercial graphics card to create mind-bending effects for simple window and desktop management. It got a lot of attention. As did the Compiz project which aimed to do similar effects. Eventually they merged the two projects allowing the user to get the best effects from each collection, and possibly a little more stability. The result is "Compiz Fusion".

I must admit I was fascinated watching YouTube videos like this one. Windows Vista has a "tile effect" that let's you stack windows at an angle. Compiz allows you multiple desktops on a rotating cube, window-tabbing, OS X "expose" style arrangements, and more. Do I need all that to enjoy my computer? No. In fact, with these state of the art effects come a slew of bugs and crashes. After all, the code you are using to demonstrate effects like these were written by dozens of different people and were assembled moments later to begin experimenting with them. Still, someone like me sees a demonstration of the effects and I am all ready working on getting them running on my PC.

I am not the only one amused. Search YouTube for "compiz" and you will find that these videos are getting hundreds of thousands of viewings. Take a look around the forums for popular Linux distributions like Ubuntu and you will find that they are plagued with questions from folks who are fighting through crashes and panics to get these effects on their screens.

The war wages on, and yet the real casualties here are going to be "the business desktop user". Remember that attention like this does not go un-noticed. Shareholders will demand that commercial products implement the "fire painting" that their nephew was showing off. Microsoft will quickly attempt to duplicate the feature and put it into their home version of Windows Vista. The business users who purchased Vista Ultimate edition (and have little show for it at this point) will demand that it also be available to them. Before long, I will be rolling through group policies, user complaints, and help desk calls trying to stop the madness. Of course when I am done at work, I will go home, fire up Linux, and begin experimenting with effects that are years ahead of anything that Microsoft has done.

If you still haven't watched it yet, you owe it to yourself to see what all the fuss is about: http://www.youtube.com/watch?v=E4Fbk52Mk1w. Note that the video ends with "I have to admit: I made this with iMovie". Credit to Apple, where credit was due.

Tuesday, October 23, 2007

Starting x11vnc Easily

I had a friend recently ask me how I share out my desktop in Linux so that I can log in and run things remotely. I told him that I use a tool called "x11vnc" which allows you to share out an X-Windows session that has all ready been started. This is different than the normal VNC server functionality for Linux, which is to start an all new X-Windows session for remote access.

Using your default display allows you to get back to whatever you left running at the house. Perhaps a web page you were on at the time, a few bit-torrents that you want to check up on, etc.

In trying to share my method I had to confess that I really don't know how I made it all work. I was up late one night when I finally string together a command which got the desktop shared. Since then, I had been copying and pasting commands from a text file that I had saved away. The text file has now perished in a re-installation so I finally took the time to figure this all out again. This time, I have written a sensible shell script which I will document here for my friend Rob, and for anyone else who might be interested.

#!/bin/bash

# Set this to your username
USERNAME="steve"
XAUTH=`/usr/bin/ls /var/run/xauth`

# Are we root, or just some schmuck?
if [ $(whoami) = "root" ]
then
# Now, do we have a password file created?
if [ -e /home/$USERNAME/.vnc/passwd ]
then
x11vnc -shared -display :0 -auth /var/run/xauth/$XAUTH -usepw -forever
else
echo -e "You have not set a password yet, run: x11vnc -storepasswd as $USERNAME."
exit 1
fi
else
echo "You need to be root to do this (or use sudo -b ./startx11vnc)."
exit 1
fi

exit 1


This script requires root permissions, and does the usual griping if it's run as a regular user. It then goes out to see if the person running it has all ready created a VNC connection password. If not, it gripes some more but drops a hint on how to create one. If running this as root, and you have a password file created, we then go out and find your xauth file. This file is needed to point x11vnc to the active running session. With that, we finally launch x11vnc and begin sharing the desktop.

Notice that to run x11vnc, the script suggests using "-b" which will allow the sudo command to ask for the password, and then politely launch the program into the background. In doing so, you can safely close the terminal window that you launched this command from.

Although wouldn't it be nice if this ran every time you logged on? Oh, I will have to work on that now.

Sunday, October 21, 2007

Dell's DeVo

I thought with all the advancement of modern-day "personal computers" that I might celebrate some de-evolution. Namely, by one of the biggest players in the market: Dell. More so, this is a short list of things that I have grown to hate Dell for and I need a place to gripe about it.
  • Upside-down, and angled USB ports - For several years Dell built a line of PC's with USB ports that were impossible to plug anything into. That's because the ports were flip-flopped from what they should have been, then angled at 45 degrees, and then covered with a plastic "hood" that had to be pulled up. Other than the fact that it reminds me of the deck lid on a Volkswagen Beetle - there is no benefit to this awful design flaw. If your PC was sitting on the floor (which it probably was, because the case was so damned big) you practically had to do a hand stand to plug in a jump-drive.
  • Dysfunctional Mouse Pads - How can you possibly screw up with a rubber matted piece of canvas? By plastering your logo onto it in high contrast colors then slapping some odd-ball reflective coating onto it which gives it a "shiny" appearance. The effect was that every time your optical mouse struck the lower right corner of the Dell logo, it repositioned itself on the screen. Today, I still occasionally find one of these mouse pads on a users desk and send it directly to the garbage. It seems that there are a lot of users with far more patience for something like this than me.
  • Ghost Mouse Syndrome - My poor father was the first to discover this flaw in Dell laptops. It seems that the mouse had a funny way of creeping around on it's own. Most attribute the problem to an oversensitive glide pad, which many other conspire that your mouse was being controlled by the souls of dead slave laborers from China. Aside from the creepy effect, the mouse would sometimes click itself too, causing a drag-over and delete effect on whatever you happened to be typing. I called Dell about it (not expecting much action). Dell said "plug in an external mouse". I asked "what if you're on an airplane or something?". Dell responded "you can also disable it in the BIOS". Ah yes. Problem solved. Dad can survive on Alt+Tab, Alt+F4, and other quick-key combo's.
  • Peek-A-Boo 15 Inchers - Oddly, just after the warranty had expired ... I saw a large number of 15 inch LCD displays being sent to the garbage. They seemed to come down with a case of "peek-a-boo". That's where your screen suddenly goes black. Just about the time you are picking up the phone to call the IT department, it comes back. Eventually, it goes black every thirty seconds or so making work impossible. Dell was aware of some sort of flaw in the devices but since these are "old news" they have made no attempt to assist anyone with one of these dying pieces of garbage. But if you call them, they can assist you in finding someone in your area who will recycle the components at little or no cost.
  • Case Bloat - Bigger is better! And titanic cases are back in style. Introducing the largest PC on the market - the GX-745 series. When you drop a few thousand dollars into a new PC these days, you expect to get your moneys worth. Dell sells that illusion by sending you an over-sized boat anchor. They seem to have forgotten how often office workers are relocated, and how many of us literally try to put these things on our backs to get them around. Sure it's nifty that the lid pops out of the side, and I have all sorts of little green tab things instead of screws. But all that extra plastic and aluminum make up for another 20 pounds and I fail to see how the bulk gives it any better of an appearance. Here's a neat trick - you can stack them. The tops are beveled to fit the bottom of another. We have had fun stock piling these our store room at work. Because nobody wants one, and those who do want one can't fit it into their desk.
  • Windows Vista> - In Dell's defense, they will still sell you a PC with Windows XP on it. But expect your laptop or desktop to still feature a prominent "Windows Vista" sticker on it. If I need to tell you why Windows Vista is a bad thing, you obviously haven't been subjected to it like I have. I will save that for another gripe session.


I'm sure you could think of a few reasons you hate Dell. Feel free to chime in with the comments feature.

Monday, October 15, 2007

Die Phishing Filter!

Every time I set up a new XP workstation, I give it all the appropriate updates which includes Internet Explorer 7. I have to imagine that users who are not familiar with IE7 (damn near everybody) gets a little confused and perhaps even concerned when they start seeing "check this site for phishing" dialog boxes. This feature, while it's intentions may be good, does nothing but causes me additional phone calls.

This morning I looked into how I might get rid of this feature once and for all - everywhere on my network. It turned out to be quite involved, and I didn't find many good resources on this topic. So here are some helpful tips for anyone else out there that would like to disable the phishing filter using group policy.

1) Install the additional IE 7 Group Policy Templates. You may all ready have this template if you are running Vista. If you are running Windows XP, you can download them here.

2) If you had to download and install the template (XP users) you will need to perform this step. Otherwise, go to the next one. Open up your Group Policy Editor and expand Computer Configuration. Now right click Administrative Templates, and then choose "Add/Remove". You can then click "Add" and browse out to the Template that you installed in step 1. It should be called "inetres" (it will have an invisible .inf extension).

3) Now, expand Administrative Templates, Windows Components, and select Internet Explorer. Check the details on the right. You should see "Turn off managing phishing filter". Read the text in the explanation box to ensure that you understand what is happening here. If you really want to be done with this forever, you should set this to "Disabled".



Now allow me to step on my soapbox for a moment here. If you are going to deploy a change like this through Group Policy, you should create a new policy to do it. Don't use the Default Domain Policy. When you create that new policy, name it something sensible such as "IE7 Disable Phishing Filter" or just "IE7 Settings". You never know when some other poor uneducated administrator may have to take over your job and figure out what the heck you did to their network.

You can find more good information on this topic from this Microsoft Technet article.

Sunday, October 07, 2007

Going from IDE to SATA in Linux

A few years ago now I was shopping for a new motherboard and processor combo to perform an in-case upgrade to my outdated PC. One of my decisions was between two different motherboards. The only noticeable difference was that one supported SATA drives and the other was strictly IDE. It was an extra seven bucks for the SATA board ... so I went ahead and bought that one.

Since then I have only ever used IDE drives as that was all I had available, and I wasn't trying to spend any more on the upgrade than I had to. But I recently was gifted an 80 gig SATA drive. Now all I had to do was to get all of my data onto it. Luckily the IDE drive that the SATA drive is replacing is the same size: 80 gigs.

I put together a plan to completely "clone" my present system and copy all of my data onto the new SATA drive. This would keep me from having to migrate my data away, reinstall Frugalware Linux, and then put all of the data back. My plan worked surprisingly well, so here is what I did. I hope that this will help someone out there who stumbles upon this in a Google search.

1) First, I simply installed the drive (physically) and checked to ensure that the BIOS was detecting it correctly. That part was relatively simple. Then, I booted as I normally would.

2) Once I was booted into Linux, I opened up a terminal and ran the following command ...

dd if=/dev/hda of=/dev/sda bs=32768


That command in a nutshell, copied every single track from the IDE drive (hda) to my SATA drive (sda). It created a complete clone. This would have also worked had my new drive been larger (but not smaller, as that would produce an out of space error). The problem would have been then that the new partition did not fill the drive. You would have to use a partition editor to fix this problem, such as gparted. I should note that copying 80 gigs takes a pretty long time. About as long as it would have taken to low level format the IDE 80 gig drive. In my case, it was about 1 hour and 10 minutes.

3) Now that I have cloned my drive, I needed to make sure that Linux knows to boot from it. For that I first mounted the new partition. In my case, sda1 was the "data" partition on my SATA drive, and sda2 was the "swap" partition.

mkdir /mnt/newdrive
mount /dev/sda1 /mnt/newdrive
vi /mnt/newdrive/etc/fstab


My /etc/fstab file looked like this:
none /proc proc defaults 0 0
none /sys sysfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
usbfs /proc/bus/usb usbfs devgid=23,devmode=664 0 0
tmpfs /dev/shm tmpfs defaults 0 0
/dev/hda2 swap swap defaults 0 0
/dev/hda1 / ext3 defaults 1 1
/dev/hdc /cdrom iso9660 user,noauto,ro 0 0


All that was necessary was to change the hda drives to sda drives. The final product looked like this:

none /proc proc defaults 0 0
none /sys sysfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
usbfs /proc/bus/usb usbfs devgid=23,devmode=664 0 0
tmpfs /dev/shm tmpfs defaults 0 0
/dev/sda2 swap swap defaults 0 0
/dev/sda1 / ext3 defaults 1 1
/dev/hdc /cdrom iso9660 user,noauto,ro 0 0


Make sure you save your changes, and quit.

4) Next I rebooted. Upon booting up, I went into the BIOS and changed by boot order so that it tried to boot from the SATA drive first. It did! At the Linux boot prompt (grub) I had to stop it from booting, and change the boot options. It was going to boot with "root=/dev/hda1", so I had to change it to "root=/dev/sda1". Having made the change, I booted right up!

5) This was a good chance to make sure that everything worked. All my data looked okay, no errors at booting time, etc. I ran "mount" by itself to ensure that I really was running from my SATA drive at this point ...

ray@frugal:~$ mount
/dev/sda1 on / type ext3 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
usbfs on /proc/bus/usb type usbfs (rw,devgid=23,devmode=664)
tmpfs on /dev/shm type tmpfs (rw)
binfmt_misc on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
/dev/hda1 on /media/disk type ext3 (rw,nosuid,nodev)


6) Having confirmed that this would work from here on out, I needed to make a change to grub so that it boots from the SATA drive from now on (and I wouldn't have to change the root line every time I booted).

vi /boot/grub/menu.lst


In the grub booter file, all I had to change was "hda" to "sda" in the applicable place. In the end, my boot file looked like this:

#
# /boot/grub/menu.lst - configuration file for GRUB
# This file is generated automatically by grubconfig
#

default=0
timeout=5
gfxmenu (hd0,0)/boot/grub/message

title Frugalware 0.6 (Terminus) - 2.6.20-fw4
kernel (hd0,0)/boot/vmlinuz root=/dev/sda1 ro quiet vga=791

title Memtest86+
kernel (hd0,0)/boot/memtest.bin


And that was it!

7) I reboot one more time, this time letting everything run it's course. The BIOS detected the drive ... Frugalware Linux came trying to boot from the correct drive ... and I booted (much quicker than before thanks to the obvious SATA speed advantages).

In closing: This was a "poor mans cloning process". Normally I wouldn't recommend cloning a system that was running. But there weren't any notable side effects. The only issues I found were that my Firefox settings seemed to be lost. The first time I fired it up after this process, I had to re-enter some passwords and such for my various Firefox add-ons. Most likely this was from having those files open and in use when they were copied from one drive to the other.

Was any of this helpful to you? Drop me a line and share your experiences.

Friday, October 05, 2007

Sourcefire Purchases ClamAV

The Sourcefire Corporation has acquired the open source product ClamAV. ClamAV is a fairly user friendly and very well supported anti virus tool for the open source market. While the product hasn't seen much praise or attention, it serves as a pretty good competitor to commercial products by being an integrable component of an open source firewall and/or Intrusion Detection System. ClamAV often touts that it has fixes to virus's several hours and sometimes days ahead of the higher priced commercial competitors. I myself have built several personal use IPCop firewalls with ClamAV for gateway virus scanning.

Sourcefire hopes to make this open source product marketable and improve it's commercial successes. It also promises to maintain the open source nature of the product. Sourcefire has had successes in this same area with Snort, the Intrusion Detection System.

A full press release is available: here

Wednesday, October 03, 2007

Microsoft Wants You ... To Use Their MP3 Player

As if it weren't enough that they have taken over the home PC market and the business desktop ... they also want their software on cellular phones, video games systems, and MP3 players.

I don't know how you feel about this whole business, but the name "Microsoft" means everything but quality in my vocabulary. Their last attempt at an OS was Vista, which anyone will tell you is terrible (insert your digs here). My phone which runs Windows Mobile is practically unusable: mostly due to badly timed "Notifications" and the lack to do simple things like answer an incoming phone call. And their game systems? ... Well those seem to be okay! I love my X-Box original. Of course, I put a mod chip in it several years ago and most of my enjoyment comes from the Xbox Media Center software that I installed to it.

You may remember (or you may not) that Microsoft put out an MP3 player called the Zune a few Christmas's ago. A handful of anti-iPod types all ran out and bought one to get a taste of what was touted as "a new sharing experience". The perk in these devices was the ability to share music with your friends wirelessly. I was impressed with the concept. Advertisements featured pictures of young trendy people all standing around with headphones on - exchanging music with one another. But there is a catch. All of them would have had to have bought one of these devices (and most of your friends have all ready invested in an iPod). There were also some questions about Copyright. So naturally the device only let you "borrow" the music. In a few days time it vanished from your collection.

The device was anything but successful. It sold 1.2 million units (all together). The iPod passed the 100 million mark back in April of this year. Bill Gates was quoted as saying, "For something we pulled together in six months, we are very pleased with the satisfaction we got". Interesting. I wonder if he would say the same thing about the long awaited Windows Vista?

Asked what would be different about these new Zune devices Bill replied, "the satisfaction for the device was superhigh. The satisfaction on the software actually is where we’d expect to see a huge uptick this year. It was just so-so on the software side". So the good part about the device was the hardware, which was actually outsourced and engineered by someone else. The software (the only part that Microsoft actually worked on) was admittedly lackluster.

Microsoft plans to build a sharing community online where users can upload samples of songs, which can be downloaded and replayed on other Zune players. But only three times, then they go away forever. I don't expect users will spend much time hacking or trying to circumvent this protection when the same music is available for illegal download from so many other sources.

My message to Microsoft: Stop spreading out. Show that you care about, and are focusing on the areas in which you are all ready successful. Retool your Operating System so that you are no longer a successful "laughing stock" of the industry. And for God's sakes, leave your OS off of my portable devices. I don't have the patience to troubleshoot all of the problems you are creating and I am tired of having to explain to my user base that annoying features, and crashes are "by design".

Source: New York Times

Friday, September 21, 2007

Apple's OS X on a Dell Notebook

I remember hearing a long while back that a couple of guys had got OS X to boot up on generic Intel based hardware. It was a lot easier considering Apple ported their operating system over to the Intel platform with the intention of only using it for their specific machines (now with Intel processors). When it happened, it excited a lot of people. But the guys who put it together said "don't get your hopes up ... it barely operates".

Since then, there have been many late nights for a growing pack of nerds that insist on making OS X available for any old Intel based PC. While the process of getting OS X onto your PC may still be rather tricky, it's certainly getting easier. I probably spent 10 hours or more throughout the week going between two different hacked together distributions. I would boot to the DVD okay, get all the way through an installation, and then hit a big brick wall.

My frustrations were echoed by the thousands in the posts of other nerds who were also wasting away hours trying to make this work. "I get the white and gray Apple logo screen ... then it goes black". Me too. "After the install, it just stops at a blinking cursor". I've had that. "I got it installed, but nothing really works". Amen.

By the end of the day I had a fully working installation of OS X Tiger, with sound, and network support. The marriage between a Dell notebook and OS X was a rocky one, but I was surprised at how well it worked. The animations were a bit sluggish but web browsing with Firefox was quite impressive. In my mind I was thinking "this emulates really well!". But alas, there is no emulation here. This is OS X running natively ... on a Dell. How fun. Yet there is something a little weird about seeing such an elegant and well crafted operating system appearing over the "DELL" logo.

The question does remain though, "so you have OS X on your laptop ... now what?". The Intel based OS X has not been around very long, so there is a limited set of applications that work on it. If you were to buy an Apple computer, with the new Intel OS X installed on it, you would have an application called Rosetta. Rosetta makes it possible to run all of your Classic Mac applications by making use of some old Apple CPU tricks. Because you don't have those extra components in an Intel based PC ... you are not likely going to have Rosetta running smoothly (or at all) for some time.

In the mean time though, I can say this. Having OS X at arms reach in the office put a smile on my face. And while my co-workers were unimpressed, I was able to point out a few things like "Expose" and say "Here's that feature that Microsoft stole for Vista ... but didn't implement nearly as well".

Wednesday, September 12, 2007

Popular Searches

This summary is not available. Please click here to view the post.

Friday, August 10, 2007

Garnter Group Hates the iPhone

I think of the "Gartner Group" as a bunch of grumpy old men in suits. Like a team of Andy Rooney's running around complaining about how stupid everything is today (without bothering to offer an insightful observation about how to improve things). Part of the reasoning behind my perception of the Gartner Group is based upon a video I was forced to put myself through about "how to become a technical trainer". Thankfully, the Gartner Group gave up the "Certified Technical Trainer" process to CompTIA many years ago. The materials that they produced (a book, and a video) were: extremely outdated, hosted by two of the most entertaining men of all time, and gave genuinely bad advice about training. Not to mention, that their entire course had nothing to do with the IT training industry that we knew then and now. My opinion of these old guys in suits has not changed much.

It was no surprise to me that the Gartner Group hated the new iPhone - even before it was released to the public. Having suffered with one of the worst designed phones (and operating systems, Windows Mobile) of all time, I was looking forward to learning about how the iPhone might work out for a business. I couldn't Google around all of Gartner's lousy claims about why the iPhone is a bad business move. So I am going to address them here in direct response to some comments made by one Ken Dulaney. I should note that Mr. Dulaney claims to have 36 years of experience. For those keeping track, he has been in the IT business since 1971. When did we start calling it the "IT Industry" exactly? I am not counting my years working with Apple IIe's and TRS-80 Color Computers. Maybe I should put that crap on my resume.

He says: Lack of support from major mobile device management suites and mobile security suites
I say: Tell me one good feature that you need, that the iPhone doesn't have? I don't want a "suite" of anything on my phone. I want it to do what a phone should do, and not require a load of software to be added. How security conscious does one need to be with a phone? If you can put a PIN number on it to lock it, you're good. Any more than that and the users will turn on you.

He says: Lack of support from major business mobile e-mail solution providers
I say: What is a "mobile email provider"? The iPhone synchronizes with any POP/SMTP or IMAP provider. Any mail product including Exchange server has that capability. And you can try to shoot me down on IMAP as being "insecure" but it's used an encrypted authentication mechanism for many years (IMAP4).

He says: The operating system platform isn't licensed to alternative hardware suppliers so there are no backup hardware suppliers
I say: That's just what I want. A "cheaper" knock-off iPhone that is manufactured by GPX. Can I order one of those from CDW and have it tomorrow? Get real.

He says: Feature deficiencies, such as no removable battery, could increase the need for support
I say: Yeah, I remember the last time I took the battery out of my phone. Wait, no I don't. Because there is no need to. Guess when I last replaced the battery in my iPod which I have owned for five years? Never.

He says: At this point, it's only available from one U.S. operator
I say: He makes a good point here. But let me tell you something. I live in a tiny town, and I have the worst cell phone coverage possible. I have used both Sprint (Embarq) and Verizon and they both suck. The few folks here who have AT&T coverage say that they never slip beneath two bars, where as I lose signal completely in those same areas. Perhaps Apple wanted to go with a provider that they felt delivered the best service, and not offer phones to providers who would make them look bad. I am going to award that point ... to Apple. Sorry Ken.

He Says: It's an unproven device from a vendor that's never built an enterprise-class phone or mobile device
I say: I have a UTStarcom phone manufactured by Intel, and with an Operating System from Microsoft. It's the worst gadget device I have ever owned to the point that I can hardly take a call on it. I want to track down all the engineers who had a part in making this phone and beat them with it. Which would hurt, because it's so big and heavy. Remember that company called "Apple" who made an MP3 player? And how did that compare with those experts who made the "Rio"? Anyone bought a "Zune" lately? I rest my case.

He says: A high price estimated at $500
I say: Hogwash. My phone was $400, it's only 2 months old, and I couldn't get ten dollars for it. Not to mention, it's all ready "unsupported" by the vendor. Perhaps we could agree that cell phones in general, cost too much.

He says: A clear statement from Apple that it's focused on consumer, not enterprise, business
I say: That was a mistake. Apple didn't expect business customers would come looking for one. They perhaps didn't survey what business customers think about their cell phones. I read a lot of angry comments from people who bought a "gadget phone" and can't make a simple phone call because of lock-ups, lost signals, prematurely dead batteries, etc. I am one of them.

He concludes with: IT "isn't prepared for that right now," Dulaney said. "Apple simply hasn't supplied the tools they need to consider handling this. I think those tools are at least six months out."
I say: Let's do this again in six months. Now stop spamming everyone with your opinions and get back to your old man club. I think they just put in a VHS tape of something starring Walter Matthau.

-Steve Ballantyne

Thursday, July 12, 2007

Lexmark Jams on Wrist-band Labels

In our hospitals Emergency Department and Registration area we have a few Lexmark printers with multiple trays. One of those trays is for printing out a sheet of labels, along with a plastic wrist-band to be worn by the patient. We have had a lot of trouble with the Lexmarks jamming up and eating the wrist-band sheets so I finally took one apart and had a look.

The hospital does a lot of printing. We often have to pull the printers apart and clean the rollers. For the Lexmarks, these are little black wheels with white rubber tires stretched over them. The white is nice, because it allows you to visualize any dirt, dust, or other stuff that has built up on the wheel. Every little bit will detract from it's sticky nature - and bring it that much closer to a paper jam.

While cleaning the rollers in one of the trays, I noticed that one of the wheels falls right onto the "slick stripe" on the wrist-band sheets. If I forced the rollers to try and pick up one of these sheets, it almost fed sideways. It's not rocket science. One wheel pulls a little stronger than the other (which slips) and the paper feeds at an angle, if at all. I decided that since we had a spare tray I could do a little re-engineering.

What I ended up doing was removing the black rod that the wheels attach to and continuing the groove pattern that allowed the wheel to remain stationary on the bar. Continuing the groove pattern all the way to the end of the rod allowed me to push the wheel back on, and keep pushing it all the way over to the end. Now, with the wrist-band label sheets inserted I was just able to clear the "slick spot".



Thinking I was done, I plopped the tray back into the printer and drummed up a wrist-band. Bleep-bleep-bleep! Instant jammage. I would not get off that easy. It turns out that there is a little plastic bar that floats easily up and down on the paper stack. My wrist-band sheet was wrapped around it as it was not clearing my new wheel properly. I am betting that this is the "you are almost out of paper" indicator which I could remove all together and not have any issues. But, I would rather do things right. So out came the tray, and back to the shop I went.

Our maintenance department has a wide assortment of tools. I have asked for some pretty bizarre materials, glues, and tools - which they have always been able to supply. So when I asked for a "heat gun" I figured they would have one somewhere. And they did. In fact, they had two. It would take a bit of searching to find one of them but it did eventually surface. And with that, I went to work on melting this little bar to make it fall left of the wheel. The end result was this ...



At this point, it was 5:00PM and I was not on call. Rather than "test" this tray on someone else's on-call duty - I decided to wait until morning. This morning the tray went in ... and no calls were made. They've been printing on it for several hours without a single jam (knocking on wood). I would consider that a success. And now I have to work on patenting this process or as one of my co-workers suggested, patent an adjustable feeder bar so that no-one would ever have to do something this silly again.

-Steve Ballantyne

Saturday, July 07, 2007

MySpace IM on Linux

MySpace has had an instant messaging functionality for quite a while now. Most of us didn't notice when this happened, as we all have a dozen other instant messaging protocols that we fight about. But recently, my son became a MySpace addict and suggested that I install the MySpace instant messenger so that I can chat with him. Yet, not much to my surprise, there is no MySpace instant messenger for Linux. Bummer.

Thankfully a thoughtful developer has made this possible through a plugin that he has written for use with Pidgin. Pidgin for those of you who haven't kept up, is what used to be known as "GAIM". The name change was made in part due to some lawsuits from the AOL folks. There were some cosemetic icon changes as well which I was not particularly fond of. That is, you used to be able to view all of your buddies with icons to the left of their name which indicated which messenger they were using. The AOL buddy icon represented AIM, the Yahoo "Y!" for the Yahoo IM, and so on. Now, those icons and the option to use them has all been removed. Again, we can thanks the lawyers for that one.

My first step in this process was to track down the Pidgin MySpace code. It was relatively easy to find. You can grab it from here: Then, I went after the main source code for Pidgin. It was found here: http://pidgin.im/pidgin/download/source/ At the time of this writing, Pidgin was at version 2.0.2 (which was one version higher than what the MySpace plugin was written for, 2.0.1).

I started by untarring, and unzippnig the Pidgin source code as "pidgin-2.0.2". Then I cd'd into that directory and ran a ./configure and a make (the usual way). Next, I extracted the "myspace" source code and moved it into /pidgin-2.0.2/libpurple/protocols/. Then, I cd'd into the /pidgin-2.0.2/libpurple/protocols/myspace directory and tried to run "make" as instructed. Boom! Error message.

The error message seemed to stem from these lines in the Makefile for the MySpace plugin ...

Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)


Not really understanding what this was trying to accomplish ... I took the easy way out and just commented out the second line with a "#". So my Makefile read like this ...

Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
# cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)


Then I ran "make" again, and it was compiled without any errors.

The rest was easy. I went back into /pidgin-2.0.2 and did a "sudo make install" to get the main Pidgin component installed. Then, I went into the /pidgin-2.0.2/libpurple/protocols/myspace directory and did a "make install" again. That's because the other protocols were known by the installer, and installed all ready. But the MySpace plugin was "snuck in" by me.

Now for the fun part. I started up Pidgin and verified that everything was working okay. I set up and configured my AIM, Yahoo, MSN, etc, plugins and made sure that they were working. Then, I added a new MySpace account.



I wasn't sure what I was expected to use for credentials. GUessing that my Screen Name would be my login username and password for MySpace was the correct assumption. There was not much else to configure here. The second tab had some server information and proxy settings. I left all those alone. There was a curious "Use this buddy icon" option at the bottom, which did not yet seem to be functional (or perhaps I broke it). No worries.

Going back to the accounts window I ensured that I was "online" with this plugin. Immediately after activating it, I got a message telling me about a recent friend invite. Handy! It must be working.



Now I needed to add a "buddy". So I went through the usual means in the messenger, which is "Buddies > Add Buddy". I was asked for the buddies screen name ... I wondered what I was expected to use here. MySpace let's you call your profile whatever you want. But I have noticed that they keep track of you by your address: www.myspace.com/somethinghere and they also assign you a number (which most folks don't pay attention to). I went ahead and brought up my son's MySpace page and had a look at these two figures.



For the screen name I tried the number first - and it seemed to work pretty well, although I bet the MySpace URL name would have worked too.

Now, I started up a conversation just to see if this whole thing really works.



We're good! I would expect a few problems with the functionality of this plugin. One, this plugin is really only intended for textual message. The MySpace messenger surely has a slew of odd buttons, smiley collections, animations, etc. None of that is going to work here. And I can't say that I really care. Also, if MySpace is like any of the other messengers - the developers will change up the protocol on a regular basis (with the intent on breaking anyone trying to chat without using their advertising plagued messenger).

Hope this helps someone out there. Enjoy. And message me on MySpace, would ya'? -

Tuesday, June 26, 2007

Automated Emailing of Files

It's not often that things slow down enough that I can catch my breath and record what I have worked on. I had plans of maintaining this Blog once I took my new position at the hospital. But by the time I have documented my work order, I am all ready onto something else.

But today I was able to put some time into a pet project. I had a staff member ask me if we could set up a scanner in the emergency room of the hospital, and any time someone scanned a document it would get emailed to a specific doctor. I figured that there was probably a piece of software for Windows that would do it. And I figured right. But I wasn't looking to shell out $129 - $1,000 of our department budget to get the job done. So I turned to my good friend, Open Source.

Here is a shell script I wrote that will look for the existence of a file, and if found - will ship it off to a lucky recipient by email.

Things to take into account:

  • I created a directory called /mnt/drnobody
  • I mounted //servername/SHARE to /mnt/drnobody/ with mount -t smbfs -o username=myusernamehere,password=mypasswordhere //servername/SHARE /mnt/drnobody/
  • I created a README.txt file which is used by my script to check and see that the share is still accessible


And now, the snippet!

#!/bin/bash
# Dr Example Scan Script - Steve Ballantyne 6.26.06

# Check to see if the share is in place

if [ -f /mnt/drnobody/Sharedir/ER/DrNobodyScan/README.txt ]
then
# Share exists - so we check to see if a scanned document is waiting
if [ -f /mnt/drnobody/Sharedir/ER/DrNobodyScan/FAX001.pdf ]
then
# File is waiting so we mail it off
uuencode /mnt/drnobody/Sharedir/ER/DrNobodyScan/FAX001.pdf /tmp/FAX001.pdf | mail -s "ED Document Scan" doctor.nobody@nowhere.com
# REMOVE the file so it doesn't get re-faxed
rm /mnt/drnobody/Sharedir/ER/DrNobodyScan/FAX001.pdf

else
# No file is waiting so we stop this task and quit
echo "Nothing to be sent right now"
fi
else
# Uh oh - the share is dead and we panic
echo "Directory doesn't exist, we need a remount - we will try to do it now"
mount -t smbfs -o username=myusernamehere,password=mypasswordhere //servername/SHARE /mnt/drnobody/
/usr/bin/mutt -i panic -s "ED Document Scan FAILED" steve.ballantyne@myemailaddress.com < /dev/null
fi


Now, you may say - "This is crazy! - Who will run this, and how often?". But that is where I slap you with a large bit of logic. I created a cron job (scheduler) that that will run this task every minute, of every hour, of every day. Since this is a scheduled job, we could do without the "echo" stuff too. I just put that there for my own debugging or for when I run this command myself from a terminal. My "crontab" looks like this ...

* * * * * /home/ballantynesd/scriptname.sh > /dev/null

I was able to add it to my crontab with "crontab -e". I had to mark the file executable too, with the usual "chmod 755 scriptname.sh".

Only thing left, is to tell the scanning software to name it's output files as FAX001.pdf, and tell the user's not to scan more than once per minute. ;-) I suppose I could add some support for handling multiple files ... perhaps tomorrorow.

-Steve Ballantyne

Saturday, February 10, 2007

Norton 2007 Is a Nightmare

I have never really been a fan of Norton Antivirus. Long ago the company I was working for bought and ran McAffee antivirus and it seemed to be pretty good stuff. But then we got the Melissa virus. Later, we got the I LOVE YOU virus. Soon after, we got Symantec - and we never had virus problems again.

Now, what exactly is the difference between Norton antivirus, and Symantec Antivirus. In some cases the Symantec corporation wants us to to feel the same about both products. I have the same protection at home as I do at work. I am as safe at home as I am at work. Yet at the same time, you shouldn't feel that the product you are using at work is just some garbage that you can pull off the shelf at Best Buy. Therefore, the products have retained separate identities.

I don't have many complaints about the corporate Symantec Antivirus. But at $65 and up per workstation it should be pretty good. The options are few, the updating and scanning seems simple enough, and the corporate management piece just works. Enter "Norton Antivirus", the home and small business product.

Recently we all had the displeasure of updating our workstations with Norton version 2007. Our 2006 stuff had expired, and with the purchase of new licenses came an all new product. I was hoping for a better interface and I didn't get it. I'm not sure where to begin with my hate for this product. I suppose it starts with the installation process - which went on forever and required several reboots. After a while, you wonder just how many different engines and services you really need to protect you from "the bad stuff of the Internet". Then the updates run, you are back to downloading, installing, and rebooting. The entire process took the better part of 40 minutes which is inexcusable for new (and fast) hardware.

Once installed, I could see that the user interface was not going to be a blessing. It seems that the engineers took anything that might confuse a user and buried it a few layers deep in options. If you ever had an opportunity to disable parts of the engine and leave yourself exposed, those options no longer exist. The result is a horribly simplistic interface which has been built in a fancy yellow framework that is so pathetically sluggish you have to wonder why they didn't just use the .NET parts like everyone else.

I tried to put it aside figuring that I really didn't need to make changes, Norton should protect me just fine and doesn't want my help in the process.

Maybe I was being silly. I should just get to work. Later that day I wanted to show a colleague how "Nessus" works. It's a pretty good open source vulnerability scanner and he needed to run a scan on one of our customers. To demonstrate, I ran a scan on myself. About ten seconds into this scan, Norton began to worry about me. I started seeing pop-overs in the corner of the screen. They said something to the effect of "someone tried to launch an attack against you - but we stopped it". Thanks Norton. I would have turned it off first ... if they gave me that option. But what about Norton actually performs firewall functions? It doesn't appear that Norton has a firewall feature anymore if you are looking at the options and user interface.

The pop-overs continued until all my resources were gone, and Windows gave up. My PC came to a screaming halt. I rebooted. This was not good. Once I booted back up I found that in the "Basic PC Settings" of the user interface was "Inbound Firewall". Oh good. I want to turn that off. Unfortunately, clicking on that option and choosing it ... was not possible. There was a general options link I could click in which there are no Inbound Firewall options.

Day two didn't get any better. I came into work that morning and logged in to find that Norton was harassing me with an ugly critical indicator in the corner. I brought up the window to see what all this fuss is about.



I see. I was being punished for having not performed a full scan of my computer when I had initially installed the product. Excuse me, but I had to get to work after spending an hour installing it. Norton just never seems to understand that you are trying to get work done. Norton likes to update your virus signatures in the middle of a critical task and then pop the alert window over what you were typing. Norton likes to scan your PC for virus's when you sit down in the morning to begin your day, sucking down every last bit of your systems resources.

I was fed up. But perhaps my frustration was unjustified. I'm sure that I can set these options somewhere. I don't want a full virus scan to run every morning when I sit down. Rather, we should run those in the middle of the night when I am at home, tucked away in my bed sleeping. After digging around in the obscure and poorly written interface, I came to the settings I was searching for ...



Here Norton is telling me that it's going to run a full scan every day at 4:00AM, starting today. But here we were 8:00AM that same day ... no scan had ever been performed. Norton, you missed your train. I am a forgiving person, and I will let that go. But we are *not* running a full scan right now. Better luck tommorrow. It continued to harass me. I continued to ignore it.

Next I thought I might change when Norton goes out and gets updates. I hate that I will be in the middle of something important and my hard drive lights up. It's as if a black hole opens in space and sucks in all my power. All I can do is wait. Every time I know it's Norton, who will soon proudly report "Virus definitions were successfully updated". I would love to never see this pop-over again. I want my updates to run at two in the morning. The computer is always on, doing nothing at 2:00AM. I started digging.

Oddly enough, if you want to change the time that Norton does it's updating, you will not find the options in the Norton control center. Where then, are these options? In control panel, under LiveUpdate. Of course! Finally coming to the options I want, I found that my choices were limited to hours or minutes. I have to decide on an amount of time between updates, and cannot pick the specific time of day - any more. Norton, you are about to forever leave my computer.

I started yelling back and forth over the wall to my colleagues. They all agreed that Norton 2007 was the worst peice of garbage that they had ever had the displeasure in running. With that, came the removal process.

Oddly enough, I can't tell you how nicely Norton was removed. Installing the product required an endless number of reboots. Uninstalling it took only one. Although, there was a second reboot shortly after to remove the separate LiveUpdate component. Yes, they leave LiveUpdate on your computer long after Norton is out of the picture. Why? For all of your other installed Symantec products, of course. Of which - I have none.

After uninstalling Norton, I immediately switched to the first free antivirus product I could find. AVG Free by Grisoft. This is a real-time antivirus scanner with scheduled updates (you pick when), mail filtering, shell integration, and nothing else. It was so simple to install and easy to configure ... it was just plain stupid. This product, which costs not a dime, just did what Norton would never allow me to do after hours of screwing around with it. Now, this product is meant for the home user - for home use only. If this works we need to begin purchasing licenses for everyone. But the cost is very low. We could get a five pack of product licences for the whole office for only $165. At $33 a copy it's half or one third what Norton presently costs.

I have been very pleased with the product. It's first day in action, it did exactly what I wanted it to do. It updated itself when I wasn't there. It ran it's full scan overnight. It left me alone and didn't bother me while I was trying to get my work done. It's simply a wonderful product.

Consider me a spokesperson for the product. You can try it to - http://free.grisoft.com. Norton, you will not be missed.

-Steve Ballantyne