Tuesday, November 28, 2006

Power lines, KSTP, and DSL filters

We've been living in our current house for a little over two years now. The house is nice, but it's less than a block from some really big power lines. Not the normal residential kind, but the big industrial, 1.21 Gigawatt, make-the-air-buzz-when-it's-raning kind, like this:

Other than the fear of aquiring gradual brain cancer, this was a non-issue. Until we picked up the phone. When you used any land-line phone in the house, regardless of the brand of phone (believe me, we tried many) or the carrier (we tried of few of those as well), you could always hear a local talk AM radio station, loud and clear.

I tried everything I could think of to fix the problem. I even installed new phone wiring between my Vonage box in the basement (Vonage is our phone company du jour) and the phone base unit in the kitchen upstairs. I orginally did this with new standard 4-conductor telephone wire; didn't help a bit. A few days ago I redid the entire run using plenum-grade CAT-5e cable, figuring that the non-twisted telephone wire was picking up lots of interference. That help, a little.

About 6 months ago my neighbor told me he had the same problem and solved it by installing a DSL filter between the phone jack and his phone. By chance I remembered that about a month ago and picked one up, but sort of forgot about it. Well, just tonight after feeling the frustration of my not-so-successful wire replacement project, I remembered the filter I bought, and decided to give it a shot.

It worked!

And here's the little bugger that did the trick.

Being somewhat of a die-hard cable internet subscriber, I guess I've gained a new respect for DSL. :)

Monday, October 23, 2006

Subversion on Windows

Source control has always been a bit problematic in the Microsoft world. Most of us have used Visual SourceSafe quite extensively and don't have to be convinced that it pretty much sucks rocks. The good news is that the souce control story has gotten better in recent years and months. The most notable event was the launch of Team Foundation Server, which comes with Team Source Control, a huge improvement in the Microsoft offering for source control.

However, TFS is not very ideal for single-man shops like myself (yes, I do some software side projects from time to time). It's ideal for teams (even small ones) where collaboration of source code with the software development process is important (this should be the case with any shop). It's also not very free. I'm a bit of a cheap skate, so all-free was definitely more appealing.

In the past I've played with CVS and liked it. It's been around for a long time and has a decent Windows implementation that installs an easy-to-manage Windows service. However, CVS has its well-known shortcomings. These shortcomings are the primary reason for the creation of Subversion (SVN), which is very CVS-like, but better in many ways.

The only down side to SVN, it seemed, was that it didn't have a very good Windows implementation. Specifically, the server install did not include a Windows service. You had to come up with some other way of keeping your SVN process (or daemon as they call it) running using a 3rd party Windows service wrapper or the like.

Well, digging further, I recently discovered that it's not too difficult to use SVN with Apache, which is an open source web server that has a very nice Windows implementation. Accessing SVN via Apache (i.e. HTTP) is ideal because it allows you to easily browse your repository, and it works great with TortoiseSVN (my preferred SVN client) which uses WebDAV to communicate with SVN via HTTP. In fact I found the best resource for setting all this up was in the TortoiseSVN documentation itself.

Very cool! Now, I'm a die-hard SVN fan.

Lovin' GMail

It's probably safe to say I switch email providers as often as blog engines, perhaps even more often. However, I think I've finally found one I can stick with for a while: Gmail.

