It's Alive!!!

It's alive!!! The old Mac has had some life breathed back into it. The new power supply arrived today, and the old dog has been running ever since I installed it. I was a little disappointed to find that my old game (Warlords) had been deleted and replaced with Sim City 2000, but I was awash in nostalgia as I tinkered around with it. I played through all of the old Mac sounds. I thought it was really cool to find a sound that I made back in high school (a belch, how eloquent). I also discovered that my cousins (Jake and Kaitlyin, I know where you live), had added some sounds of their own, along with some "clever" jokes. The Mac still runs fantastic. It has system 7.1 loaded, along with Microsoft Word, Excel, Canvas, and the usual Mac fare. It also has some additional software for the HP printer (which I have) and the Teleport Modem (which I don't have). I'm debating if it would be worthwhile to spend another $30 to get a NuBus card and an ethernet adapter. If I did, I could put the Mac on our home network. I'm not really sure it would be worth the effort though, as I can currently sneaker net files over to it if I need to. I'm going to scrounge around the web for a while tonight to see if I can find a free download for the Warlords game. I'm sure that all of the original disks are long gone. It made me feel like a kid all over again to be playing on the old Mac!

It's alive!

The offending power supply

A Bigger Burrito

Jenn and I love QDoba. More generally, we love Mexican food, but QDoba has some awesome food. We are signed up for their e-mail coupons, and every other month we seem to get a buy one, get one free burrito offer. So today Jenn took advantage of another of those coupons for our dinner. Sometimes I just want a veggie burrito so I can enjoy all of the cilantro, rice, and beans. The steak and chicken burritos are both really good too, but the rice and beans are so good on their own that sometimes that is all you need.

Over the course of time, we've noticed that the veggie burritos are larger than the regular burritos. Not just a little bit large, but MUCH larger. Today, when Jenn got home, my veggie burrito was a good 50% bigger than Jenn's chicken burrito. I think the servers at QDoba must feel bad, like they are ripping me off or something, if they don't put any meat in my burrito. So to make up for it, they double up the rice and beans. Today's burrito was so big that it split through the tortilla. I couldn't finish the thing. It was just too much. Koby thought that was just fine, as he got to enjoy the rest of it. So if you are really hungry, go into a QDoba and ask for a veggie burrito with black beans, hot sauce, sour cream, cheese, and lettuce. You will be lucky to finish your meal.

Winter Break

Woohoo! It is vacation time! I have been feeling pretty stressed out lately with the deadlines and workload at the office. It was really getting to me over these last few weeks. Fortunately, I managed to get all of my assignments completed by the time my vacation started. I had scheduled to take off the final two weeks of the year, and now I can do exactly that without feeling an ounce of guilt. These last two days have been awesome. I've had no problem falling asleep. I've been more pleasant to be around. I've spent some quality time with Jenn and Corbin. It has been awesome.

Yesterday, I finished reading one book and made it all the way through another. I finished Patton on Leadership, a book about applying the war general's maxims to the business world. It was neat book to read. I wasn't all that familiar with Patton's exploits, and I've never seen the movie with George C. Scott. The book was broken down into several single page elaborations of quotes from General Patton. It discusses (in a very macho kind of way) how the same principals that guided Patton during the war can be applied in business. When to step in, when to get out of the way, making decisions, leading.... it's all covered. It is easy to pick the book up and flip to any page. There is no reason that it has to be read front to back. Being written this way, it is a little difficult to sit down and read in one sitting though, and there is quite a bit of redundancy as the same concept is repeated again and again.

The second book I read was Gung Ho! This is another book off of the list of reading for our leadership program at Flexware. It was another quick and easy read, and much easier to finish in one sitting. Gung Ho! covers the story of a manager who was setup to fail at a plant that was had poor production results. She had pointed out to her managers how one plant was going to fail, and was rewarded with the sink or swim job of making it profitable. Her boss had hoped it would be a convenient way of getting rid of a nuissance employee who just made him look bad. The book covers how the victim of this arrangement discovered some very effective methods through an unsuspecting source to motivate her plant to the top. I won't cover the main points of the book, as to discuss them out of context would make them sound, well, stupid. But in the context of the book and the story, the concepts are great ideas found in several texts on how to motivate your people to do their best work, and to raise the morale of any place of business.

As for other plans for the break, I hope to spend a lot of time with Jenn and Corbin. I've been working so many hours lately that I hardly see Corbin, and when I do he is really cranky and ready for bed. Jenn has been bearing the brunt of the child raising duties, and I really love her for all of the support she has been giving me, but I need to jump in there and help out. I also want to pass my next Microsoft exam. I've been putting it off for some time, but the projects I have been working on recently cover the topic that the exam focuses on (distributed computing architectures in .NET). I think with a little studying, I can be ready for it in a week or so. I need to get some Christmas shopping done too, but otherwise, I hope to just relax and enjoy my time off.

I hope everyone enjoys the holidays. If I don't get a chance to tell you in person, Merry Christmas and Happy New Year!

Late Night

Some nights, I don't mind staying up past three in the morning. That is, if it is the weekend and I'm playing games into the wee hours of the morning. Tonight is a different story. At work, we've been fortunate enough to get a boat-load of work at the end of the year. Unfortunately, everyone is completely tapped out on time. I've been falling further and further behind on stuff that I'd like to have done, and my deadlines just keep creeping closer. So tonight I bit the bullet and pulled an all-nighter at work. I had a list of bugs to work out of one project, some analysis to do another, and initial development to do on a third. Right now I'm taking a little ciesta to stay sane, and to fix up a computer that my brother-in-law passed along from a friend. It looks like they reformatted it and reinstalled windows, but got stuck there trying to get drivers installed. So far, I've got the rest of the drivers installed, and I'm working through all of the windows patches that need to be applied. I've done my bug fixing and analysis work. After I'm done with this PC upgrade, I'll move on to my development. I've had two cups of coffee, and that has helped me to stay alert, but the effect is starting to fade. I remember all too well from my college days the effect of a third cup of coffee at this time of night. My stomach would start cramping, I'd get all jittery, and have no chance of getting anything else done. So I'm going to stay away from the cup of coffee and munch on these tasty caffeinated mints :-).

One thing I am kind of looking forward to is that Jenn said that she would come in with Corbin whenever he wakes up to have breakfast with me. I love breakfast food, and I'm looking forward to heading out to IHOP, Dennys, Papas, or wherever we go. Mmmm... breakfast.....

Vortigaunt and I, roasting a head crab on an open fire.

Sad Mac

We did some shopping today, and I picked up a 3.6V 1/2AA battery at Radio Shack. Although I'm sure it was needed, it didn't solve the greater problem of getting the thing to boot. After some more testing, I think I've determined that the root of the problem is a dead power supply. I cracked it open and watched it in operation. There is some type of electro-mechanical contact switch that is getting thrown, and immediately lost. I can see the switch move, but it never stays. Occassionally, it will stick down for a second and I'll hear the happy mac chime. So I'm pretty sure that the motherboard, hard drive, floppy, and everything else are okay. I checked out eBay, and it looks like I can get a complete Mac IIsi minus a hard drive for $6 (plus $8 shipping). I'll probably get it and use it for spare parts. I'm still not entirely sure what I'm going to do with it once it runs (other than play Warlords). Any suggestions?

Return of the Mac

Ye Olde Mac IIsi returned to me this weekend. This was our family computer while I was in high school. The Mac is now getting close to 15 years old, and might still be functional. My grandmother had been using it for the past couple of years for web access, e-mail, and solitaire. A couple of months ago she started complaining the it wouldn't boot up anymore. My dad searched on the web and got a great deal on a Dell as a replacement. She has since been setup with a DSL account, and should be back on her way. I asked my dad if I could get the old Mac, mostly out of nostalgia for it, and to see if I could get it running again.

I got it all pieced back together and turned it on. It fired up on the first try to the smiley Mac. The first thing I noticed was the smell of smoke and air fresheners. My dad told me that the Mac had been connected to an outlet that was controlled by a light switch. At first, I thought it was a simple matter of the light switch being off that caused the beast not to boot. I was playing around a bit, and noticed that it was set in Black & White mode. I knew from the years of using it that it supported color, so I opened the control panel, and switched it to color mode. Bad move. The IIsi immediately shut down. I hit the power key on the keyboard, and the power light blinked for a second, but it was right back out. This must be what my grandmother had been talking about. As the PC was very old, I wasn't sure if this could be a dust issue (dust in a PC can create shorts), a blown motherboard, or something else. It had always been connected to a very nice surge suppressor, but that didn't totally count out a massive surge causing problems. Also, smoke and spray air fresheners can eventually coat the electronics and cause a short.

