January 2004 Blog Posts

Added Broker Competition

I met with Beth on Friday afternoon and was... hmmm... less than impressed. I'm not sure what it was. I guess I felt like she was selling me too hard on using her services. Like, an impersonal sale, rather than a genuine concern for what's best for me. She was nice, though, and she did have lower closing costs than Ann did. I put in a call to Ann (and left a message) to see how negotiable some of those things are.

I was strongly leaning towards Ann for my mortgage broker until the people from MortgageDesignGroup.com called Friday evening. I first talked to Nicole, who, it seems, just gathers information so they can get a feel for what you're looking to do. Then, a few minutes later, Ben (the underwriter) called.

MortgageDesignGroup.com is an interesting beast. They're apparently both a bank and a mortgage broker. What they do is they fund you through their own bank, then they show your loan for 10 business days to 275 other banks. If they can get you a better rate elsewhere (and, according to Ben, they do about 20% of the time), then you get the better rate. Not bad, eh? Plus, being their own bank, the speed with which they can process things seems much better. Ben said they were on track to close things in 7 days in some cases. I think that's pretty fast (though, admittedly, I don't have anything to compare to).

After talking to Ben, I find that I'm pretty comfortable with him and with Ann. So I guess now it's down to who can get me the best rates and the lowest fees. I feel good about Ann; she's spent a lot of time with me and I sort of feel personally involved in that relationship. That said, Ben offered some pretty good benefits and, after all, we're talking about money here - not being best friends. Friends is good; saving me money is better. If I can have both... well, that's where I'll be.

I'll get the estimates - three separate ones - from Ben on Monday. Then we'll see. In the meantime, I guess I'll wait to hear back from Ann.

I went through all 54 properties that Gregory sent me to look at and, based on feature set and location, narrowed it down to three that I am interested in checking out. Jenn and I will do drive-bys to see what the neighborhoods look like and generally how far out they feel in relation to the MAX and my work. One property in particular is currently standing out to me, but it's about $13K over my price limit, so if it turns out to be the one I'm going to have to do some haggling. I figured I'd have to do that anyway, but I'm wondering if people will come down that much. Jerry (who sits next to me at the hockey games) says they will, and for some reason I think he's had a lot of experience with stuff like that, so I tend to believe him. I mean, the worst they can say is "no."

That's where it sits. I need to get Ben's estimates so I can make a broker decision (and then send polite break-up emails to the brokers I don't choose) and I need to see what these houses look like that Gregory's sent over. Things are moving a lot faster than I had anticipated; it's looking like we could be finished with this process in a couple of months, tops. I guess I anticipated it being like a three-month project getting all this stuff together and finding the right place and everything... if you get it all going in parallel, though, it moves totally fast.

Pursuing Trivia

Jenn and I went last night to Mr. Bill's Traveling Trivia Show again. This time, rather than going with family, we met a couple of friends of mine. For anonymity's sake or something, we'll call them "Susan" and "Andrew." Heh.

Also there, we met a bunch of new (for me) people, and I'm horrible with names so if I spell or otherwise mangle or forget your... um, anonymous... name, forgive me... We saw Susan's husband Brian, a guy named Scott (who I think was at the last trivia show we went to, but showed up late), another guy named John, and Susan's cousin... You know, I can say her name but I probably can't spell it. It's like "Tanya" but starts with "Dawn." Or maybe it was just too loud in the place and I'm going deaf. We'll say it's "Dawnya." Something like that. Regardless, cousins. They have the same teeth, so you know they're not lying.

Dawnya's into NASCAR. Not that it really matters in the context of what we're talking about here, but almost every time anything sports related came up, it inevitably led to NASCAR somehow. NASCAR is something I just don't comprehend. I suppose it's just one of those things - some folks like it and some folks don't. I think if I'm going to watch races, I want Formula 1 or motorcycle races or something. I'm a hockey fan - I need asses getting kicked and blood on the ice. I just don't think I'm going to find that in NASCAR. But I digress...

We played a good game, and this time Jenn and I even won a dollar-off coupon that we applied to our bill. As it happens, Andrew's even less lucky than Jenn and I - he's been five times and never won anything. One would think he'd start feeling slightly beaten down. If I were him, I'd probably have a few words outside with Mr. Bill. He seems pretty patient about it, though.

Andrew's actually quite a kick. After he gets a few beers into him, especially. Two things about the evening that cracked me up:

As Mr. Bill was reading out the numbers of the winning tickets, Andrew gets up, stoked that he won the drawing... just to see someone else go up and claim the prize (because his ticket was actually not the winner... maybe it was an unconscious desire to finally claim a prize?). I've never seen anyone turn redder than that. Like hot lava, baby. Yow.

Then, last round of the game, Andrew's five beers into things, and the question is, "Who played the Joker in the 1989 movie, Batman?" Andrew basically pulls out this virtual PA system and addresses the entire crowd, yelling, "OH! JACK NICHOLSON!" Hey, man, put the bullhorn down. The "contest" part of the "trivia contest" is that not everyone knows the answers. It was too hysterical. I hope he's there next time we go.

That was pretty much it for the evening last night. I'm exhausted this morning, but I don't really know why, and I can still taste the basket of onion rings from last night. Maybe I shouldn't have had the whole basket. Oh well.

Oh! I had this weird onion-ring-driven dream last night where I was starring in an Indiana Jones style movie with my Tiny Cat, who somehow spoke English. We got caught by the Nazis and in order to escape, the cat had to sit on an ostrich egg and try to get it to hatch. I was tied to a chair, telling her to hurry up, and she was generally indignant about the whole thing. I mean, how could I expect her to hatch the egg if I wouldn't shut up? It was pretty funny.

Working The Realtor; Getting GFEs

I continue to search for the "perfect" mortgage broker. The jury's technically still out, but I'm definitely leaning towards Ann right now, since she's spent the most time with me and has spelled things out in an easy-to-understand fashion. Beth has been tough to get ahold of. That said, I'm actually meeting Beth in person later today so she can go over her Good Faith Estimate with me.

Yesterday I got a Good Faith Estimate from Ann, and it's looking pretty decent. If I go that route, I only have to come up with the appraisal ($300) and credit report ($18) fees up front; everything else goes into closing costs.

(That's how you compare brokers - you get Good Faith Estimates with the same loan types and parameters and then you can see how their closing costs and fees stack up. I'm thinking if Beth beats Ann's numbers, I'm going to contact Ann to see if she'll meet or beat Beth's estimate. I have to keep in mind, though, that it is only an estimate, not a quote. The big part is going to be locking in a loan rate.)

I learned from her that there are two ways brokers can bill fees (generally): They either list them separately or bundle them together in one big fee. Apparently, if you see one broker list "administration fees," it breaks down into "document preparation fees" (fee for them to type up the docs), "document recording fees" (fee for them to file the paperwork), "funding fees" (fee for them to give you money), "underwriting fees" (more fees for them to give you money), and "processing fees" (fee for them to push your paperwork through). That stuff, plus some other stuff (taxes, federal flood evaluation determination, etc.) make up your closing costs. I'm going to have to find out how negotiable that stuff is; basically, that seems to me like it's just money I'm paying them for the courtesy of getting me a loan that they'll already be making money on.

Yesterday I also contacted Gregory, a realtor I was recommended by a friend of mine, Colin. I told Gregory all of the things I wanted in a house, and after about two hours he called me back and said he was going to send me over a bunch of listings to look at in email. (He called me later on to say we had somehow garbled my email address over the phone, so he had to resend them, but I did, in fact, get 54 different properties to look at.) I've since printed off those listings so I can sort through them and start weeding out the ones I don't want. Then I'll send him some feedback and we can move on with this. It's seeming to me like the realtor portion of this house-buying-thing is not the stressful part. Sure, you may look at a lot of different places, but it's like walking around a car lot. The tough part of buying the car is the negotiation and paperwork. I anticipate the same for house buying, and so far, that end of things is definitely causing the most hair loss for me.

Starting The Process

Starting the process of buying a home has been stressful. As Greg put it, "You never really know when the process has started." I think I consider the process started now that I've made first contact with a mortgage broker.

I started out this morning at 10:10a by leaving a message with the assistant to a mortgage broker, Beth, who a friend of mine recommended. I was told Beth would call back at 11:00a.

At 11:35a I started getting impatient, and after talking to Greg and figuring I should talk to three or more mortgage brokers (to really shop around), I put in a request with MortgageDesignGroup.com to get in touch with one of their brokers. From their web site, it's looking like I can get a 30 year loan at 5.5% - 6.125% and get around $185,000 for $1050 - $1124 a month (without insurance or taxes).

11:55a - Marty called me up and referred me to a broker named Ann who he's worked with several times. Went online and got her contact info. Decided to call her after lunch.

It's looking like rates at Oregon Telco for a 30 year loan will be about 5.5% on a 30 year fixed loan.

1:25p - Beth finally called back. I gave her some information and she's going to call me back tomorrow with some numbers.

1:45p - Left a message with Ann. She'll call back.

2:35p - Ann called. She's probably the most helpful person I've talked to so far and after talking to a couple of people, it turns out everyone who works with NW Mortgage Group is happy with their service.

It seems there are a few ways to go with this loan. I can put less than 20% down on the house and pay mortgage insurance; I can be "self-insured" by putting at least 20% down; or I can do some "creative loan manipulation" and get an 80% first mortgage, 10% second mortgage, and put 10% down (or 80/15/5, or whatever). With the third option, you'd have the same monthly payment, but you'd be paying towards two different loans and wouldn't have to have mortgage insurance.

Sounds like, assuming an arbitrary guess for taxes and insurance, for a monthly payment between $1300 and $1500 a month (including the taxes/insurance), I could get between $193,000 and $220,000 with a 5% down payment on a 30 year loan. To get some firm costs, though, I need to settle on a loan amount and figure out how long I'm planning on staying at the house.

Now I need to start comparing one broker to another. According to Ann, you need to get what's called a "Good Faith Estimate" from each broker which lays out the fees and such. Then you can compare apples to apples (so to speak) and see who's actually getting you the better deal.

It's starting to sound like a catch-22, though. I can't get a firm loan cost until I decide on a house, but it's hard to really get a house until you know how much you can afford.

I'll wait to hear back from Beth tomorrow and see what she says. I'm hoping to hear back from MortgageDesignGroup.com, too, to see what they recommend. Pending on what they say, I'll probably get ahold of all of them to get those "Good Faith Estimates" and start comparing brokers.

At this point, I'm leaning towards Ann, though. She called me back quickly, she was the most helpful, and she spent the time to work things through with me. Doesn't hurt that I've heard recommendations from three different people for them.

New Category - Realty Check

I've started actually (gasp) hearing back from some of these mortgage brokers that I've been trying to get in contact with, so I decided to put up a new category - Realty Check - to include my home-buying experience (and probably, after that, home maintenance experience). I'm sure it'll be old hat to the people out there who have already bought homes, but if anything, it'll be good for me to look back on and laugh.

Plus, maybe I can sell book rights to it. Heh.

Impatience

Call me impatient, but it's been 45 minutes and no word from the mortgage broker. Fuck this, man. I put in a request for consultation from MortgageDesignGroup.com, so we'll see how that goes. Supposedly I'm going to hear from someone within 48 hours.

According to their site, rates are nice and low and I might be able to get somewhere between 5.5% and 6.125%. Not too bad; might mean I can get a better house.

Mortgage Broker Premonitions

I called the mortgage broker that a friend of mine recommended at about 10:00a today. I got in touch with her assistant, who told me that I'd be getting a call back at 11:00a, after the broker got out of a meeting.

It's 11:25a right now, and I've not gotten any calls.

I appreciate that people are busy and whatnot, but I value punctuality. Don't tell me - or have your assistant tell me - that you're going to call me back if you're not.

It doesn't help that I sent this broker an email on Monday and never heard back, either. This whole thing smells rotten. I'm wondering if I should just look for someone else. I mean, if I can't count on calls getting returned or emails getting answered, why would I trust this person with the largest purchase I'm bound to make?

Greg told me I should talk to three different brokers anyway, to make sure I'm getting the best deal. I don't think that's too bad of an idea, but it does mean a lot more work on my part. I suppose in the long run it'll be worth it.

*Sigh*

I wish this were easier, like buying a car. I suppose technically I could go to the "house lot" and pick out a house, but I'm not too big on the whole manufactured home thing. If only they could make manufactured homes as nice as regular homes.

I had an idea, too, and I'm not sure whether to go with it or not... For the first time home buyer, like me, it would be nice to see a journal-style account of some other first time home buyer's experience getting a house. I'm thinking I may start a new category for blog entries and start the journal there. Then maybe it'll be helpful to someone down the road. Or, maybe, just for me, to look back and see all the stupid mistakes I made. Hmmm. Maybe that's not such a great idea.

Why Does My Mug Stink?

I have this mug that a friend at work got me for Christmas. It's a nice mug, but over the weekend I had a couple of problems with it.

First, it's one of those mugs that can't go in the dishwasher because of the way it's insulated - water can get between the outer layer of plastic and the inner layer of metal and mess up the design that displays on the mug.

I took the mug home and put water in the mug and set it in the sink. No, the sink was not filled with water - it was just sitting there. Dry sink, mug full of water. By the end of the weekend, I was going to wash it but somehow water has gotten between the plastic and metal on the mug and has soaked down half of the design inside. So much for that.

Second, there's something weird and stinky inside this mug. I've washed it over and over, using different types of soap, really hot water, cold water, you name it. It smells like sour-washcloth-meets-coffee. I can't figure out what's up with it. I have to drink with the lid on it because otherwise it's... well, it's just bad. I have no idea what it is.

New John

The toilet in the main bathroom (as opposed to the master bathroom) had the seat on it break (actually, it was a bolt in the hinge), so we reported that to the maintenance people at the apartment complex last week.

We found a note on the toilet a couple of days later that said the whole toilet needed to be replaced. Apparently it was cracked and was about to become a problem.

Sunday Jenn and I went shopping. When we came home our old toilet was sitting out on the curb and there was a guy in our apartment installing the new toilet. I talked to him for a bit and it turns out not only was our old toilet cracked, but it also wasn't installed level, so we're really lucky we didn't end up flooding out the people downstairs.

Not that I would have minded that so much; they bug me. It just would have been something I didn't need to deal with.

So we got this new toilet. Due to the old toilet not being level, there was a little bit of a gap between the toilet bottom and the floor. The cat liked to take a length of yarn and run feverishly around the base of the toilet until the yarn caught in the gap and then she'd wrap the yarn firmly around the base. This new toilet doesn't have a gap.

The result of there being no gap is that we heard the cat running around the base of the new toilet for probably half an hour last night, trying to get that string caught in the nonexistent gap. Every once in a while, she'd be running so fast that she'd lose control and fly sideways into the garbage can in the bathroom, which would consequently *clang* against the side of the bathtub and echo. We thought there was someone hammering something or breaking in; turns out it was just the cat.

I'm not sure if she eventually just lost interest or got it hooked somehow, but when I glanced in the bathroom this morning, her yarn was wrapped around the base of the toilet.

Crying Over Spilt Coffee

I just totally spilled coffee all over my desk. It's under my computer, it's in my mouse, it's all over papers and my bag, it's soaked down my mouse pad.

It's not shaping up to be the best of days.

Money Well Spent

As I progress towards buying a house, I realize how that's a big ticket item - probably the biggest purchase I'll make in my lifetime - and how I'm a cheap bastard, which means I'm going to end up with the hugest case of buyer's remorse ever seen. As beneficial as it will be to me, it's a huge commitment. I don't fear commitment in the general sense, though - pretty much just monetarily.

Thinking about that, I started looking around the apartment at the stuff we're going to have to move and it occurred to me that there are certain things that we've got that I will actually comment on occasionally, saying, "That's some of the best money I ever spent." I decided to write up the list of those things and share them with you. There are four.
Sony 40" WEGA XBR TV [$3,000]: This is the largest tube television on the market. I wanted a larger TV, but I can't stand rear projection because you have to be looking close to dead-on at them in order to see the picture correctly. Not so with a tube. Every time I look at this thing, be it watching a movie, playing a game on my PS2, or just watching TV, I am constantly amazed at the clarity and just general coolness of it. Besides my car, this is probably the largest single purchase I've made, and I've never looked back.

Cat Declawing [$300]: There are some people who claim this to be inhumane. I see their reasoning, but let's look at it this way. I love my Tiny Cat. She's cute and fun and very playful. She's also a wild child and always has been. I paid the money to have her declawed and get her all the best pain meds, and now she can still be her natural wildness, but she won't destroy everything I own (though she still kneads on everything, at least I know she can't hurt it). She can't be trained (she likes water and doesn't care about smells) and she won't be dissuaded from doing what she wants. By contrast, the Tubby Cat we have is very dormant but still has claws. (Both cats are indoor only.) I've had aluminum foil on the side of my couch for three years now because the second I take it off, Tubby shreds my couch. I would like to have my cats around but also be able to have (gasp) nice things. Let me tell you - if I could safely get the larger cat declawed, I'd do it in a second. (Larger/older cats have problems with declawing; you need to do it when they're young.)

Scat Mat [$60]: This is the only thing that affects the smaller cat. She used to sit outside our bedroom door at night and cry and play with the springy doorstop attached to the door (Jenn and I are allergic to cats so we can't have them sleep with us). We tried a mat that makes noise, but she didn't care. We tried spraying smells, using the water bottle... none of it worked. The Scat Mat uses a nine volt battery to generate an electric shock that you get when you step on it. The shock comes in three levels - "mildly annoying," "just got out of the car on a staticky day and touched the door," and "gaping flesh wound." We leave it on "mildly annoying" and the cat leaves us alone all night. I can tell you now that many a night's sleep has been saved because of that thing.

Cable Internet Service [$43/month]: I used to justify dial-up Internet service by having a slow, old computer that we didn't get on very much at home. Then we bought a new computer and I found that half my time was spent connecting to the Internet so I could not only download information slowly but also busy up the phone line at the same time. Now I've got cable Internet and a wireless router. I can't believe I was in the Dark Ages for so long.

Tip Of The Week

I just got this week's MSD2D SharePoint newsletter and I'm the Tip Of The Week! (At the time I'm writing this, they haven't updated the MSD2D SharePoint home page to reflect that; it's still last week's tip.)

Progress Towards The House

Jenn and I have been working to get ourselves together so we can get a house. (I've probably mentioned that before...) We've been getting our list of wants/don't-wants written down, figuring out the budget, etc.

I think we got ourselves to a point yesterday where it's time to call the mortgage broker to figure out how much money we can get to start shopping with. That's a scary proposition for me - first time home purchase and all, it's a little intimidating. I'm a cheap bastard. I don't like to spend money in large quantities (yet somehow I'm okay with buying several smaller items... hmmm....), so thinking about this stresses me out like nothing else.

It's a positive move, though, since we're both really tired of the whole apartment lifestyle. Sure, there are benefits - no maintenance being the primary one - but there are far more drawbacks. I'm tired of being "attached" to neighbors and hearing them banging around or flushing the toilet or whatever. I'm tired of being double-parked into my spot by the people downstairs. I'm tired of smelling what everyone else is cooking. I'm tired of not actually building any equity with the money I'm spending and I'm tired of not getting any tax breaks. This move is long overdue, so we're ready.

In other news, my eBay auctions are sort of iffy. I've gotten bids on three of my shirts - minimum bids - and one of them was bought with the "Buy It Now" feature... but there are still six shirts that need to go. Bah. I'm wondering if I may end up making a Goodwill run. I'm tired of this hope-on-eBay thing.

I rented a movie called So Close yesterday - a Hong Kong action movie. It was pretty good. It actually seemed to have a budget, unlike a lot of the other HK movies I've seen, and the plot was pretty decent with some great action. Check it out if you're into that sort of thing.

I'm blogging on the laptop using my wireless network, which I'm still very pleased with, and watching India Vision on the International Channel. I'm not sure why I'm so intrigued by it, but I am. While it's not an accurate representation of Indian culture by any means (any more than watching Entertainment Tonight is a representation of US culture), I've noticed certain things watching. First, there are some fine Indian women out there. Like, better than most of the US models I've seen. Second, they sing about everything. Crazy style. I can't even understand any of it and I still think it's nuts. Third, everything is styled like Grease. The sing to each other, they change costumes and locations at random intervals... Nuts.

I think maybe it's the randomness of it all that intrigues me. It makes so little sense, I can't not watch. It's like a deer in headlights. Damn.

Good Customer Support

I generally loathe having to contact any customer support organization for any reason because I know I'm going to have to get into it with whoever I get ahold of to try and get something to happen that will alleviate whatever problem it is that I'm having.

I've gotta say, though, that I've been in touch with both Sony and Namco on customer support issues recently and both of them had outstanding customer service.

In Sony's case, I made my primary contact over the phone, and the operators I spoke to were very helpful - they didn't make me go through all of these ridiculous procedures, they talked to me to ascertain my level of knowledge with the product and when they determined that I didn't need to do the "beginner" stuff, I was pushed through to the proper level of support. That's awesome - do you know how long it takes to get to a real tech at Microsoft?

In Namco's case, they have live online support so rather than waiting for an operator on hold, you're instantly connected to a support person in an online chat scenario. It took me all of two minutes to get an RMA # for an item I needed to exchange, and I just now went in and used that service to check the status of the RMA. With a real, live person. No 24-hour-turnaround-time, no automated response.

I think if I'm ever in charge of a support organization, I'm going to use those as examples of the right way to do things. That doesn't imply that the customer is always right, by any means, but the responsive nature of the service and easy manner in which the correct service was retrieved is invaluable.

C# Whidbey Preview

I'm usually not too excited about programming stuff, but Visual C# Whidbey is just plain cool.

Loving Wireless At Home

I forgot to mention earlier that I was able to successfully spend several hours on the wireless network at home last night without any connection issues. I think the hard reset on the router fixed my problems.

I enabled Remote Desktop on the machine in the computer room and was able to connect to it from my laptop in the living room and work on my iTunes music library while watching TV. I can't begin to tell you how cool that is. (I know, all you other wireless people are laughing and saying things like "Welcome to the 21st century!" but, in my defense, I use this stuff all the time at work, I just never got into it at home. Now that I've got it, I'm liking it. Next stop, tablet PC?)

Apple Core... Baltimore...

I have one of those apple slicing/coring devices at work. I hate eating apples whole, but love apple slices (odd? maybe).

I just went and sliced an apple and utterly destroyed this thing. The blades all bent and started coming apart...

Cutter destroyed!

Maybe I should purchase a higher quality of kitchen gadget. In the meantime, what am I going to do with all these apples?

Wireless Networking Corrections

After getting my wireless networking set up at home, it turns out it didn't like something or another about how it was configured... I'm not sure exactly what that something might have been, but it was really pretty bitchy with me. I secured it down, set up my laptop, and everything would work great... except it would drop my connection roughly every 10 - 20 minutes, regardless of signal strength.

I have since reset the router (using the hardware button in the back) and reconfigured it to my liking and now I'm testing it. As we speak, I'm writing my blog over the wireless connection (don't get technical with me about how HTTP is stateless and I'm not actually connected; the point is I'm watching the signal and connection on a status monitor). It's been connected for 15 minutes or so now and I think it may be solved (knock on wood).

The other weird thing I found was that if I booted the laptop up with the wireless card in it, it wouldn't connect to the DHCP server on the router to get an IP address. However, if I eject the card and plug it back in, all's well. Apparently stupid things like that are reasonably common, or so I hear. I dunno. I think ejecting the card and pushing it back in is a pretty trivial thing on the large scale of things.

Conditionally Getting Audience Information

Okay, so, like, what happens if you're writing a web part that you want to work on both Windows SharePoint Services and SharePoint Portal Server? First, you have to determine the web part's context - are you running in WSS or SPS? Doing that, you can conditionally display things like input fields for audience information, etc. (I dwell on audience stuff because that seems to be the biggest thing that I'd like to use in my web parts yet still want to use the parts on WSS, which doesn't support audiences.)

The problem is, if you determine that you are running in SharePoint Portal Server and then start calling objects in the Microsoft.SharePoint.Portal namespace, that works great on the SPS box, but gives you compile-time binding errors on WSS. What to do? System.Reflection to the rescue. Late bind to the assemblies and use the System.Reflection namespace to call methods and properties on your late-bound objects.

That sounds like a big pain, and it is. That's why I'm helping you out by putting up some code here:
using System.Reflection;
using System.Collections;

/// <summary>
/// Gets the list of audience names and GUIDs for the current site
/// </summary>
/// <returns>A SortedList object where the keys are the audience names (string) and the values are the audience GUIDs (System.Guid)</returns>
public SortedList GetAudienceAndGuidList(){
   SortedList audList = new SortedList();
   Assembly assemblyInstance = Assembly.LoadWithPartialName("Microsoft.SharePoint.Portal");
   if(assemblyInstance != null){
      // We're working on a SharePoint Portal Server, or a WSS site on a server with SPS

      // Get the current portal context
      System.Type portalContext = assemblyInstance.GetType("Microsoft.SharePoint.Portal.PortalContext");
      PropertyInfo currentContextProperty = portalContext.GetProperty("Current");
      object currentContext = currentContextProperty.GetValue(null, null);
      if(currentContext != null){
         // We have a portal context, so we're on SPS

         // Get the types we'll be working with
         System.Type audMgrType = assemblyInstance.GetType("Microsoft.SharePoint.Portal.Audience.AudienceManager");
         System.Type audCollType = assemblyInstance.GetType("Microsoft.SharePoint.Portal.Audience.AudienceCollection");
         System.Type audType = assemblyInstance.GetType("Microsoft.SharePoint.Portal.Audience.Audience");

         // Create the AudienceManager object
         object audMgr = audMgrType.InvokeMember(null,
            BindingFlags.DeclaredOnly | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.CreateInstance,
            null,
            null,
            new object[]{currentContext});

         // Call the Audiences property to get the collection of audiences from the AudienceManager
         IEnumerable audColl = (IEnumerable)audMgrType.InvokeMember("Audiences",
            BindingFlags.DeclaredOnly | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.GetProperty,
            null,
            audMgr,
            null);

         // Get the name and GUID for each audience and put them in the collection
         foreach(object aud in audColl){
            try{
               string audName = (string)audType.InvokeMember("AudienceName",
                  BindingFlags.DeclaredOnly | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.GetProperty,
                  null,
                  aud,
                  null);
               Guid audGuid = (Guid)audType.InvokeMember("AudienceID",
                  BindingFlags.DeclaredOnly | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.GetProperty,
                  null,
                  aud,
                  null);
               audList.Add(audName, audGuid);
            }
            catch(Exception exc){
               // If there are any problems, don't add the audience to the list
               System.Diagnostics.Debug.WriteLine("EXCEPTION getting audience and guid list: " + exc.Message);
            }
         }
      }
   }
   return audList;
}


/// <summary>
/// Uses System.Reflection to late-bind to the Microsoft.SharePoint.Portal assembly and determine if
/// a user is a member of an audience.
/// </summary>
/// <param name="username">The username of the person to look up</param>
/// <param name="audienceID">The audience ID to check membership for</param>
/// <returns>True if the user is a member of the specified audience; false otherwise</returns>
public bool UserIsMemberOfAudience(string username, Guid audienceID){
   Assembly assemblyInstance = Assembly.LoadWithPartialName("Microsoft.SharePoint.Portal");
   if(assemblyInstance != null){
      // We're working on a SharePoint Portal Server, or a WSS site on a server with SPS

      // Get the current portal context
      System.Type portalContext = assemblyInstance.GetType("Microsoft.SharePoint.Portal.PortalContext");
      PropertyInfo currentContextProperty = portalContext.GetProperty("Current");
      object currentContext = currentContextProperty.GetValue(null, null);
      if(currentContext != null){
         // We have a portal context, so we're on SPS

         // Get the types we'll be working with
         System.Type audMgrType = assemblyInstance.GetType("Microsoft.SharePoint.Portal.Audience.AudienceManager");

         // Create the AudienceManager object
         object audMgr = audMgrType.InvokeMember(null,
            BindingFlags.DeclaredOnly | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.CreateInstance,
            null,
            null,
            new object[]{currentContext});

         // Call the IsMemberOfAudience method to determine audience membership
         bool userIsMember = false;
         object[] isMemberOfAudienceArgs = new object[] {username, audienceID};
         try{
            userIsMember = (bool)audMgrType.InvokeMember("IsMemberOfAudience",
               BindingFlags.DeclaredOnly | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.InvokeMethod,
               null,
               audMgr,
               isMemberOfAudienceArgs);
         }
         catch(Exception err){
            // Do nothing
            System.Diagnostics.Debug.WriteLine("EXCEPTION determining audience membership:\n" + err.Message);
         }
         return userIsMember;
      }
      else{
         // We're working in WSS, which doesn't have audiences, so we'll assume that everyone
         // is a member of every audience.
         return true;
      }
   }
   else{
      // We're working in WSS, which doesn't have audiences, so we'll assume that everyone
      // is a member of every audience.
      return true;
   }
}

Need To Update The About Section

Aw, crap. I was going to update my "About" section with my new logo but I forgot I haven't moved it over to PHP so it's all erring out. How come you people didn't tell me about this?! I'll have to fix that.

I Gots The Logo!

It's official, people!

MCSD.NET Logo

Post Office... Or DMV?

I went to the post office yesterday to mail off my first eBay sale and was dismayed at the whole experience.

Let me step back a bit, though, and explain some of the lead-up.

I sold one of my shirts on eBay and was trying to figure out the best way to get the item in the mail on time. I got payment through PayPal (which, by the way, turns out to be a total scam if you want to accept credit card payments, but that's another story), and I told the buyer yesterday morning that I'd get the item in the mail that day.

Facilities at work has a mail scale and postage machine and is nice enough to sometimes let us buy postage from them directly rather than going to the post office. I sent an email to the facilities manager to find out if we could send priority mail with delivery confirmation and insurance from here. He said they could. So I went down to the mail room...

... and no one was there. BAH. The facilities manager has to be there with the key to the postage machine, so no go. I went back to my desk.

I tried about once an hour for a few more hours, but at 2:30p or so, after not finding him there, I sent another email - "When's the best time to come down and mail this?" The response: "In the morning." No no no no no! It needs to go out today!

Time to go to the post office.

There are two in the area. One's a half mile away, one's five miles away. I went to the one a half mile away...

... to find out that it's a "detached carrier unit," which means you can drop your stuff off, but they don't sell postage. Shit. So I went to the other post office.

Now, you gotta figure - it's like 3:00p, the lunch rush should be over and I should be able to get through the PO with minimal effort, right? Dude, the line was out the door when I got there. They had three people (out of four possible) working the counters, and it was utter gridlock. It took me, seriously, nearly 45 minutes to get my package mailed. Ridiculous. Why does it take so long?

It occurred to me that going to the Post Office is like going to the DMV. They're all government workers, which implies they may or may not have incentive to work any faster; there's no sense of urgency; there's an underlying level of incompetence that you can't quite put your finger on; and you don't have a choice in the matter.

I sat and watched as one of the people working the counter took a package from a person and walked it around for, seriously, like five full minutes trying to figure out which bin it went in. There were only four bins! Pick one!

One customer asked for a particular type of $0.10 stamp. Maybe he's a collector or something. The clerk didn't have it. The clerk asked the other clerks; they also didn't have it. The clerk then went on a ten minute hunt for the stamps, just to find out that they didn't have any. Come on, people. If you don't have the stamp, you don't have stamp. Move on!

And you know what? The whole reason I went there was because the customer I sent the shirt to wanted insurance on a $12 package. Insurance for $12 costs $1.30. Why?! Bah. If she hadn't wanted insurance, I could have printed my postage off my computer - priority mail with delivery confirmation - and never had to deal with it. Irritating.

Flickeroo

I've been meaning to say something here about this travesty for a while, but I've kept forgetting.

There's this booger on the wall next to the sink in the men's restroom here at work and it's been there for probably a couple months now. It was there when I left for training in mid-December, and it's still there. It's probably half a centimeter in diameter.

I tried taking a picture of it (I was going to put a ruler next to it so you could see how huge it is) but my camera doesn't do close-up very well, so it was just a dark blur on the wall.

I have only two questions about this. First, who was so unhygienic as to flick a fucking booger on the wall? Second, how come housekeeping hasn't dealt with it?!?!

MCSD.NET

I just finished my MS 070-300 test, Analyzing Requirements And Defining Microsoft .NET Solution Architectures, and I PASSED. That means I'm now a Microsoft Certified Solutions Developer in .NET. According to MCP Magazine, as of November 6, 2003, there are only 4,711 people in the world with that certification, so it still might hold a little weight.

Regardless, I passed what I figured to be probably the hardest of the tests in the MCSD.NET series. It was case studies with questions over each case study rather than a simple set of questions (which is what all my others were). I don't like the case studies because they sort of imply certain "right" and "wrong" answers that may or may not be quite what you do in real life. They're very... subjective. In other tests, it was much more clear which answers were "right" and "wrong." If the answers were skewed a certain way, it was kind of obvious from the question which way they would want you to skew them. Not so in this latest test, and I think that was the tough part.

I suppose it's moot now. I PASSED!

Sold! Your Number Sir? Thank You.

My first ever sale on eBay happened yesterday around 5:30p, just six hours after I relisted. Apparently it's true - people don't want 10 shirts all at once, they want one shirt at a time, and they'll pay more per shirt to buy individually. Score!

Now I just need to get my ass to the Office Depot to pick up some envelopes to mail these things in. I have a scale at home that'll weigh up to five pounds (it's a kitchen scale, but that's okay) so I'll be able to calculate and print shipping at home from the USPS site (as long as delivery confirmation is good enough; I have to go to the post office if the person wants insurance).

Relisted On eBay

I've gone through and re-listed all of my t-shirts (individually, this time) on eBay. Since the "lot of 10" didn't sell, here's hoping they'll sell individually. I also put in starting prices instead of reserves, since it seems folks don't like reserve auctions (at least, the people I talk to don't).

We'll see what happens this time. Luckily it only costs me like $0.35 per shirt to list the things.

Wireless Network In Effect

I got my Linksys WRT54G Wireless-G Router hooked up and locked down - no SSID broadcast, MAC address filtering, 128-bit WEP encryption... so wireless networking is in the hizzouse! I've tested it out using my laptop from work and it's awesome.

While I was doing that, I noticed there was a new wireless network called "Ladybug" in my area, broadcasting its SSID. I didn't try to connect, but I find that interesting since the average age in the apartment complex is like 90. I'm thinking it has to be the guys next door; they're the only ones I can imagine having such a thing (they're probably in their mid 30's).

Anyway, I'm stoked. Wireless networking, router/firewall installed. Set to frickin' GO.

New Category - Code Snippets

I've added another new category - Code Snippets - for little pieces of code I come across or use that I think might be helpful to folks. Not really Geek Moments, not really Tech Support. Sorry to the casual readers who don't care about code. I don't really have anywhere else to publish this stuff, so everyone gets to see it.

Web Part Context

For those writing web parts for SharePoint Portal Server 2003 or Windows SharePoint Services, you may want to determine what context your web part is running in - is it WSS or SPS? I wrote a web part that had optional use of Audiences in SPS, but I wanted it to work (and ignore Audience settings) in WSS, too.

Here's a static method to help you out.



using System.Reflection;

/// <summary>
/// Returns a Boolean indicating whether we're running in SharePoint Portal Server
/// or not.
/// </summary>
/// <returns>True if we're running in SPS; false otherwise.</returns>
public static bool ContextIsSPS(){
   Assembly assemblyInstance = null;
   try{
      // Try to bind to the Microsoft.SharePoint.Portal assembly.
      // If it isn't there, we're not in SPS.
      assemblyInstance = System.Reflection.Assembly.LoadWithPartialName("Microsoft.Sharepoint.Portal");
      if(assemblyInstance != null){
         // We've successfully bound to the assembly, so now let's try to determine
         // the current PortalContext.
         System.Type oType = assemblyInstance.GetType("Microsoft.SharePoint.Portal.PortalContext");
         PropertyInfo oInfo = oType.GetProperty("Current");
         object result = oInfo.GetValue(null, null);
         if (result == null) {
            // SPS Installation, but WSS context
            return false;
         }
         else {
            // Running in SPS context
            // To determine SPS site URL:
            // PropertyInfo oSiteURLInfo = result.GetType().GetProperty("SiteUrl");
            // string siteurl = (string)oSiteURLInfo.GetValue(result,null);
            return true;
         }
      }
      else{
         // We couldn't bind to the Portal assembly, so we're not on an SPS box
         return false;
      }
   }
   catch (Exception err){
      System.Diagnostics.Debug.WriteLine("ContextIsSPS(): Exception determining SPS context; returning FALSE.");
      System.Diagnostics.Debug.WriteLine(err.Message);
      return false;
   }
   finally{
      assemblyInstance = null;
   }
}

Fat, Fat, Fat

There's an interesting article in the Willamette Week local newspaper conjecturing on why Oregonians are so fat. I've actually wondered that myself - why aren't I motivated to do something about these ridiculous "love handles" or the gut that continually generates the need for newer, larger pants?

Of all of the ideas they bring up, I think the weather is probably the most accurate reason we're fat... at least, that's how it is for me. Who wants to go riding your bike in the drizzle? Who wants to do anything when it's pouring down outside? With an average of only 68 non-rain days per year, it's no wonder.

They also mention that fatty foods are much more affordable than healthy foods. I'll agree with that, too. I was just mentioning the other day that it'd be nice if you could go up to McDonald's or something and get a healthy meal for $3 instead of filling up on deep fried fat.

Maybe I should move somewhere sunny. I wonder if I'd be more motivated to exercise. Then again, I also wonder if I'm just inherently lazy and should accept that for what it is.

Lockergnome IT Pro Redemption

Lockergnome finally posted my security column rebuttal. Day late and a dollar short, but we'll take it.

Random Friday

I was listening to a local radio station yesterday on my hour-and-forty-five-minute commute (to go 14 miles) and they have this feature called "Random Thursday" where they play different callers asking questions they don't know the answer to or weird thoughts they're having. I think today is "Random Friday" on the blog because there are a lot of disconnected thoughts I have that I haven't gotten out here yet.

This is why I can't work at home too well: My cat thinks she's a parrot.

Tiny wanna cracker?

I forgot to mention it, but this past weekend (I think it was this past weekend) Jenn and I were going into the Winter Hawks game when, passing through the turnstyle, Jenn nailed herself in the nuts. Not that she has nuts, but if she did, she'd have hit them. I had to laugh, but I'm sure it hurt pretty bad. Took a couple of days to get over.

Earlier this week the Christmas gifts my boss ordered for us from the UK arrived.

Spare no expense on the packaging!

He ordered a bunch of mugs, so the company just grabbed each mug in its own styrofoam packaging block and taped all the blocks together. No box, just tape. Spare no expense on the packaging, right? Amazing what the post office allows through. (We ended up playing a sort of white elephant game with the mugs, where the first person picks up a mug, then the second person either gets a mug or steals the one from the first person, and so on. It was a lot of fun. I ended up with a mug that says, "Please do not use the Internet. It affects my MP3 downloading."

Last night Jenn, my dad, and I went to Mickey Finn's to participate in Mr. Bill's Traveling Trivia Show. My friend Susan works at the show sometimes (tallying up scores and whatnot) and has been badgering me to go, so we did.

The show is sort of like a group game of Trivial Pursuit. You form teams, pick a name (we were the S.W.A.T. Team), and answer three questions at a time. After something like 18 questions, you get some raffle tickets (based on how many your team got right) that could win you free t-shirts, gift certificates, etc.

Our team kicked ass. I mean, we were always right up in the top few teams. We each had our specialties - I know movies and music, Jenn knows TV, and my dad knows history and geography. Well, sort of. See, Dad flubbed the only WWII question we had, so I don't know that we can really count on him to come through. Where did I go wrong with that guy? Heh.

About halfway through, Susan's friend Sharon joined our team. Sharon's cool and has this job where she gets to travel to all these cool and exotic places on the company dime. I think that would be pretty cool... for a while. Not sure I could get used to the whole jet lag thing, or losing so much time on an airplane (date lines and all). She had some interesting stories, though, and came through in the pinch with some correct question answers (*cough*Dad*cough*).

That said, as many questions as we answered correctly, not a single one of our raffle tickets was drawn. I seriously think every single team except ours won something. At first I blamed it on the fact that I was the one going up to get our raffle tickets, but then I sent Jenn up to get a set and we still didn't win. Now I'm convinced that there's some sort of CSI-esque spray that they'd coat the tickets in so our tickets would glow and they'd know which tickets not to draw.

Slept like crap last night. I think it was the mega-onion-burger and onion rings I had for dinner, followed by the mountain of bread pudding with rum sauce for dessert. I was too hot in the blankets, too cold out of them. Heartburn all night. Woke up twice to pee. I have no idea what was going on.

I woke up this morning and my right eye is half swollen shut and hurts like hell. I don't know what's up with that, either. One of the guys in the office suggested that I may have slept on it wrong. How do you sleep wrong on your eye?

I noticed in the shower this morning that we desperately need some Drano. By the end of the shower I was ankle deep in soapy disgusting drainwater. Then it occurred to me that I've been noticing this same thing for like a week now and just never remember long enough to write down the word "Drano" on the shopping list. I'm really hoping I remember to get some between now and tomorrow morning. Every morning it happens, and every morning I'm disgusted anew. Sort of like living in an unhygienic version of Groundhog Day.

Watching the news this morning and noticed that this reporter on there always does stories where, rather than acutally have any interesting video footage, he'll actually aim the camera at his computer while he surfs sites about his story or reads email from viewers. Story about the airport? Cool! Stand outside the airport with the news van and point the camera at the airport's web site. Information about a new health care bill? Great! Aim the camera at the email feedback inbox and read viewer thoughts. Where did this guy learn journalism?

I'm not sure why I think this, but for some reason I feel like I need some Snoop Dogg albums.

My dad's stoked for the Survivor All-Star show coming up. I'm interested, too, but I'm not sure as much as he is. Dad still wants to try out for Survivor. Heh.

Okay, last thing: I had this weird dream last night that I went to the Estacada Timber Bowl and, rather than being a park, it was more of a natural history exhibit. They had this life-size reproduction of a scene in a cave (and the cave was the size of an airplane hangar) where prehistoric man had greeted visitors from Mars around a huge bonfire. I don't remember too much, but I do remember the audio-animatronics being used were of excellent quality. After looking at that for a while, I went through the cave and at the other end was a giant plantation-style house where they were having an estate sale. I want to say I bought an antique phonograph, but I can't really recall. Just about the time I was leaving the sale, I woke up.

Damn, my eye hurts.

You Can't Change Lanes In An Intersection

I tried to get a picture of this asswipe, but it was too dark out.

I think I was just about killed today on my way in to work. Everything was going swimmingly when I pulled up to the stoplight at SW 4th and Caruthers. I was the third car in line. When the light turned green I started moving through the intersection, and when I was just about through it, this asshole in a silver Volkswagen cuts right in front of me, not only changing lanes in an intersection without signaling, but trying to fit a full car in a half car's length. I slammed on the brakes and the horn, swerving to avoid getting my front passenger fender taken clean off and the guy (I assume it was a guy, but I couldn't see) continued without even noticing. He (she/it/whatever) came close to running me head-on into a concrete dividing wall.

Like I said, after recovering from this feat of ridiculousness, I caught up with the car but wasn't able to get a picture because it was too dark. His/her license plate was ZPR 448, though. Normally I wouldn't post something like that, but when you're as reckless as that, you deserve it.

Sometimes I wish I was an undercover cop so I could pull these assholes over. I mean, seriously, folks, if you can't think ahead enough to know you need to be in a particular lane, at least wait until someone lets you in. Accept the consequences of your stupidity if no one does and get on somewhere else. Next time, maybe you'll remember to get in line like everyone else.

Worst. Font. EVER.

Many people know about my abundant, vehement hatred for the Comic Sans font. People using it generally choose the most inappropriate places to use it - in the body of corporate emails, for example. The interesting thing is that I've only really found one or two other people in my travels who share my sentiment.

Turns out I'm not as alone as I thought.

I Need A Metal Dance Pad

I will admit I'm a fan of the game Dance Dance Revolution, but I'll also admit I suck at it. Why? I've only ever really played on a reasonably cheap soft dance pad. (Well, that and I'm totally not coordinated. But we'll blame the pad for my shortcomings and move on.)

To that end, I think I need to get a metal dance pad. Arcade feel, no slipping around (which is the biggest problem I have with the soft pad)... might be a good thing. Costs $139 plus shipping, but I'd wager if you're going to actually PLAY the game, this is probably the way to go.

Plus, I can see that the health benefits may be in my favor. I hate exercise, but I love Dance Dance. May be something to think about, seeing as how the PS3 and XBox Next (as they're being called, respectively) won't be out for another year or two, and those will be my next console-related investments of significance, methinks.

No Go On eBay

My eBay item (well, items, since it was a set of 10 shirts) didn't sell. In fact, it didn't get to half of my reserve price, which could mean one of a few things:

First, it may mean that some folks don't want 10 shirts. Or not the people who have money.

Second, it may mean that I've over-valued the items. I don't think so, though; new t-shirts go for about $12, I figured I could get $7 for barely-used ones.

Third, it may mean that people don't like reserve auctions. Bah. I was reluctant to start the bidding really high on the item because I didn't want to discourage bidders right off, but then, some people just don't even bid on reserve auctions. Can't win for losing. At least I can see what's what, now.

I suppose this means I need to re-list these things, but this time I'll do it individually. I guess we'll see what happens.

Lockergnome IT Pro Down The Tubes

A bit ago I mentioned how Lockergnome is sowing fear, uncertainty, and doubt in newbies regarding security and the World Wide Web. I mailed the editor of the newsletter and he said he'd post my rebuttal (since the original author didn't have a functional email address) in the next issue of the newsletter.

I just checked the next issue, and my comments aren't there.

I remember a time I subscribed to that newsletter and actually got some useful information out of it. Whatever happened to Lockergnome, man?

Parental Control

This is probably something that most people aren't bothered by but that bothers me quite a bit.

I have this friend who subscribes to an Internet service provider who uses parental control features to "blacklist" certain web sites. On paper, one would think this sounds like a keen idea - parents can let their kids surf the web "unsupervised" without the kids seeing anything "bad." The blacklist gets automatically updated so the latest badness is hidden from their youthful eyes.

Things like this sound great, don't they? Yeah, except for the fact that they blacklisted my site. That's what makes me think. Am I purveying porn here? Aside from some minor language issues, am I even doing anything that offends anyone? Okay, well, maybe I might offend people, but I'm not sure it's on a level that requires blacklisting by parental control software.

So I've been going back and forth with my friend over why he submits to this sort of treatment by his ISP. Apparently he does have some sort of override control, but just doesn't choose to exercise it. That both interests and annoys me. I mean, what happens if I'm researching, say, breast cancer or AIDS? Somehow I think I'd start "protecting myself from myself," don't you? Stop myself from getting the information I'm looking for?

I think that the idea of parental control is interesting until you start really examining it. I think I'd prefer to trust my kids and teach them what they should and shouldn't look at rather than rely on automated enforcement of ethics that I may or may not agree with. The same problems we have with spam filters exist with parental control software: How do you know if you're filtering out enough bad stuff? And how do you know you didn't just include content you want to get to?

Maybe I just feel like parental control software is overprotection at its finest. I feel like it's an illustration of an over-politically-correct society trying to protect itself from itself, because God forbid anyone get offended by anything. Sort of like the whole V-Chip television thing. Is there a need for it? Maybe. But the fact there's a need for it, I think, signals something larger is wrong. Wrong with the content? Wrong with society? Wrong with the way we teach morals? Who knows?

I think it's important to note that this has nothing to do directly with my friend or the way he teaches his kids. My friend has some of the smartest, coolest kids on earth and if I ever have kids of my own (which is not currently on my agenda), I'd hope they turn out half as great as his. I'm just having issues with the implementation of automated censorship - it's never been something I agree with, and I'm not about to agree with it any time soon.

Updated: pMachine To dasBlog Migration

Not that I've decided or anything, but it's interesting to note that dasBlog stores its data in separate XML files, sort of similar to the way GreyMatter stored its stuff. That would make the export from pMachine much easier, but what about the search? Doesn't efficiency go out the window? Makes you wonder.

Needed: pMachine To dasBlog Conversion Utility

My site may be moving from a Unix-based server over to a Windows 2003 server. To the end users, that shouldn't make a difference, but to me, that means a few decisions.

Do I continue to use pMachine, which I just recently migrated to and took so long to configure to my liking? Or do I migrate to dasBlog, the best .NET-based blog package? I've had people tell me dasBlog rocks, and with pMachine being a PHP/MySQL package... well, I'd rather run on .NET, if you know what I mean. That's where my expertise lies, and with the ability to use .NET to extend the blog, how can I pass that up?

On the other hand, do I want to deal with that?

Not to mention that, to my knowledge, there's no pMachine-to-dasBlog conversion utility. When I moved from GreyMatter to pMachine, I was able to import my entries so things weren't lost. Moving from pMachine to dasBlog, I may not have that luxury.

Which means, of course, that I'd have to write one myself. It wouldn't have to be robust, since it'd only have to work once, but what a pain in the ass! Do I need to even take something like that on? Or would it just be better to run PHP and MySQL on Windows and call it a day?

The featureset, functionality, and extensibility is there in dasBlog, where it's harder for me to do stuff in pMachine. My stuff is already in pMachine, though, and I've done a lot of work to make it just so... Something to think about, I guess.

Stupid BrainDumps

I should never have looked at the brain dump for the test I'm taking. Now I'm more nervous than I was before. Bah.

posted @ Monday, January 12, 2004 3:53 PM | Feedback (0) | Filed Under [ .NET ]

Working At Work

Today's my first day back at work (that is, actually at the office) since the winter storm fiasco last week and let me tell you how nice that is. I'm not very social at work or anything, but being in a place designated particularly for work is much better for focus, and hearing the other guys in the department doing their thing... well, it's more social than sitting at home trying to get the cat to stop climbing my back.

First thing this morning I got here and there was a minor database-related crisis on one of our intranet servers, so that took most of my morning hashing that out. Stupid SharePoint Team Services...

I scheduled my last test for my Microsoft Certified Solutions Developer certification - "MS070-300: Analyzing Requirements and Defining Microsoft .NET Solution Architectures" - this coming Monday. I'm more uncomfortable with this test than I have been with others; they really are testing for "Software Engineering The Microsoft Way" and coming from a more real-world perspective, this inconsistent theoretical crap is really tough for me. I end up answering the questions the way you would in a real-world situation, but those answers end up being wrong because they're not Microsoft answers.

A couple of friends of mine here at work have taken the test and they say it's easy enough. Here's hoping they're right. In the meantime I'll be studying my ass off.

I rented some movies this weekend and so far I'm not too impressed.

Charlie's Angels: Full Throttle was iffy at best. Random plot interspersed with overdone effects scenes and implausible stunts that destroy your suspension of disbelief. My dad told me as much, but somehow I didn't pay attention. Pass.

The Silencer, a low-budget movie about a hit man, was not only poorly acted but poorly written. In fact, I don't know where one problem ended and the other began. Was it bad because the actors read lines like they were on cue cards? Or were the lines themselves so bad that it didn't give the actors much to work with? Does it even matter? Pass.

I have another movie, The Art Of War, but I haven't watched it yet. We shall see.

I should probably work at work, huh?

High Speed Internet

I'm rocking with the high speed Internet now, baby! Went down to the Comcast office and picked myself up a cable modem and driver kit, and now things move faster than fast. More human than human, friends.

I'm anticipating this will have a positive effect on my desire to do computer-related things at home (like update the blog, etc.) but will probably be not so great for my social skills.

At least Windows Update won't take all night anymore.

Melting Off

The ice looks like it's starting to melt off, but I just watched a 4x4 spin all of its wheels trying to get through our parking lot. I saw that they started the bus running outside the apartment this afternoon, so some people must think it's getting better.

I called Comcast to get my cable Internet service running but the account's in Jenn's name so I have to call back with her and have her either order it or authorize me on the account so I can order it. I think I'll just have her put me on the account so I can call them whenever I want and get service or handle problems.

Regardless, it's supposed to warm up this weekend so by Monday we won't have the ice or snow anymore and I'll be able to take my time setting up the high-speed Internet. That's going to rock; I can hardly wait.

I thought I had mentioned it before, but searching back through my blog I don't see where... Anyway, when I got my new computer, I hooked it up and all was well. For a while, though, my 21" monitor was having these odd brightness/contrast issues where it would be totally bright and hard to look at even with the brightness turned all the way down to 0. I noticed that I had my speakers parked kinda close to the monitor, so I moved them away and that seemed to fix things. Turns out, I think that was more of a coincidence than anything because it's doing it again. I suppose the monitor has probably reached the end of its natural lifetime. I've had it for... uh... like 7 or 8 years now. I think I paid like $1000 for it at the time, though, so that averages out to almost $125/year for the thing. I'd like it to last longer. I guess I'll ride it out until it's so bright you just really can't use it, then I'll buy something new. I've got my eye on one of the LCD flat panel monitors - save me some desk space - but they're so expensive. That's something I'll really have to think on.

Lockergnome Sowing FUD

I regularly read various IT-related newsletters published by Lockergnome. Normally I'd recommend them as a great place for both newbies and experienced folks alike to keep abreast of technology and trends.

Unfortunately, since they've changed their site and the way they generate their content, their editorial ability seems to be lacking. I just read the January 8 issue of the IT Professional newsletter and found an article someone submitted regarding computer and network security (SECURITY: Feasibility Of Standards).

The writer pretty much makes blanket statements about how cookies are bad and JavaScript is bad and Java is bad... and it irritates me that stuff like that gets published in a spot where newbies read it and then get the idea that security means being paranoid and disabling the technology rather than educating themselves.

I tried to write in to the author of the article, but his mail server seems to be down (or he provided a bad email address on his web site). So I wrote in to the content editor (or supposed content editor) of the newsletter.

Below is what I sent him:
Just read Howie's column on security in Lockergnome. For the most part I agree with everything he put forth - very good points on all but two topics: cookies and javascript. (I'd have sent this directly to Howie, but his mail serve seems to be down.)

So we're on the same page, let me paste in what I read him as saying:


1) Is Your Browser Set To Allow Cookies?
Why? Well, gee, if I go to this game site, they automatically plug in my username and password. Very nice. I hope you know better than to believe that cookies only do this! There ARE good cookies, and most of them are time savers. But most are either nothing special or downright miserable!

2) Is Javascript and/or Java enabled on your browser?
Do you randomly surf the Web? Would you ever know if a script or java program was executing or implanting garbage on your PC?

Yeah, eventually. When you need to reboot and strange things start to happen!


The web has become a much more accessible platform for application development and delivery than it was even a few years ago. Being a web developer by trade for almost 8 years now (and an application developer for much longer than that), I've followed these developments with eagerness and anticipation of the next huge development to come around (and when it does, making use of it).

Unfortunately, what I've found is that there seem to be two types of people when it comes to the web being an application platform: the paranoid, who seem to sow fear, uncertainty, and doubt when it comes to the web; and the open-minded, who are probably a bit too liberal when it comes to how they work within the web. I'll admit I tend toward the liberal side, and normally I let things like this slide by, but when someone makes pretty bold statements like this in a forum like Lockergnome that newbies trust, I have to take issue. Let's look at each of the statements in turn.

Cookies:

Howie says that most cookies are "nothing special or downright miserable." He also gives the impression (though it's not directly said) that all the good cookies do is fill in your name on a form. I know that he, with the experience he claims on his PuterGeek site, is smarter than that, but the newbies out there reading your stuff don't have a context like the more experienced folks. Cookies, in many cases nowadays, are what make web applications function - period. Due to the stateless nature of the web, many times you can't write a robust application without assuming there be some sort of state maintenance. Can you get around that? Sometimes, using hidden form fields and so on. What about disconnected or mobile users? Gets more tricky.

He also makes the statement that he "hope [the reader] know[s] better than to believe cookies only" fill in forms. Sure they do. In the context of his statement, though, he makes it sound like they primarily have malicious abilities beyond the filling-in-of-forms. That's a problem, especially when you start reaching audiences like less-than-educated network admins (like I had at a company I used to work for) who start filtering cookies out at the proxy level because they believe they're huge security risks.

I guess my thoughts are when talking about security and cookies, it's necessary to tell people that cookies may potentially be used to TRACK you, but they can't siphon information out of your computer like your name or email address. They can't steal anything that you didn't provide in the first place. I still talk to users who think cookies can magically figure out your credit card information. Reading a statement like his, implying that cookies should probably be disabled entirely, only contributes to that mindset, and I think that's not such a Good Thing.

Javascript:

This is another of those things where the newbie, I feel, is going to read this as "all Javascript or Java is bad." There are actually many commercial web-based applications (Microsoft SharePoint Portal Server or Windows SharePoint Services are two I can think of off hand) that simply won't function unless you have Javascript enabled. For the Windows-based users, that's why there are "security zones" - so you can define who you trust and who you don't, and what you trust each person to run on your computer. A blanket statement like you'll only know if Java or Javascript is running "when you need to reboot and strange things start to happen" is a FUD statement if I've ever read one. Are there malicious script kiddies out there? Sure. Are there more constructive ways to warn people about configuring security on their browser? You bet.


I'm sorry if I seem to have run off at the virtual mouth here. I just find that, as I develop applications of my own and support both customers internal and external to my company, I run into people who call me up and complain that applications aren't as "dynamic" or "functional" as they could be (or USED to be) and it always turns out they read an article like this and decided it was a great idea to disable scripting, cookies, and any other dynamic behaviors. I don't think disabling the technology entirely is the key - I think it's knowing who to trust and working accordingly. And that's the point I feel was missing from the whole thing.

Thanks for your time,
-T

Kick Me In The Icehole

Cabin fever has officially set in (seems I'm not the only one - Greg's had it, too). I'm working at home - again - and not having set foot outside the apartment for the fourth day in a row is working its desctruction on me. Jenn was able to make it to the corner store last night - barely - to get us some food, but the store was entirely out of eggs and almost out of milk, so they're screwed, too, being without stock.

Overnight everything iced up again and while I feel like I should just go into work for the social bit of it, I'm sitting in my dining room right now watching someone who's stuck in the apartment complex parking lot spinning their wheels on the ice... no thanks. They're not even running busses around here. No way can I make it to work.

I've added a new category - Geek Moments - to start handling the tech-related postings I have. I've already posted one today about the new features in ASP.NET. Woohoo!

Well, I should actually get some work done. Some time around midday I'm going to call Comcast and get my damn cable modem thing going. I can't be having this dial up thing anymore.

ASP.NET "Whidbey" Features

I just got a look at the features coming out in the new version of ASP.NET. Talk about cool stuff! Making the hard things easy, man. Check it out!

Finished AAC Conversion

I finished copying all of my CDs into AAC (MP4) format. The grand total:

7357 tracks
21.3 days
55.62 GB

That's a lot of stuff!

Iced Over

This is my third day in a row that I've been stuck working from home over a 56kbps dial-up connection and a software VPN. This sucks ASS. I've figured out that if I work entirely over Remote Desktop, then it cuts down on my bandwidth problem - just RD into my workstation at work and then let the bandwidth there do the walking - but working in 256 colors (to conserver bandwidth on my end) and waiting for connections to establish is seriously killing me. I used to justify not getting a cable modem because we never got online at home due to our computer being too slow. Now that I've got a faster computer we seem to be on it (and online) a lot more often.

In fact, I just finished with an IM chat with my boss (and good friend, Greg) who provided a few helpful recommendations, and I just bought me a Linksys WRT54G Wireless-G Router so I can network the cable modem service when I get it. He knows how to do that (and secure it) and will help me out. Plus, at Amazon it was like $17 cheaper than everywhere else, and had an additional $10 rebate. Ordering it through my own site, I will get a 5% kickback on my own purchase, and using my Yahoo! Visa card, I'll get 1% back there. So, like, a great deal. Now all I have to do is call Comcast.

Jenn is stuck at home today, too, which really sucks since she's not getting paid and can't work from home. No good a-tall.

I'm starting to get stir-crazy. I haven't been outside the apartment in three days and I need to go somewhere. I don't know how my grandparents do it - just sitting around their apartment day after day, never really going anywhere or doing anything.

In other sort-of-work-related-news, I've almost finished writing a web part for SharePoint Portal Server 2003 and/or Windows SharePoint Services that will allow users to display RSS feeds in a templated fashion. I was looking at using Tim Heuer's RSS Feed Reader web part, but our requirements (i.e., my company's requirements) necessitated a few additional configuration abilities, so I ended up writing my own. I think when I've got it up and running, I may open a GotDotNet workspace for it and release the source code. Maybe let the open source thing do a little work for me - have people contribute to it or at least provide ideas for enhancements. Might be fun.

Now that I'm thinking about it, I should probably split it off into its own assembly. (I have other web parts in the same assembly right now.) If that doesn't make any sense to you, don't worry about it.

Reading over what I've written so far, I realize that this is the sort of thing that goes through my head a lot of the time - how to program or configure things, how to solve problems in code, etc. - and that further makes me realize that some (perhaps many) of the people coming in here aren't going to understand what any of that means or why it's "cool." Or, at least, cool to me. I think I've written about that before - that some of my geek-out moments are less accessible than my general ramblings. Huh. Maybe I should start a second blog for my geekiness, or at least add a new category like "Geek Moments" or something where I can blast out crap that folks other than me don't care about. Something to chew on.

In the meantime, I should probably get to work. I've gotta write some documentation for my RSS Reader web part and ping Microsoft Developer Support for some code they're supposed to have provided me but didn't. Or, more accurately, code they did provide me with that didn't fulfill the requirements I gave them. Plus I need some additional caffeine in my bloodstream. I'm draggin' this morning.

First eBay Auction EVER

Well, I've put my very first item up for bid on eBay: A set of 10 Buffy The Vampire Slayer shirts. We'll see if this bad boy sells.

Let It Snow

I'm not much for cold weather, but that's usually not a problem living in Oregon. It rains a lot, it's dreary sometimes, but it never really just gets balls-out cold. I can probably count the number of times we've had snow that stuck in the past five years on one hand. That all changed, though, with this winter storm that blew in off the ocean. Yow! We've had snow, ice, freezing rain, gusty winds... you name it!

Since I am in Oregon, and Oregonians don't know how to drive in the rain, let alone the snow, I decided not to go in to work today. Besides the fact that I don't have chains or traction tires (should I happen to need them), I just don't trust the other drivers in the area. Watching the morning commute, I saw accident after accident happening because your typical SUV driver thinks that just because they have 4WD it means they can drive a full 70mph across black ice without issue. So I'm at home, surfing porn telecommuting via dial-up Internet access and VPN.

The inside of the apartment is warmer than it is outside, so condensation forms on the insides of the windows... but then it gets toward the metal window frame and freezes up, so we have ice crystals on the windows. My kitties are cold, too, so I pulled a chair up next to the fire for them and they're nice and warm, cooking by the fire.

Kitties by the fire

I've actually accomplished quite a bit today, all things considered. I've released a new version of the content on the company web site, wrote up a little programmatic redirector thing that will help folks out if they've got pages bookmarked that I moved elsewhere, and ran some troubleshooting on some intranet search engine stuff that was going wrong. Not bad at 56kbps. (Actually, 45kbps, plus the added degradation implicit in an encrypted VPN connection.)

The company closed up at 1:00p, but I'm still working. I figure I'm working at quarter speed due to the lame bandwidth situation I've got here so I'll tie up a few more loose ends before shutting down for the day. Then I'll get on working up the eBay auction descriptions for the items I'm going to sell (time to part with the Buffy t-shirts).

Warming Up For Work Again

It snowed like nothing else on New Year's Eve and New Year's Day, to the point that in some cases you actually needed chains or traction tires to get around. I, fearing the other drivers on the road and their inability to cope with such circumstances, did not leave the house, opting instead to watch movies and play games with Jenn. This was probably a much better use of my time in the long run anyway.

New Year's Eve Jenn and I went to the Winter Hawks game against Seattle and watched our boys lose a game they should have won had they not totally dropped the ball for the last half. After that we went home and ate junk food. We barely made it to midnight before we were just too tired and went to sleep. I wonder if that's evidence of my increasing age, that it demonstrates how much I care, or if I just lead the wrong kind of lifestyle to be able to stay up all night. We weren't out and about, though, and I think had there been more general activity (like a party or something) I probably would have found the energy to stay awake longer.

I've been working on this shelf that I bought at the craft store - trying to stain it a nice red mahogany color - and I'm finding that this project really isn't suited to performing in an apartment with no garage. I can't leave the shelf outside to dry, so I stick it in the computer room and shut the door (so the cats won't get on it) and now when you come in the computer room you get a nice high off the fumes. I can't wait to have a house with an actual garage and a place to do stuff like this.

I have also been working on ripping my CDs into 256kbps AAC format and I'm currently working on "The Very Best Of Rod Stewart." That gives me 6680 songs, or 19.4 days worth of music, totaling 50.48GB.

Finally, in my productive streak, I'm working on getting some of my stuff that I don't want anymore onto eBay. I've never sold anything on eBay before, but I'm sure it can't be that hard. I've taken the pictures of my items and now I just have to get the HTML together to display them properly and write up some descriptions. Then we'll see what happens.

I was over reading Penny Arcade and they were talking about a pretty biased New York Post article advising people to dump stock in Take Two Interactive because they produce the Grand Theft Auto series of games. I don't even think I want to comment on the ridiculous nature of the NYP article; the Penny Arcade guys say it best on their site. I will say, though, that seeing an article like this discredits the New York Post as a viable news source for me. If the article had shown up in the "opinions" or "editorial" section, I might let it slide, but this is supposed to be a business article reporting news. Instead, you get to read a tabloid-worthy tale from an obvious ultra-conservative. Just exactly what the world needs.