My email story goes something like this:
  • Way back in the day, used whatever email address my ISP gave me. I quickly gave this up for a free Yahoo Mail account, which allowed me to check my mail from anywhere and not give up the address if I changed ISP's.
  • Purchased a domain name (twistedstream.com) and thought it would be cool to host my own mail server at home! I think I played with some 3rd party POP3 server at first. Then I switched to what all the cool Microsoft kids were using: Exchange.
  • I finally got tired of my home server either going down (which, in all honesty, didn't happen very often) or my ever-reliable Internet connection dropping and consequently people complaining about not being able to send/receive email to/from me. So I switched back to a hosted solution called Everyone.net that would work with my domain name. I believe was able to access my email via POP3 and IMAP. I liked the IMAP capability because it was more like Exchange.
  • Unfortunately Everyone.net only did email. All my calendar and contact data was still local to one machine. Then I decided to switch back (yes, back) to Yahoo Mail. Yahoo was also able to host my domain name as well as sync calendar and contacts with Outlook (this worked most of the time).
  • Then a coworker turned me onto a hosted Exchange service at 1and1. Man, this had to be the Holy Grail of email (for Outlook users)! And, for the most part, it was. But then I took a new job where the OWA (Outlook Web Access) didn't play well with the corporate firewall; essentially it made checking my personal email next to impossible while at work.

Then enters Gmail.

I've actually had an account for some time (I picked one up back when it first came out and it was the latest rave). However, besides some of its different ways of organizing mail, it just seemed like another web mail client. However, two things peaked my interest and eventually made me switch:

  1. The ability to send email from any email address (not just your @gmail.com account). Yes, via a slick validation email, Gmail will allow you to send email from any account. Couple this with aliases set up in my MX record, and Gmail now becomes the center of my email universe.
  2. The ability to import all of my old email. Granted, this feature isn't provided out of the box by Gmail. You have to do some digging, but a free tool called the Gmail Loader allows you to import all of your old mail. And when I say all, I mean all. I was able to suck in email as far back as 2000 (which is all I had archived). The beauty of this is all of that email (over 1GB) is now labelled and searchable with Gmail's awesome search engine. And since Gmail gives you over 2.5GB of storage, I still have plenty of room.

One more feature that Gmail has that I like, but don't necessary use, is their POP3 access. Like many other hosted email services, you can use a rich email client (Outlook, Outlook Express, Thunderbird, etc) to pull down your email via the POP3 protocol. Gmail makes that experience better with the following added capabilities:

  • More choices on how messages are stored on the server.
  • The ability to send email from any email address that you've validated on the Gmail site.
  • Having a copy of any email sent from your rich email client stored in the Sent Mail folder on the server (as long as you use the Gmail SMTP server in your client-side configuration).

Very cool stuff. I now feel content with my email :).

I have to say a big thanks to my friend Michael who's been using Gmail for some time now and got me re-interested.

Monday, October 09, 2006

My BPTBEC ratio is very low

I have, once again, switched blog engines. I began by using LiveJounral, then I switched to hosting my own. That was cool, but I got tired of having to maintain the server and have friends complain that they couldn't read my blog because my internet connection was down (which is Comcastic!). Not that it really mattered anyway since it was a rare occasion to actually see a new post from my blog.

So, I've made the move back to a hosted blog. For kicks, I decided to go with Blogger. They've been around a long time, have a pretty slick interface that's free, and the Blogger account integrates with my Google ID, which is cool.

Finally, regarding the subject of this post. In all this silliness, I thought it would be fun to make up an acronym to describe my blogging behaviors. BPTBEC stands for Blog Posts To Blog Engine Changes. Right now that ratio for me is at about 3.7. Hehe, I think most average bloggers would have a value in the 100's or 1000's. Well, at least I've got something to shoot for.

Friday, September 22, 2006

Go ahead, blame the rear derailer

After all that hoopla in my last post about my rear derailer, I came to realize that my original hunch was actually correct. I finally brought my bike into Erik's Bike Shop to get some tire fenders installed today. I mentioned my derailer issue and the tech examined the bike and determined the derailer was in fact out of adjustment.

Shows you what I know. :)

Tuesday, September 19, 2006

Don't Always Blame the Rear Derailer

My first biking post! Biking (bycicling, not the motorized variety) has become my new favorite hobby. Good form of exercise. Lot's of scenery. And, as of yesturday, I can use it to get to work since I now work in downtown St. Paul. I suppose I should go more into that subject in a different post (stay tuned). Like most software developers, staying in shape is always a challenge, so if I can combine commuting with achieving that goal, I'm way ahead.