I opened the case and started poking around. The first thing I noticed was how cleanly the old Mac was assembled. If you open a new Dell, you'll find that everything is neatly wire tied away, but you still end up with cables criss-crossing the case and a general look of confusion inside the case. The Mac was very clean and tidy. The connectors on the motherboard for the floppy and hard drives were located right next to the mounting position of the drives within the case. This made for a very short cable run (a couple of inches, if that). No tools were needed to dismantle it, everything had locking tabs that made it easy to remove and reinstall the parts. The power supply even snapped into position. In fact, the only power cable run in the entire case was from the motherboard to the hard drive. Kudos to Apple for a great design. After some looking around, I noticed a Lithium battery in the center of the board. This set off a flag in my mind. Most PCs have a battery that supplies power to a segment of memory on the mainboard. This can be used to store settings, keep the system clock running, or any of several other options. In the Macs case, the battery supplies power to the segment of memory that retain settings. I realized that it was when I changed settings (black and white to color) that the Mac powered down. I grabbed an LED and checked for any voltage on the battery. It was totally dead. So I'm suspecting that this is the root cause for the Mac not to boot. I can order a new batter online for $6, or pick one up at Radio Shack for $15. Of course, I could just go on eBay and buy a complete Mac IIsi for $25, but that wouldn't be nearly as fun as reviving this old dog.

My mission now is to locate a 3.6V 1/2AA size Lithium battery and attempt to revive the Mac. Once I do, I'll be happily playing Warlords again!

More of the Same

I know, it seems like all I post about is Half-Life 2, but there was another surprise this week. The multiplayer death-match version of the game was released! That was something that was sorely missing when I first installed the game. I'm glad to see that it has been added. I played for a little bit. The gravity gun is included in the game. It makes for some interesting fights. For instance, you can pull the toilet out of the stall and kill someone with it. They even have an icon for it. Killed by toilet. Talk about your embarassing ways to die.

I'm playing through Half-Life 2 for the second time now. I had a blast playing through the first time, but I think I missed a bunch of details. So this time through, I'm really taking my time and taking notice of the details. For instance, in Dr. Kleiner's lab, I noticed a sticky that mentioned finding more watermelon for Lamaar (his pet head crab). It got me to wondering. Do head crabs like watermelon? If I bring a watermelon to Dr. Kleiner, do I get a fun easter egg? I'll have to find out!

I love this game.

Game Over: Half-Life 2

I beat Half-Life 2 the other night. It took me just over a week. It was a great game, and even though it had some quirks (mostly in the licensing department), I'm very satisfied with the game. Now I've moved on to playing Counter-Strike : Source. This is the only way (currently) to play multiplayer using the Source engine from Valve. In Counter-Strike : Source (CSS), you and a squad of fellow players are teamed up against another, similar squad of players online. One group plays as the terrorist team, and has the objective of bombing a target, taking hostages, or simply killing the other team. The other team plays as the counter-terrorists. This group is tasked with diffusing the bomb, rescueing hostages, or killing the other team. Each group has a unique set of weapons and equipment available that can be purchased. Rounds last about three minutes each, and money is awarded after each round. Surviving a round earns you the right to keep everything you bought in the previous one. Once out, you can chat with the other players and watch as the action continues to roll. With a three minute maximum round time, it doesn't take long to be back in the thick of things.

I've learned a couple of things in my first few nights of playing CSS. First, I suck at it! You get to choose the name other players know you as, and I chose EasyTarget. It seems to fit. Most rounds I take headshot with in the first minute. Occassionally I get lucky and get a kill or two in a round, but I'm usually heavier in the death column. Luckily, it is a team effort, so my team can win even if I die in the first minute. The second thing I learned is that I can't play this game for three hours and expect to be able to fall asleep immediately. I stopped playing last night around 3am, and I tried to dive right into bed. Big mistake. I was still all twitchy and amped up from playing. As you play, your eyes dart around the fielf of view, looking for targets and trying to find the vantage point that the sniper is going to ace you from. Your heart rate rises a couple of notches. That lingered for a good while after the game. I'm not sure when I finally fell asleep, but it certainly wasn't right away.

If you are an avid Counter-Strike player, and you have some notes for me, please leave a comment. Or, if you just want to kill an EasyTarget, jump online and start looking for me. I'll be the dead guy three steps from the starting spot.

Good Feeling

It is such a good feeling when you finally solve a problem that has been bugging you for a while. That's how I feel right now. I've been trying to get my remoting components moved over to another machine that will act as our dedicated testing / development environment. I kept running into strange errors and it never worked properly. Tonight, I finally found the solution! I won't go into the details, but it boiled down to uninstalling everything, and reinstalling from scratch. Now it is working like I expect! Now I get to go take a nap and get ready for our mini-game / quiz in the morning.

Serial Ports

Serial Ports are a common tool we use to communicate with devices at work. Usually, if a device has a serial interface, you can breath a sigh of relief that you are going to have success with communicating with it. There are still some things to watch out for though. Getting the baud rate, parity, data bits, and stop bits configured properly is critical. I helped a colleague at work today with just such a problem. He was trying to receive data in his .NET client from a bar code scanner that we had configured in the Descarte OmniServer OPC server. He would get the initial data change event when the OPC item was created, but nothing after that. I wrote the prototype he was basing it on, and I knew that it worked, as I had used the same barcode scanner in testing it. So we started poking around. First, we brought up HyperTerm and looked to see if we were getting any data. Sure enough, data was coming across. Then we went back to the OmniServer configuration to be sure that our topic was configured to use COM1, and that the device was using the right protocol, in this case an Intermek protocol. It was, but still, no data. So then I got to thinking, "I wonder if HyperTerm is using a different configuration". That was it! In HyperTerm, we were setup for 9600 baud 7-e-1 configuration. In OmniServer, we were looking at 9600 baud 8-n-1. Big difference! The barcode scanner was sending 7 data bits, but our OPC server was looking for 8 data bits. That's why it never sent a data change event. We got it reconfigured and it worked beautifully from there.

Game of the Moment: Half-Life 2

That's right, it finally shipped! Half-Life 2 is now sitting on store shelves, just begging to go home with you. I've been looking forward to this game for a loooong time. It was originally scheduled to be released in September of 2003. That's right, 2003. Well over a year late, I had a Simon gift card I had been sitting on waiting for the release of the game. I got the card last Christmas, so I guess I can consider this a very belated Christmas gift.

So how is it? AWESOME! It is totally engrossing. I sat down at 7pm last night and didn't stop playing until 2am. That means I'm a bit of a sleepy boy today, but it was time well spent in my mind. I'm not going to give a full review of the game, as the game media have tons of coverage already. However, there were a couple of things that struck me right off the get go.

First, lets talk about Steam. Valve developed Steam as a platform for distributing their games, hosting on-line games, and communicating news and updates to players. Steam is an application that runs in your system tray, and you can use it to launch your games, start a multiplayer game, chat with friends, or buy new Vavle games. When you buy a game on Steam, it is downloaded to your computer. If you login to Steam from someone else's computer, your games are automatically downloaded. So you can play anywhere that has a web connection. This is great if you play at a lot of computer labs, cyber cafes, or libraries, as you don't have to carry your media (CD / DVD) around with you everywhere you go. There is a drawback to this though: you must be online to play. Once you've signed in, you can check a box for offline play, but you still may need to get online from time to time. This means that you are at the mercy of your ISP and the Valve content servers when you want to play. We have a pretty fast computer at home, and the load times were still really long between chapters due to the latency from authenticating with the Valve content server. This really took away from the emersiveness of the game. It isn't any fun to be in the middle of a heated chase, and then have a two minute pause while the game gets permission to load the next level.

I decided to purchase the game from a brick and mortar store rather than from Steam. I wanted to have the physical media so I wouldn't have to wait all day to download it. I had also hoped that it would allow me to play the game without connecting to steam. No such luck there. Even though I was able to run through the entire install without connecting, I had to login to Steam before I could play the game. When you login to steam, you give your CD-Key and it gets associated with your Steam account. Then you get a set of keys for unlocking the game files. The entire install process took a full hour. Installing the files took about 20 minutes, and getting the keys and unlocking the content, and then downloading new video drivers took the rest of the time. The installer is pretty vanilla too, nothing to keep your interest for that hour. Be content with starting the install, and then finding something else to do for a while.

Which brings me to another point: purchasing the game. Like I said, I wanted the physical media for install, and I got that. I bought the Collector's Edition of the game, which included a DVD containing Half-Life 2, Half-Life : Source, and Counter-Strike : Source, as well as a t-shirt and Prima game book. The price ran $87. To get the regular edition at the store is $55. On steam, the regular (Bronze) edition is $49.99, the silver edition (which includes Half-Life : Source) is $59.99, and the gold edition is $89.99. The gold edition will get you some posters, a hat, a t-shirt, a sound track, and various other stuff sent in the mail. I wanted to the Collector's Edition so I could get Half-Life : Source, which is the original game upgraded to use the new game engine. Now that I've been through the process, I think I would have been better off buying the game on-line on steam. I was interested in the game, but not so much in the extra swag. I could have saved $25 by going on Steam and getting the Silver edition, and I still would have had everything I wanted. Plus, with our cable internet connection, I could have just started the download at night and play the next day. Oh well, live and learn. So if you are considering purchasing Half-Life 2, and you have a fairly speedy web connection, I would definitely recommend purchasing from Steam. If you have a slow web connection, go ahead and get the store copy. Be warned that the $55 version in the store has five CDs rather than a DVD though.

Graphically, the game is pretty amazing. I don't have the worlds most incredible graphics card at home, I have the base Dell configuration (NVidia GeForce 4 440). It works well for everything we need, but doesn't support all of the fancy rendering stuff that the $500 cards out on the market now do. That means I can't take advantage of all of the special effects in the game, but the game itself plays very smoothly. There is a little chop right after a level loads, and when the action gets fast and frantic, but overall it plays very well on my machine. And some effects are still pretty stunning, even on my older graphics card. The water rippling effect in the game is mesmerizing. And the facial animations of the characters lends a lot to their performance in the game. They aren't the stiff manequins with a hinged jaw anymore. They now smile, frown, raise eyebrows, blink, and do everything you might expect a real person to do.

At the very beginning of the game, I was reminded of Schindler's List. You enter City 17, a no name chunk of city that appears to be in a police state. Civil Patrol is constantly monitoring your actions, and doling out scheduled beatings to the citizens. Propaganda is blared from video screens mounted throughout the city, coercing everyone to give up their sense of instinct, and just give in to the Combine. The Combine is an alien force that has somehow overtaken the planet. A puppet human government is in place, headed by the Administrator, Dr. Breene. Dr. Breene coordinated the surrender of earth to the combine, and as reward they have appointed him the head cheese of the puppet human government. All of the people not in Civil Patrol uniforms are wearing blue denims, much like a prison uniform. As you arrive on the train into town, you see that the people are stripped of their luggage, and shuffled into a line for questioning. Out on the streets, conversations are forbidden in the open, so people huddle together in whatever shelter they can find. All of the doors on the apartments have been ripped off to allow for easier surveilance, and raids are a routine of life. You learn from some of the inhabitants of City 17 that the Combine forces have been working to limit the number of births, and that drugs have been added to the water supply to cause amnesia. Many people can't remember how long they have been in the city, if they have a family, or even who they are. It's a very bleak outlook for mankind.

And this is where the game picks up. You learn of an underground railroad of sorts that shuttles people out of the city. From there, a resistance is forming to combat the Combine. The resistance is headed by your old group of pals from the Black Mesa facility, and when they learn of your arrival, they are thrilled to learn that their messiah has returned. It seems that your story from the first game has taken on a somewhat mythical proportion.

I won't spoil the rest of the game for you, but there are some moments that are just amazing. I'm totally hooked, and I think anyone could enjoy this game.

Poker Night

Poker night with the boys was a lot of fun. We had five players tonight. I was hoping for more, but it turned out to be a great time. Anthony, Dave, Jason, Tim, and I all got together around the table for a couple of games. The first game had money on it. The pot was a whopping $25. Not much, but enough to make it interesting. The first game ran from a little after 8pm to a little after 10. Jason was the big winner, Anthony second, I took third, then Tim, and Dave took the boobie prize (a Canadian penny). We played a second game just for fun, with almost the same result. It was a great time, and I hope that we get to do it again soon. This was my first opportunity to use my birthday gift, which was a poker table topper. Dave brought by his poker chip set, which is a nice set of real casino style chips (not the dishwasher safe interlocking plastic pieces, but real composite chips with metal inserts). It was a great time among friends, and I hope we do it again soon.

Fast Week

Has it really been a week since i posted anything? Wow, time has been flying by lately. I spent three days this week off-site at a couple of different customer locations. I'm still working on the same stuff: upgrading a mainframe application, porting a VB / COM+ / InTouch application to .NET, and various other tasks. I've also started a leadership initiative at work that will hopefully see me take on slightly different responsibilities, and lead me in new and interesting directions. This weekend I'm going to host a poker night. One of my birthday gifts was a poker table topper, and I'm anxious to try it out. We play poker (Texas Hold 'Em) every day at lunch, and I really enjoy it. We don't play for money, but it is still fun to try to figure out what other people are playing with, and trying to win all the chips. Poker has become quite popular again with all of the World Poker Tour and Celebrity Poker shows on TV now. It is a fun game, and it requires equal parts math, people skills, and luck. I'll post an update after the poker night with an update of how it went!

It Works!

I've won my fight with .NET Remoting! Thank goodness for Ingo Rammer and Google, as those two resources provided the answers to all of the "gotchas" that bit me on this. My final solution involves a shared base class assembly, which defines the abstract base class for each of the objects exposed by my web service. Next, there is the server implementation, which is composed of a server activated class factory serving up the client activated remoted objects. And finally, there is the client piece, which first gets an instance of the class factory, and uses that reference to get instances of the client activated objects.

First, let's talk about the shared assembly. This is the easiest one. I needed to create, at a minimum, two abstract classes in my shared assembly. The first abstract class describes my class factory.

public abstract class ClassFactoryBase : MarshalByRefObject
   public abstract GetCAO();

So far so good. Now comes the first gotcha I experienced. My client activated object is exposing the functionality of an existing COM object on the server. So my first idea was to simply implement interface exposed by this COM object. This was a bad idea, and caused remoting to barf big time. So instead, my base class for the client activated implements the interface, but doesn't put it in the declaration.

public abstract class CAOBase : MarshalByRefObject
   public abstract bool COMObjectMethod();

All of this code went into a file I named Shared.cs, and I compiled it to an assembly, Shared.dll.
Next, I needed to implement the factory and the client activated object.

public class ClassFactory : ClassFactoryBase
   // Generic constructor required for Remoting
   public ClassFactory()

   public override GetCAO()
      return new CAO();

public class CAO : CAOBase
   internal Interop.ComObject comroot;

   // Generic constructor required for Remoting
   public CAO()
      comroot = new Interop.ComObject();

   public override COMObjectMethod()
      return comroot.COMObjectMethod()

Here, the ClassFactory creates a new instance of the CAO object on demand and passes it back. The CAO object creates an instance of the COM object to be exposed. The methods of the CAO object then pass through the COM object layer. These classes I put in a file called server.cs and compiled to an assembly named Server.dll

I wanted to use IIS as the host for my remote classes, so I needed to do a couple of things to enable this. First, I created a virtual directory in the IIS admin. In that virtual directory, I created a bin directory. I copied my Shared.dll and Server.dll into the bin directory, along with the interop.ComObject.dll. Finally, I created a web.config file and placed this in the root of the virtual directory. The web.config looked like this:

               objectUri="ClassFactoryURI.soap" />

This was another stumbling block for me. Originally, I had excluded the ".soap" extension from my objectURI. I had read something that indicated that it was unnecessary when hosting your object in IIS. This was dead wrong. Unless your object URI ends with ".soap" or ".rem", IIS will not pass the method calls on to the remoted object. This took me a while to figure out, so don't make the same mistake. Fortunately, everything else was cake from this point, as IIS takes care of all of the nastiness of load balancing, connection pooling, and security for connecting to your remote object.

Finally, it's time to implement the client. Here is my quick and dirty client code:

public class Client
   public static void Main( string[] args )
      ClassFactoryBase factory =
            "http://remotinghostserver/VirtualDirectory/ClassFactoryURI.soap" );
      CAOBase cao = factory.GetCAO();
      if ( cao.COMObjectMethod() )
         MessageBox.Show( "Success!" )