So, I haven't done a real bike ride (i.e. > 1 mile) in over two weeks due to my hectic schedule as of late. I took my bike out Sunday night to do a quick 5 miler around Garvais Lake. I get about 100 yards and begin to notice that my chain keeps slipping, as if it were hopping between gears. My immediate reaction was that my rear derailer was out of adjustment. So I start fiddling with my rear shifter to try to get it to settle on a gear. Same problem. I then try different gears to see if the issue only occurrs with the higher gears. Same problem.

Something was fishy. I'm finally biking along the lake and would really rather enjoy the scenery instead of fight with my transmission. In a puff of frustration, I hop off my bike, flip it upside down, and pedal it by hand so I could get a close look at the derailer. I notice that it seems to be inline with the sprokets. Looking closer I also notice that the skipping seems to be occuring at a regular pace as I turn the crank, and if I slow down the RPM's, the skipping slows down.

Finally I begin to see the problem. Some (not all) of the links in my chain were stiff. They weren't rusted, per se, just stiff. Stiff enough so they wouldn't quite twist around the small gear of the derailer, causing the chain to actually jump off, just for a split second. Hense the skipping.

I wasn't quite sure how to remedy the problem. So, I decided to just hop on my bike and take it easy for the rest of the ride (i.e. actually enjoy the scenery). As luck would have it, the continual motion of my ride eventually loosened up the chain (perhaps warmed it up?) so within a few minutes, the skipping went away!

I was a happy biker and learned something new that day!

Friday, June 30, 2006

Mobile Objects and Ice Cream

So I've been taking the time lately to read through Rocky Lhotka's new CSLA.NET 2.0 book, Expert C# 2005 Business Objects. It's a great book and in it, among many other things, he talks about the concept of mobile objects. In short, mobile objects are objects that have the ability to move from one location (process or machine) to another. In each location they can behave in an object-oriented fashion, interacting with the services that that location has to offer. Essentially, the concept of mobile objects is one of the ways the CSLA.NET framework solves the age-old problem of doing OO within a distributed application.

Anyway, I caught myself thinking in mobile object terms the other night when I got a hankering for a bowl of ice cream. I found myself upstairs in the kitchen with an empty bowl and a spoon. The problem was that the ice cream was in our second refridgerator in the basement. Rather than bringing the ice cream container up to the kitchen (only to have to bring it back down again when I'm done), I decided to implement a mobile object. I was the end user and my bowl was the object (I suppose my spoon was the user interface). I wanted to make my bowl mobile and send it to the basement to be filled with ice cream. Since it happened to be father's day, I asked my son if he would be willing to execute the fetch. Being a good boy, he ran downstairs with my bowl, performed the data-centric operation of getting the ice cream out of the ice cream container (the data store) and filling the bowl. He then made the bowl mobile again by returning it back to me in the kitchen. With the filled ice cream bowl I performed some UI-centric business logic by pouring on a generous serving of Magic Shell. And then I ate it.

See, mobile objects really do work!

Wednesday, April 19, 2006

Setting up an IIS6 Application Pool Identity

Often times it's necessary to run an ASP.NET application under a different user account than Network Service. Usually this is the case when Network Service doesn't have enough rights to access necessary application resources like a database or a file share on a different server.

Here's how to configure a different account (local account or domain account) so it has sufficient permissions to run an IIS6 Application Pool for ASP.NET applications:
  1. Add the account to the local IIS_WPG security group.
  2. Open the Group Policy Editor for the local computer (gpedit.msc)
  3. Drill down to: Local Computer Policy/Computer Configuration/Windows Settings/Security Settings/Local Policies/User Rights Assignments
  4. Add the new identity account to the following polices:
    - Adjust memory quotas for a process
    - Logon as a service
    - Replace a process level token
  5. If your web application is going to host any web services, you need to also give your account Delete access to the C:\WINDOWS\Temp directory. Note: this is done via the Advanced dialog in the Security page of the Explorer folder properties dialog box.