This code goes in Client.cs, compiles to Client.exe, and is deployed with only the Client.exe and Shared.dll. I didn't even need a config file! This is because I'm using the Activator.GetObject method to create an instance of my object. Why am I doing this? Well, another option would be to use soapsuds.exe to generate the metadata for my remoted object and reference this when compiling my client. When done this way, the client can simply use the new keyword when appropriate remoting configuration information is in the app.config file. Very convenient for the code. Unfortunately, soapsuds.exe is broken. For some reason, when you host your remoting classes in IIS, soapsuds makes mistakes when attempting to generate the metadata. The result is that you will successfully expose your class factory, but will get a type case exception when attempting to get an instance of your CAO. This is seriously bad news for the solution I needed to make. Another option would be to use share interfaces (as opposed to share base abstract classes). When using share interfaces, you can again configure the app.config file to allow for the new keyword to be used. However, there is another gotcha here. When using shared interfaces, the CAOs instances can not be passed as arguments to other methods on other remote objects. For our solution, several of the CAOs need to interact with each other. Using abstract base classes allows us to pass these references as arguments to our other remote objects. The only drawback here is that we are forced to use the Activator.GetObject() call to instantiate our remote object rather than the new keyword. It's a small price to pay I think.

So what do I do from here? The next thing I need to do is verify that the object lifetime is being managed properly. I don't want to strand a bunch of instances of my remote objects on the server. So my next effort will be to investigate CAO object lifetime leases. Once I get there and interesting information to pass on, I'll be sure to post it here.

Game Room

Today, we piled the family in the Bravada and went on a little adventure. Our first stop was to the Lowes where we needed to return fireplace doors. Jenn had ordered a nice set of fireplace doors from the Lowes website. They were special ordered, and we waiting anxiously for almost a month for them to arrive. To our major disappointment, the website failed to notify us that these doors were for installation on a MASONRY FIREPLACE ONLY! Crap! We have a prefab fireplace, and there was no way it was going to work. So today was our day to trudge into Lowes to return the doors. We were afraid it was going to be a big hassle, as they were special order. Lowes impressed us again with their customer service. They took it back and gave us a credit on our credit card, no questions asked. We so prefer going to Lowes over Home Depot for their service. The local Home Depot has terrible service. We went there one time to price carpet, and it was as if we were asking the guy to give blood or something. No one wanted to help.

I'm rambling. Back to the adventure. Our next stop was to eat some lunch (Burger King), and then over to Watson's. Jenn had read that Watsons was at one time a vendor for fireplace doors for our particular model fireplace. Turns out, they stopped selling them a couple of years ago, but we still had fun wandering around the show room. Then, we got into trouble. We saw a display room, a game room, that had everything we wanted for the basement. There was a pool table, a card table, a bar, an electric fireplace, a wall table, bar stools, chairs, and gaming equipment. It had the works. And it was only $7,500! We were sooooo tempted to break with our budget and buy it all, but reason got the better of us. It is getting close to Christmas, and we had already set our Christmas budget, which was nowhere near the cost of the room. We're still paying on the car, and we are overpaying on the house payment so we can get rid of our PMI. Our budget is really tight right now, and to get the game room would have been fun, but it would have been murder on our money situation. Still, we drove home trying to think of ways we could round up that kind of money in a hurry. There was another room there that was priced $1,000 lower, missing just the fireplace and wall table. That would have been just as good. We mulled over getting extra jobs, asking for extra hours, garage sale.... how could we do it.

By the time we got home we realized that there were other things on our agenda that we needed to look after first. Sure, it would a TON of fun to get a fully equipped game room. However, I've needed a new office suite since we moved back from Maryland. We also want to get a sunroom / deck for our backyard. That is something that we budgeted for when we talked with our financial advisor. I just got a nice table topper for my birthday too. That will be great as a card table when we want to have folks over to play. We'd still love to do it, but I think we're going to have to put it off for at least another couple of years.

Movie Review: The Incredibles

Tonight I got a special birthday treat. My mom came down to watch Corbin so Jenn and I could go out on a date! We went to see the movie "The Incredibles", which is the latest Disney / Pixar film. It was great! It is really amazing to see how far animation has come. Jenn remarked to me how she was watching an old Bugs Bunny cartoon with Corbin a couple of days ago, and the difference from Bugs Bunny to the Incredibles was...well, incredible! A movie is more than just pretty pictures though, and this one had a pretty good story. The plot surrounds a family of super heros trying to get by as average citizens in the world. A series of lawsuits against the supers has led to them all entering a sort of protection program where they must live out their lives without displaying their powers. Mr. Incredible and ElastiGirl got married and had a family. Mr. Incredible, aka Bob Parr, is going through something of a mid-life crisis. He longs for the excitement of doing what he was meant to do: saving those in need. He and one of his super buddies sneak off once a week to listen to the police scanner, and occassionally sneak in a little action. Meanwhile, Elastigirl, aka Helen Parr, is trying to keep up with the demands of raising the three children. I won't ruin the movie for you by spelling out all of the plot points, but the film does a great job in finding the humor in day to day family life. Each of the children have powers that are an allegory to the typical behavior for kids. It was neat to see super heros that had human traits and problems. The movie had plenty of action, humor, and all around fun. If you have the opportunity, I would recommend that this be the next movie you see.

My Continuing Fight with .NET Remoting

So I went for the sleep option around 3:15am. I should have picked option two (coffee) because my brain was still way too active to let me fall asleep. I kept thinking about different options to try. In any case, I'm a couple of steps close to getting my solution to work. For one of our systems, we have a set of COM objects that are hosted in COM+. These objects are exported through COM+ / DCOM to several clients across a LAN / WAN environment. The clients create an instance of a broker object exposed through COM+, and then use that broker to create instances of other server business objects (SBOs). Each of these instances is intended to hold state (they connect to a variety of ERP and database systems, so opening and closing them often has a high transaction cost). Our objective with this project is two-fold. First, the client that activates these distributed components is Wonderware's InTouch 7.x. The license costs for our customer are getting a little high, so they are looking to replace the InTouch client with a .NET client written in C#. I had originally considered using XML Web Services hosted in IIS to wrap the functionality of the SBOs. This was before I learned that the SBOs held state. XML Web Services is a stateless architecture, so it wouldn't due for accomplishing our task. So that is why I chose to go the .NET Remoting route. I'm still going to use IIS to host the remoting component, as it will save me time by acting as the hosting control, provide security, and also take care of channel and load management.

So after banging my head on the wall last night, I got this far: I have a Client Activated Object (CAO) that is hosted by IIS. I've written the web.config file to expose the CAO. I used "soapsuds.exe -nowp -ia:MyRemoteCode -oa:MyRemoteCode_Proxy.dll" to generate a meta-data proxy for the remote object. I created a client that registers the remote object, and then creates an instance of it. So far so good. Here is where the trouble starts though. I create a second remoteable class that also inherits from MarshalByRefObject. This one is instantiated by making a method call on the first remoted object. However, when the client calls "firstRemoteObject.GetSecondRemoteObject()" I get a type mismatch error on the return type. Evidently, the meta-data generated by soapsuds.exe doesn't exactly match the typing information passed back by the remote call. So this is where I am stuck tonight. I spent the day working on another project, so I haven't been able to touch it yet. If I can stay concious long enough I may try again tonight. If I get it solved, I'll post sample code.

CAOs hosted by IIS that implement COM Interop Interfaces

Wow, did I have an intrigueing assignment today. I have a client that is going to be developed in C# (Microsoft .NET technology). This client is going to remotely access another .NET assembly on a server machine, across the network. The server side assembly is going to be client activated (CAO), and the CAO needs to expose the functionality of a COM component through interop. I thought I could just create a class that inherits from MarshalByRefObject and implements the interface of the interop component.... but NOOOOOO! Couldn't be that simple could it? So instead, I'm sitting here at 2am still banging out the intricacies of creating and passing references around across application domains. So far, I've learned that implenting the interface for an interop component is seriously bad news. Forget about remoting your object after you've done that. Next, don't every install the .NET Framework 2.0 beta on your primary development box. It did me the courtesy of modifying all of my IIS virtual directories to automatically select the 2.0 revision rather than the stable 1.1 revision. So now I need to manually select 1.1 for all existing and newly created virtual directories. Thanks .NET 2.0. So now my stickler is trying to figure out how to get two remoted objects that are hosted in the same application domain to interact. Not a simple task so far. More on this wonderful story once I get a cup of coffee... or sleep.

Election Day

Today is election day! I spent two hours waiting in line to cast my votes, but I'm glad that I did. So if you haven't done so already, go out there and cast your vote! I don't care if you are for my candidate or against, I would just like to see every American do their civic duty and vote.

Fun Weekend

Like I said before, the week was pretty stressful. Fortunately, Jenn and I had a fun, stress free weekend planned. Corbin was going to spend the night at his grandparents' house while Jenn and I had a night to ourselves. Saturday, we met with Jenn's folks and dropped Corbin off, then headed down to have lunch / dinner at The Cheesecake Factory. Normally we don't go there, as there is usually a two to three hour wait. The food is sooooo good though. It was 2:30 in the afternoon, and we figured we might have a good shot of getting in quick since we would be between the lunch and dinner crowds. We were right on, and got in after just a fifteen minute wait. I had some outstanding meatloaf, and Jenn had the tenderloin. And, of course, we brought home some delicious cheesecake (me: Boston Creme, jenn: White Chocolate Rasberry Truffle).

We stopped at Blockbuster on the way home to grab some movies: Mystic River and The Day After Tomorrow. Mystic River was pretty good, but my parents had absolutely raved about the movie. We didn't think it was quite rave worthy (we figured it out in the first 20 minutes), but it was still pretty good. The Day After Tomorrow wasn't all that great. Some of the special effects were impressive, but there just wasn't a story there. It was like Deep Impact, in that it dealt with the end of the world. However, Deep Impact was much better in that it focused on how we deal with death. How we come to terms with our lives, and what we would do if we knew our own end was near. TDAT wasn't like that at all. In TDAT, it was just an action flick about cheating death. Much less entertaining.

As we were watching the movies, Jenn and I indulged in something we haven't been able to in a while: alcohol. We don't feel that it would be appropriate to drink around Corbin, so we haven't had hard drinks in a while. So with Corbin away for the night, we decided to go for it. Jenn got together with her old friend The Captain, and I enjoyed some vodka and tonic. It was nice to be two adults for night rather than two parents.

This morning, we realized just how much Corbin brings to our lives. The house was quiet... too quiet. We really didn't have a whole lot to do either. Corbin fills our days. Sometimes it is hard, but he brings so much joy for the two of us that we are ready to go pick him up and get back to being parents again.


Work life has gotten pretty hectic for me lately. I've made it known that I'd like to have more responsibility at work. I'd like to move into more of a leadership role. I got what I asked for, and then some. I currently have eight different customers that I am working for. That means I get to spend about one hour a day focusing on each customer. The schedules for each of these projects are extremely tight too. Due to the number of projects and their schedule, I've been working some pretty long hours (53 hours last week, 15 on Friday alone). It is like a dance trying to give all of these folks (the customers) the impression that I am 100% dedicated to them, when in reality I hardly have time to do anything for them.

One good thing, though, is that all of these projects are interesting. One project is to upgrade a visual basic application that connects to an OS390 mainframe computer. Another is to upgrade an application from an InTouch 7.0 HMI to a .NET Client written in C#. Another project is to install better vision system cameras for reading a 2-D barcode on a part. Project numbers four and five are technical support for manufacturing lines that we have already put into production. Project six is to perform subtle upgrades on one of the first, and most successful projects I have done at Flexware. Project seven involves XML Web Services communicating to handheld Windows devices embedded in a barcode scanner. And finally I have some fun sales stuff to do for potential customers. I really wish that I could take the time to pick one, or maybe two of these and just focus on it, but I know that I am doing a more for our company by spreading myself around. The more jobs I can work on, the more money that we make. Plus, this is giving me the experience I need to be a leader within the company.

So, yeah, I'm a little stressed right now. This kind of stress is sort of good in that it shows how much business we are doing. My only fear is that it will take away from my being able to spend time with my family. I'll have to keep a close eye on my hours, and I know that Jenn will give me a gentle reminder if I ever start spending too much time with work, and not enough time with her and Corbin. My family comes first in my life, work can wait.

Craziness at Jimmy Johns

Today was a very busy day. I was all over the place at work. By the end of the day, I was over on the West side of Indy for a meeting with a client. I was hustling to get back to class. Tonight was our last meeting for Marketing class, and we had a final presentation to do. I needed some food to get me through, so I stopped at Jimmy Johns on the way.

When I stopped in the JJ, I gave the lady at the counter my order for a sandwich. The conversation went like this:

JJ LADY: Where do you work?

ME: Flexware. It's a software development company.

JJ LADY: Are you going to work or coming from work?

ME: Coming from work, but going to class

JJ LADY: That's cool. Want a party platter?

ME: Umm... no.

JJ LADY: It's free

I didn't know what to say. I looked at the guy doing the dishes, and he was just nodding his head, that yes, it was free, no strings attached. So I got to be the hero by bringing 35 free Jimmy Johns subs to class.

Turns out, they screwed up the scheduled at JJ. They made the party planner, but the order wasn't due for another week. They either had to get rid of the food, or throw it out, and I was the only person in the store at the time. What a windfall!


On our trip to the zoo, we also went to the White River Gardens. They were holding an exhibit of banzai and ikebana. It was really interesting. It was also a nice, quiet change of pace from the zoo. Corbin was asleep, and hardly anyone was in the gardens. The zoo was a mad house of kids running around in their costumes. The zoo was dressed up for Haunted Zoo Weekend, and the kids were there for the first day of trick or treating. It was neat to see so many excited kids running around in their costumes, but by the end of the day, we were ready for a break. The gardens were just what we needed.

The banzai and ikebana display was really neat. I had always thought that banzai was a shrub trimming hobby. I never realized that these were full size trees growing in pots! One that caught my eye had very tiny flowers. I tried to take a picture of it, but the detail of the flowers didn't come through in the picture. Once outside, the tranquility of the gardens was very relaxing. Corbin woke up when we were about half way through our stroll. It was a nice way to wind down before the drive home. Hopefully we can make a return trip to the gardens in the spring, and catch all of the plants as they bloom.

How the electoral college system works, and a little bit of history.


Looks like Bill O'Reilly is about to get knocked down a peg. I know several folks that enjoy listening to this right leaning topics commentator. It seems that Bill has a dark side that doesn't come through on "The Factor". The Smoking Gun has the full documentation of the complaint against him by a Fox News producer. Read on for some interesting gossip.

Political Opinion

How can you not be involved in some political discussion lately? With the election just weeks away, the political arguments are at a fevered pitch everywhere you turn. Invariably the subject of lunchtime chatter at work turns to the candidates at the various levels of government. Jenn and I even have a little back and forth while we are at home. Jenn and I disagree about who we are going to vote for, but I'm really proud of Jenn for the amount of thought she has put into her vote. I get frustrated with folks that blindly vote for a particular party. I have a lot more respect for someone that has taken the time to familiarize themselves with the platforms and topics, and who has a definitive reason for voting for a particular candidate.

Lately, I have heard a lot of rumbling at various places to the effect of, "If you are a good Christian, you must vote for George Bush." I disagree (I used different words the first time I typed this up, but I'm trying not to be inflamatory). I believe promoting my personal, religious beliefs is a burden that I must personally bear, not one that my government should enforce on the population. The beauty of our system of government in America is that we have the right to disagree with one another. It is the variety of cultures, beliefs, values, and morals that makes our country so great. If we promote a government that attempts to restrict those freedoms, then we are tearing apart what makes our country the envy of the world. To say that any one religious group has a duty to vote for a particular candidate seems ludicrous to me. The only case where I can see that being a viable argument were if a candidate was making an attempt to outlaw a form of religion.

George Bush is running on a platform that harmonizes with many of the beliefs of the Christian Right. If you feel that those beliefs should be enacted and enforced as law, then by all means vote for Bush. But don't feel that you are any greater or lesser of a Christian based on who you vote for. God loves all of his children equally, regardless of political affiliation.


We've been subscribing to the HDTV service from Insight in our area for over a year now, and while we haven't had any technical problems, I feel that the content still has a long way to go. There are currently a handful of HD stations available:

  • HBO-HD
  • NBC-HD
  • ABC-HD
  • CBS-HD
  • Discovery HD Theater
  • Bravo-HD
  • PBS-HD
  • HD-NET
  • HD-Movies

And the pricing is a little crazy too. It's $13 a month to rent the HD Digital set top box with DVR (Motorola). When you rent the HD box, you get NBC, CBS, ABC, PBS, and Bravo in HD. For an extra $10 / month you can add HD-NET, HD-Movies, ESPN-HD, and Discovery HD Theater. That's $2.50 a channel. HBO-HD will run you another $10 (you get the standard set of digital HBO's as well), and SHO-HD is $13. Essentially, if you wanted to subscribe to every feature available in my area, and rent only one box, your total cable and internet bill would run in excess of $180 / month. Mine currently sits at $117 (digital box, digital subscription, HBO, Starz, internet). If all you were interested in getting were the 11 HD stations, you would be paying:

  • $40 Digital Subscription
  • $13 HD Receiver rental
  • $10 HBO
  • $13 Showtime
  • $10 HD-NET, HD-Movies, ESPN-HD, Discovery HD Theater
  • TOTAL: $86 / month + tax!

That's nearly $8 per channel! Even more discouraging is that there is very little network programming that is broadcast in HD. What you end up with are standard resolution programs that have been upconverted to HD resolution. This looks terrible, as you end up with all sorts of distortion, tracing, jaggies, and artifacts. America's Funniest Home Videos is notoriously bad, as they are upconverting the already poor video from home cameras.

I say all this bad stuff, yet we're still paying for the service. Why? The content that does come in HD is amazing! The difference in picture quality between the standard def CSI and HD CSI is amazing (we love CSI). I'm hoping that we get FOX soon, as I know that they are broadcasting over the air HD, as are UPN and WB. I guess it is all just a matter of time.

Howard Stern on Sirius Radio

I like my Sirius radio. I listen to it throughout the day while I am at work, and have it on the road in my car. Today, the announcement came out that in January of 2006, Howard Stern will switch to broadcasting on Sirius. Well, that's great for folks that listen to him, and I'm sure it will do wonders for Sirius stock price and subscription rates, but I don't listen to Howard. I got to hear all about the big news all morning, though, as the music was interrupted every half hour to announce that Stern is coming to Sirius. This was really irritating. Every station was running the announcement, and it ran every half hour. I couldn't get away from it. What's more, all of the stations staggered the announcement, so I would hear it on one station, flip to another, and hear it again! Just as a reminder, his show won't start for more than a year. Why do I need this constant reminder right now?

Political Ads

I've been sort of sitting the fence on the race for Governor this year. Mitch Daniels came into our office, and I wasn't really impressed with him. Kernan seemed like a pretty good guy, and I generally agree with the Democratic party platform, but I really didn't have strong feelings towards either candidate. If anything, I was leaning towards Kernan. Then, the latest round of negative ads came out from the Kernan camp bashing Daniels on the IPALCO stock matter. Negative ads don't motivate me to vote for either candidate. In fact, they usually make me dislike the candidate that sponsored the ad. So this knocked Kernan down a peg in my mind. Then, Daniels came out with the ads explaining the IPALCO situation, and then saying that he would not run any negative ads in the campaign. He ends the ad by saying something to the effect of, "Let's show em' we can win without the negative ads." That really struck a chord with me. I really dislike negative ad campaigning. I don't think it does anything to help the election, and I really wish all politicians would stop using them. Tell me why I should vote for you, not why I should not vote for your opponent. So after this round of negative ads, I'm leaning a little further towards Daniels, if for no other reason than to send a message that I'm tired of negative ad campaigns.

Debate Spoof

The two candidates for US president recently had a debate on the subject of foreign policy and defense. Jenn and I watched the first hour, then got bored and switched off to something else. We had even less tolerance for the Vice Presidential debates. I saw this clip on the web the other day, and it cracked me up. The guy spoofing Bush has the voice down. If you couldn't see him, you would swear it is our commander in chief.

Favorite Magazine

My favorite magazine is WIRED. I can't get enough of it. It contains a variety of current events and opinion stories, usually with a technology bias. I look forward to getting each month so that I can check out all of the latest drool-worthy gadgets and the latest in technology trends. It's almost like a fashion magazine for geeks. I managed to get my dad hooked on it too, and I've been using some of the articles as references form my MBA course. I highly recommend that anyone who enjoys technology, the internet, or computing pick up a copy and read through it. You just might like it.

Tooth Issues

A couple of years ago, I broke off one of my teeth in my sleep. Jenn and I were living in the apartment at the time, and in the middle of the night I woke up from a weird dream when I heard a loud popping sound. My jaw was a little sore, and my mouth felt funny. I went to bathroom and saw that I had broken my tooth!

I had a lot of dental work done when I was younger. I had spacers, braces, fillings, and veneers on both of the secondary upper incisors. The teeth with the veneers were very small, much smaller than the rest of my teeth, and it resulted in a large gap between the teeth. The veneers were there to fill in the gaps. Well, it was one of the veneered teeth that I broke. I don't know exactly what I did, but I can only imagine that I had been working my lower jaw in my sleep, and just got into a weird position that put too much pressure on that tooth. I had planned to visit a customer a couple hours away that morning, and there was no way I could miss the appointment, so I stuffed the tooth back into place in the morning and just prayed that it would hold through the day until I could get to the dentist.

I had a late appointment with the dentist that day, and I found out the extent of the damage. The tooth behind the veneer had broken off almost below the gum line. This is bad, because it makes putting on a crown very difficult. There was very little tooth left to work with, and it was a small tooth to begin, so there wasn't much room to plant the anchor for the crown. The alternative would be to install a bridge, which would mean filing down the two neighboring teeth, a canine and an incisor, and using those to anchor the bridge. That wouldn't be any fun, so my dentist and I decided to try the crown. So far, it has worked out pretty well.

Anyway, the whole reason I bring up this story is that I had a checkup with the dentist this week. All of my teeth were doing fine, but the pocket between the gum and the broken tooth has opened up quite a bit. This is usually a sign of periodontal disease. Bacteria can get lodged in the gap between the tooth and gum, and that will cause plaque build up, and kill the gum and tooth. The broken tooth has always been sensitive since the crown was installed, but I took care to make sure I brushed it, and occassionally flossed. During past checkups, the pocket was bigger than on other teeth, but nothing the doctor was worried about. This time, though, I could tell the probe was going a lot deeper, and it hurt a lot more.

The next step is for me to go in to the dentist in two weeks to have "therapy". This involves injecting an antibiotic between the tooth and gum. This will help to kill the bacteria, and hopefully give the gums a chance to heal and close the pocket. There are other alternatives as well, but most are pretty painful. I could have root planing performed, where they would essentially sand down the edge of the root, and possibly trim the gums a bit. That hurts just thinking about it. So hopefully the antibiotics, and some more focused hygiene effort on my part will help get it done. Interestingly enough, Lysterine is a highly effect, non-prescription way to fight the problem as well.

I'll post an update once I get the antibiotic treatment. Wish me luck!

I know this is a crappy picture, but this is Pat H., our facilitator for MGT 541 - Advanced Marketing Management. She is very friendly, quick to smile, and a little bubbly. She is also extraordinarily proud of her daughter, who just graduated from medical school. It looks like the next six weeks should be a welcome relief from the rigors of Statistics. This is good, as our next course will be another long one in economics.


I recently had the opportunity to interview several people for some contract positions we have open. It gave me a bit of perspective, a lesson I did not expect to learn. There were four candidates for the job: an Indian woman, an Indian man, and two American men. The difference in the attitudes was amazing. I don't know if I can truly attribute it to nationality alone, but there was clearly a difference in the way the interviews went. Both Indian interviewees were very good. I came away from the interview with a sense of the drive they had to get a job, and the effort they were willing to put in. Each had worked several contracts before, and in the meantime between jobs, had secured a variety of certifications. The Americans, on the other hand, were more relaxed. I didn't get a sense that they took the interviews as seriously. There was no sense of immediacy. To be fair, one of the American interviewees was currently employed, and was only "testing the waters".

The perspective I gained is that, perhaps we need to take a moment to reflect on how fortunate we are. The USA is an amazing place to live, and these interviews reminded me that this truly is the land of opportunity. I may sometimes feel envy that I can't drive a luxury car, or that I don't have some of the latest gadgets. When I sit here now and think about it though, how blessed am I to have all that I do? Jenn and I own two cars and a home, which we can easily afford. We didn't worry about Jenn leaving her job to take on the full-time work of caring for Corbin. We have so much that others in the world would consider luxuries, but we take them for granted.

I am glad I had the opportunity to do these interviews. It gave me the chance to reflect on my situation, and be grateful that I am an American.

Book Review : "How to Win Friends and Influence People"

On the suggestion of a colleague, I read the book "How to Win Friends and Influence People" by Dale Carnegie. I had to swallow my pride and tread through the self-help section of the bookstore to find it (all the while thinking "I am such a loser to buy a book on how to make friends"), but it was worth the effort. The book is laid out as a set of lessons on how to build relationships, get folks to agree with you, and lead people without resentment. In large part, these are lessons in humility. Although this may often be mistaken for being whipped, humbling ourselves before others can often lead to gaining their trust, and ultimately their loyalty.

This book was originally written in the 1930's, and some of the language is telling of the books age. The points made are solid, and although they are often "no-duh" type comments, they are nonetheless excellent points to review from time to time. Most of the examples in the book relate to selling and salesmanship, but they are equally applicable to anyone else that deals with people in their day(and who doesn't?) As you read through the book, the examples given to reenforce the tips given are somewhat idealistic and utopian. Most examples lead to the person being promoted to president, making millions, or becoming the exceedingly famous. While such outcomes cannot be expected in all cases, I feel that anyone could expect to improve their social interactions in at least some small part through the practice of these suggestions.

Listed below are the main points made within the book.

Part One
Fundamental Techniques in Handling People

1. Don't criticize, condemn or complain.
2. Give honest and sincere appreciation.
3. Arouse in the other person an eager want.

Part Two
Six ways to make people like you

1. Become genuinely interested in other people.
2. Smile.
3. Remember that a person's name is to that person the sweetest and most important sound in any language.
4. Be a good listener. Encourage others to talk about themselves.
5. Talk in terms of the other person's interests.
6. Make the other person feel important - and do it sincerely.

Part Three
Win people to your way of thinking

1. The only way to get the best of an argument is to avoid it.
2. Show respect for the other person's opinions. Never say, "You're wrong."
3. If you are wrong, admit it quickly and emphatically.
4. Begin in a friendly way.
5. Get the other person saying "yes, yes" immediately.
6. Let the other person do a great deal of the talking.
7. Let the other person feel that the idea is his or hers.
8. Try honestly to see things from the other person's point of view.
9. Be sympathetic with the other person's ideas and desires.
10. Appeal to the nobler motives.
11. Dramatize your ideas.
12. Throw down a challenge.

Part Four
Be a Leader: How to Change People Without Giving Offense or Arousing Resentment
A leader's job often includes changing your people's attitudes and behavior. Some suggestions to accomplish this:

1. Begin with praise and honest appreciation.
2. Call attention to people's mistakes indirectly.
3. Talk about your own mistakes before criticizing the other person.
4. Ask questions instead of giving direct orders.
5. Let the other person save face.
6. Praise the slightest improvement and praise every improvement. Be "hearty in your approbation and lavish in your praise."
7. Give the other person a fine reputation to live up to.
8. Use encouragement. Make the fault seem easy to correct.
9. Make the other person happy about doing the thing you suggest.

I would highly recommend that anyone take the time to at least skim the book (perhaps the next time you are at Barnes & Noble).


I've been craving a good greek gyro for a while now. I think the Olympic Games sparked my hunger. It got me to thinking about greek food, and how long it had been since I had a good gyro. I checked out the phone book to see if there were any good greek restaurants nearby, but I was out of luck. There was a rumor that the only one nearby had recently closed. I remember Queen Gyros in Kokomo was a good place to run in and get a quick gyro. It looked like you might catch something there (disease or bullet, your choice) but the food was great. Tonight, as we were trying to decide on where to go to eat, we wandered by Opa! It is a nice little greek fast food chain. It hit the spot perfectly. I had some spiced lamb on some delicious pita bread, a caesar salad, and I topped it off with a little baklava. Mmmm boy! I'm all set for some sleep now.

Vancouver by night. This is the view outside of my window right now.

Vancouver Trip - Day 1

Today is my first day of the Vancouver trip. I don't look that bad considering I haven't slept in almost 36 hours. My flight this morning was at 6am, and I had to be at the airport before 5am. That meant leaving the house no later than 4am. So I figured I had better start getting read to go at 2:30am. I usually stay up a little past midnight most nights. I thought it would be futile to get just two hours of sleep, so I stayed up the whole night. I had class the night before, and I didn't get home until past 10pm. That gave me a bit of time to spend with Jenn before she went to bed. I played some video games for a couple of hours, then hit the shower to start my day.

My flights went really well. Two of my coworkers, Hack and Andy, left yesterday. They actually missed their scheduled flight and had to take a later one. They arrived at the airport at 5am for their flight, the same one I took today, only to find that the line for security was wrapped clear around the ticketing area. There were well over 500 people in line, and they were not able to make it through in time for their flight. They were able to find a later flight that left at 4:30pm, and made that one.

I was much more fortunate. I arrived at the airport to see only two folks in front of me at the ticketing / check-in counter. The security line was nearly empty, and although I received the usual airport mollestation (remove shoes, belt, fold pants down, etc.) the security check went very quickly. I read a book as I waited the remaining hour to board my flight. I had a brief layover in Chicago on my way, and that was uneventful as well. I guess Monday is the bad day to travel, and Tuesday is the good one.

Once here, the guys picked me up at the airport and I got checked in at the hotel. We then grabbed a bite to eat at the A&W restaurant on the first floor of the building we are working in, which is right next door to the hotel. It is fortunate that we won't need to do much driving, as the streets and traffic are pretty confusing.

My lack of sleep is really starting to hit me now though. I would love to just lay down and take a nap, but I know that would be bad. There is a two hour time difference, and if I nap now I'll never sleep through the night. I closed my eyes for part of the flights, but I wouldn't qualify it as sleep. I got some rest out of it, but the seats are so uncomfortable that you can't truly sleep. My arms and legs fell asleep at one point, and I had some serious pins and needles action as I tried to get the blood flowing again. I'm not sure what our dinner plans are tonight, but I'm thinking I had better grab a cup of joe as part of my meal to make sure that I don't fall asleep to early. I'll also need to be very certain that I get the alarm set before my head hits the bed. Otherwise, I run the risk of not waking up in time!

That's the update for now. I'll have more info as the week presses on.

There is Andy, toiling away at his station.

MBA 326 at IWU

I'm taking classes at Indiana Wesleyan towards earning my Masters in Business Administration. We meet every Monday evening from 6-10pm for our workshops. The program is divided up into several courses, each course spanning several weeks. We only take one course at a time, which is nice as it allows us to concentrate on just one subject at a time. Tonight we finished up Advanced Statistical Analysis. It was a tough one for several students, but I think I managed to get through it successfully. Next is Advanced Marketing Management. All of the students in my course will stay together as a group, called MBA 326, and we will take all of the courses together.

As part of our coursework, the MBA 326 group is subdivided into smaller work groups. Each group is responsible for working together on group assignments, papers, and presentations. I often meet with my group outside of class, other on-line or in person, to work through some of our major assignments. I'll chat with Jenn about these folks, but she has never met any of them. Tonight, since I had the new webcam with me, I decided to take some pictures to fill in the gaps.

Dr. Dele (Dele is short for Oladele, his first name). He was our instructor for statistics.

A look at the class, from my seat for the day. (modified seating due to presentations)

My Work Group
OctaviusNaelMegan (on left) and Rita (on Right)

These are the folks I spend time with every Monday night.

New Toy!

I've got a new toy to play with. I'm taking a trip to Vancouver this week, and I wanted to be able to stay in touch with Jenn and Corbin. I stopped at Target and picked up the GE/Jasco MiniCam Pro with Audio. It is a tiny web cam that mounts on my laptop monitor. It was only $30, which was a good deal too. Now I can do some video conferencing from Canada with the family.

Television Sucks

I'm really unimpressed with the quality of television programming lately. Jenn and I are sitting here, and I'm trying to ignore Big Brother 5. I think the Disposable Heroes of Hiphoprisy have it right: Television is the Drug of the Nation. Jenn is addicted to reality TV, and I'm always astounded at the stupidity of the "stars" of these shows. Big Brother 5 is a prime example. People on the show are basing their decisions on, I kid you not, a pinky swear. A pinky freaking swear! I can't remember a time, even in grade school, when a pinky swear had any merit. To see grown adults basing their decisions on such a moronic form of contract totally boggles my mind.

Now The Apprentice is on, another reality show where the contestants try to earn a job from Donald Trump. Seeing as how the Trump empire recently filed bankruptcy, I'm thinking this may not be the wisest move in the world. Prior to either of these shows, the pilot for "Joey" was on. It followed in the same footsteps as friends. That is to say, it made up for poor acting and worse writing with a thick layer of laugh track. Ugh...

There are only a few programs I enjoy watching on TV anymore. I like watching some of the specials on Discovery and TLC, because I can actually learn something interesting. I like watching Last Comic Standing because it makes me laugh. I enjoy CSI for the suspense and intrigue. Otherwise, I'd rather be on the PC, browsing the web, keeping up on current events, playing video games, or in some way keep my brain active. Television just seems like brain rot lately.

Funny Blog

My Aunt Marta referenced me to this blog. This poor woman seems to be having some family issues. The way she writes is a riot too.

Four years at Flexware

This week marked my fourth year with Flexware. It has been a pretty wild ride so far. We've gone from a run down blue pole barn to a brand new building that we built. I've had my gripes at Flexware, like any employee does at any business, but overall I've been treated very well. I've made new friends and enjoyed the company of an old friend. I've also learned an incredible amount. Before I started at Flexware, all of my development expertise was on UNIX based systems. I was a whiz at X-Windows and C coding, but I had no idea what I was in for. I had to quickly acclimate myself to the Microsoft way of programming. It was a bumpy start, but before I knew it, I was certified as a Visual Basic developer, and developing some fairly interesting applications. Now I would consider myself a whiz at the Microsoft way, and I'm working towards becoming a Microsoft Certified Solution Developer using C# and the .NET Framework. I've also learned how to interact with interesting pieces of equipment. I've worked with barcode scanners, vision equipment, marking stations, stencilers, printers, presses, etc., etc. Just about anything and everything you might find on the shop floor with an ethernet or serial port. The variety of things I see in my job keeps it interesting.

I'm working towards my MBA now, and I'm hoping it leads me to even greater things. My goal is to become a proficient team leader and project manager. This week, I took some of my first steps at Flexware towards fulfilling that goal. We have an existing customer who we worked with to create a part tracking system. Unfortunately, the system never worked to the customer's satisfaction. The customer withheld their last payment. We have argued that it is a case of buy-in by the operators, and they have argued that the system simply doesn't work. Flexware has never abandoned a project, and we weren't going to make this the first one. I had a meeting this morning with our company president, and several other folks intimately involved with the project. The previous team lead has now been tasked with one of our new opportunities, and is not available to continue on this project. This is giving me the opportunity to assume the roll of project lead.

I'm really excited about this opportunity, and I'm a little scared at the same time. I know that this is a big deal, and it means a lot to Flexware as a company that we wrap it up and satisfy the customer. I also know that the deck is stacked against me. We have an angry customer, angry sub-contractors, angry-operators, and a budget that has been completely exhausted. Somehow, I need to find a way to get the system to a point where the customer is satisfied, and at the same time not break the bank. And I need to do all of this before the end of the year. It won't be an easy task, but these are the kind of opportunities that I want. This is going to be my first real test to see if I am going to make it as a project lead. I get started on Tuesday. I'll give it my all and pray for the best.


The latest round of political conventions have me worried about the future of our country. I watched portions of both the DNC and the RNC. I just can't understand the level of excitement and enthusiasm that the delegates to the conventions have for their candidates. I can't help but think of fanatical cults, such as those led by David Koresh in Waco, TX, or The People's Temple that led to the Jonestown massacre. The folks at the convention hang on every word of the speaker, and erupt into chants and cheers at the end of each sentence. It is really frightening how much the conventions resemble the rallys of fanatical religious cults. Should I feel this way about a candidate? Am I missing something that these folks have figured out?

I know that the conventions are just a show, and I figure that the delegates are showing this level of zeal in the hopes that folks will think "Gee, if they love him that much, maybe I should too." Unfortunately, that is the same tactic that works in the cults that have led to mass suicides. Is The United States headed towards mass suicide? I certainly hope not. That is the impression I get as I watch the conventions though. Neither candidate truly told me anything that would convince me that they would be exceptionally fit to steer the world's number one super power for the next four years. In fact, I was convinced more to NOT vote for a candidate based on what I heard. From Bush's speach, his comments that he would never allow for the consideration of Gay Rights really turned me off. It really disappoints me that our government would continue to propogate methods of discriminating against any person. I thought we learned that lesson in the last millenium. Not that Kerry had anything better to say. He bragged on a questionable war record, and bashed his opponent. Is it any wonder that fewer americans turn out to vote each year?

Both candidates have bragged on questionable material (Bush: Employment, Kerry: War Record). Neither has convinced me that they deserve my vote. So who do I vote for? Do I throw away my vote like I did four years ago and hand-write Nader on my ticket? No, I refuse to that again. Do I skip election day altogether? No, I have a patriotic duty to exercise my right to vote. So what do I do when I don't feel either candidate is best for the job?

Right now, I'm leaning towards Kerry. I've seen what Bush will do with a presidency, and I don't want four more years of our nation picking fights. During his term, Bush formed an "Axis of Evil" list that really jeopardized the US. He managed to piss off not just middle easterners, but North Korea and Cuba too. I agree that the move to attack in Afghanistan was the right move, but I disagree with our preemptive strike on Iraq. You're free to disagree with me. That's the great thing about living in a free country: we don't always have to agree.

This November, fewer than half the nation will participate in the vote. Of those folks, roughly half will be satisfied with the outcome of the election. What happens when only a quarter of your population is happy with the man elected to represent the entire nation? I guess we'll just have to wait and see. As for me, I'll just cross my fingers that we're not all getting fit for our purple jammies and black Nikes just yet.

Getting Old

I'm getting old. A few weeks ago, I really hurt my back picking Corbin up out of the jumper. My back hurt for the entire next week. I did the same thing a couple of months ago playing volleyball. I took a couple of weeks off from volleyball to let my back heal. Last night was my first night back. Now my shoulder is sore. I went to the doctor last Tuesday to see if I had really done something wrong. He felt really bad about telling me, but he said that I was just experiencing some of the normal things that happen as you get old. I'm not ready to be old yet. I still like to play volleyball, stay up late playing video games, sleep in on the weekends, and generally be a kid.

I guess I don't feel like a kid all the time. During class, and when I'm at work, I feel like an adult. Otherwise, I'm still an eight year old on the inside. I watch cartoons and play Nintendo. I like the comics section of the newspaper the best. I always thought that becoming a dad would be that defining moment when I started to feel like an adult. Well, it didn't happen. Now I'm looking forward to when Corbin can pick up a controller and play Nintendo with me. I look forward to waking up Saturday mornings with our boy to watch cartoons.

Unfortunately, my body is giving me reminders that I'm not a spring chicken anymore. I don't get over soreness in one night anymore. Now it takes a few days, if not a couple of weeks. If I try to play more than a couple of hours of volleyball, my body starts to complain. Some of it has to do with the fact that I'm not in the same shape I was in during high school. I'm sure that if I was exercising every weekday for two or three hours like I did in high school, I probably would heal a lot faster. Unfortunately, I just don't have the time or the desire to do that anymore.

Hopefully, I can learn my limits and not get sore like this every week. Maybe all of this soreness will result in my being a little strong. Maybe it's a good thing. I'd rather not be sore, and I'd rather not be getting old. As long as I'm a kid at heart, though, I think I'll always feel young.

Make with the Funny

Jenn and I really like Last Comic Standing. Our favorite comedian is John Heffron. He cracks both of us up. Unfortunately, I identify with too much of his routine. Like the part about playing video games for four hours, going to bed, and waking up in the middle of the night thinking "I know how to get past that boss now!" This is season three of Last Comic Standing (LCS) and John is back with the rest of the cast from his season to take on the season one folks. John Heffron won the second season contest, and he looks poised to do it again.

At the end of last season, they showed some of the clips of comics that didn't make the cut. I was surprised to see someone that I recognized. Mark Britten, better known as The China Man, was in the group of cut performers. Jenn and I went to see him with at a local club, and I about fell out of my chair from laughing so hard. He was really funny. Part of his act is a spoof on Arnold Schwarzenegger. Unfortunately, now that Arnold is the governor of California, everyone was doing impressions. Mark only had a couple of minutes to impress the panel, and he made the mistake of using the tired Schwarzenegger routine. It's a real shame too, because his other material is really funny. He also does a lot of the voices for characters in cartoons. Mostly anime stuff, like Dragonball Z. After the show, I got an autographed card that had some of his stats. I've posted the both sides of the card below.

Jade Mason