Home Improvements
posted on 04/18/04 at 01:37:58 am by Joel Ross
The house we own is just over 100 years old. Built in 1899, it was recently refinished. The guy we bought it from gutted the house, and redid almost everything. And he did a great job. We love our house - very few complaints about it.
Once we'd been here for a while, we had three major issues with the house. When he redid the house, he left the original front window in the house. It's about 10 feet wide, and has three pains to it - the two outside ones are about a foot and a half wide, and are single pane. Living in Michigan, in the winter, we lose a lot of heat through there. That's our first complaint.
The second was the main level bathroom, which he also didn't touch. It didn't fit into the rest of the house, and had old windows in it. We've since repainted the room, and discovered the windows aren't a problem. The bathroom is the hottest room in the house in the winter, and the coolest in the summer. Why replace the windows then?
The last complaint has to do with the basement - it's a Michigan basement, meaning it is dark, damp, and musty. We can store stuff in it, and our cats love it, but that's about all it's good for.
After painting the bathroom, we are happier with it, but not thrilled. It could use a new shower, and the tub is deep, yet only about a foot and a half off the ground. Getting our daughter in and out is difficult. But we can deal with those issues. We can't do anything about the basement either. And we knew that coming into it.
That leaves the front window. Worse than letting heat out in the winter and cool out in the summer, the wood is rotting completely around the outside of the window. Because of this, we've decided it's time to do something about it.
So, we've started the planning process. Two new windows and some extra wall between them - no more 10 foot wide window, but two seperate windows, which can be opened. But that's not the best part - we're also adding a deck on the front, which involves extending the roof line, and removing an existing cement porch. So far, we have a part list (including prices), and a drawing. Next, we need the permit, and the time.
Oh yeah. I need the skill too. I am not a handy person. Let me qualify that. I am handy, if I'm told what needs to be done. Without my father-in-law, I wouldn't have a clue what would need to be done. I grew up in a rental house, so we never did construction like this. Hopefully, with time, I'll learn. I've already been given ample opportunities to learn about wiring in my house, and I'm still confused by that - since when is a black wire the hot one? And why are bare copper wires acceptable? I've wired a ton of car stereos, and experience was always that bare wires are bad, and black is ground.
Anyway, by the middle of the summer, I should have new windows in the house, and a porch to sit on.
Categories: General
Typed Datasets or Custom Objects: Revisited
posted on 04/18/04 at 01:19:12 am by Joel Ross
After doing some more thinking about this, and talking to a colleague, I've come to a conclusion on this: KISS. Keep It Simple, Stupid. I was overcomplicating it.
The solution is to use a Manager design pattern that manages the objects. Instead of using custom objects or typed datasets, the data objects we use to create the collections are already data objects. We don't want to add the data access to those classes, so we use a Manager to facilitate CRUD functionality for our objects.
This approach is much simpler, and makes me feel much more comfortable than either of my other two approaches. The odd thing about this? It's really a mixture of the two approaches. I'll be using custom objects, and have a central class that handles the management of the custom classes.
This just shows me (once again) how little I truly get about best programming practices. Seeing the solution laid out in front of me (a solution presented to me by my colleague), it makes perfect sense, but it wasn't something I could figure out on my own. As soon as I saw it, I knew it was what we needed, and that uneasy feeling I had went away.
Categories: ASP.NET
Digital Cameras
posted on 04/16/04 at 11:58:48 pm by Joel Ross
Well, it looks like we are going to be getting a digital camera - our first, if you don't count the camera included on the camcorder, which I don't.
The one we have settled on (and have on hold) is the Canon EOS Rebel. We narrowed it down to three of them: This one, the Canon Power Shot, and a Nikon.
We were never thrilled with the Nikon, so that was quickly eliminated. Now we had it down to two Canon's, both at the same price. Feature-wise, they are very similar, with a couple of major differences: The Rebel is an SLR camera, takes pictures when you click (no delay) and has interchangeable lenses. The Power Shot, is an 8 Megapixel camera (compared to 6.3 for the Rebel).
Based on that, and the advice from friends that they can print an 8x10 with a 5 Megapixel camera without noticing any loss over a regular film camera, we chose the Rebel, because we could eventually upgrade the lense, and the SLR performance (which I don't totally understand, but was assured it was Good).
Anyway, we go to pick it up tomorrow - these things are hard to find!
Categories: General
Wings / Preds: Game 5 Review
posted on 04/16/04 at 11:23:22 am by Joel Ross
I watched much of last night's game, and I was impressed. I didn't get to watch all of it, between playing outside with my daughter, Survivor, and The Apprentice, but it was on the whole time. We have two TVs and from the kitchen table, I can see both, so I didn't have to switch back and forth, I just had to turn my head!
Anyway, the Wings played Their Game last night. This is the first time I've seen them do that in the playoffs yet. They won games 1 and 2 because of lucky bounces and / or Robert Lang, not because they relied on what got them to the playoffs. Last night, they finally played their game.
They completely dominated early, and didn't give up the chances like they had in the other games. They pressured, but were responsible. They were the more physical team, laying the body on their man every time they could. They dug out the pucks from the corners (even Hull did it!), and they made crisp passes through the neutral zone. They got traffic in front of Vokoun, and they rattled him early.
By the way, I was glad to see Shanahan take the interference penalty when he ran Vokoun over. They've been doing that to our goalies all year (more like three years), so now they know what it's like.
For the first period, and much of the second, the Wings played like a President's Trophy winner. In the third, I thought they fell back into "Skate in, open shot, shoot, save, face off" mode, but by then, Nashville had no chance.
I was kind of surprised there were no roster moves (other than Stumpy back in and Devereaux out. Stumpy played very well last night - a little kick in the pants for him. Good job, Dave!). I heard rumors all day about Wooley coming in, Rivers coming in, Hatcher getting benched (yeah, right!), Dandy moving up to forward, etc., but nothing. And that's good. Lewis basically sent a message to Nashville: "We can beat you with what you've already seen." And the score didn't get ran up - I think if the Wings kept up the pressure, they could have easily made it 6 or 7 goals. But at 4, Nashville knows they got soundly beat, but not humiliated - it takes out the revenge factor for them.
This series reminds me of 2002, when the Wings played Vancouver. Another team not used to the playoffs, but gave the Wings fits until the Wings figured them out. But that's not why I bring it up. Who did Vancouver fans hate? Chris Chelios. Who do Nashville fans hate? Chris Chelios. What happened in Game 6 of the Vancouver game in 2002? It wasn't broadcast too much, but Chris Chelios played a great game, and was a star of the game. Usually, they just skate out, wave to the fans (sometimes not even that on the road) and head back to the dressing room. Not Chelios. After the way fans treated him, he skated around like he'd won the Cup! Hands in the air, taking his victory lap, fans booing, throwing stuff on the ice. It was great! Maybe he can do the same in Tennessee on Saturday night.
On a more general hockey playoffs note, San Jose proved me wrong by dispatching the Blues in 5 games. Osgood just isn't a playoff goalie. The more I hear that, the more I believe it. The Wings won in '98 despite him being in net. And the playoff woes continue for St. Louis.
Now, the Flames just need to finish off Vancouver so The Matchup (Wings vs. Avs) can be delayed until the Conference Finals.
RSS Feed Working Again!
posted on 04/15/04 at 03:29:20 pm by Joel Ross
The RSS feed is working again. I'm not sure why, but there was a function call in the RSS file that logs each hit, and that failed because it was adding something to the XML.
I took it out for now, and the feed is working.
Categories: Blogging
Typed Datasets or Custom Objects?
posted on 04/15/04 at 11:17:06 am by Joel Ross
I'm working on a data layer for an application. It uses the Data Access Application Blocks (version 3.0) to do the data access. Above that, there's a Data Access Layer (DAL) that will provide an object oriented way to deal with the data. Nothing new about that. I've been reading Microsoft's Application Architecture for .NET: Designing Applications and Services and find it a very good read. I've already learned quite a bit about how to design applications to be scalable and flexible. I would recommend this to any .NET application architect out there.
Anyway, when building a data layer, it recommends using a Dataset to pass data around in, so that binding is easy to do, as well as a known interface to program against, easy for other developers to pick up on, lots of help available about datasets, etc. To make the programming easier, I decided on a typed dataset, but now I'm not so sure on the idea of a dataset at all.
Our application will load small chunks of related data at a time, with one master object, which has three or four collections off of it, each with anywhere from 2 to 100 objects in each. The smallest collection of those will have a sub collection, which will also have a sub collection. Here's an example XML representation:
<MyObject>
<MySubCollection1>
<MySubObject1>
<MySubSubObject>
<MySubSubSubObject />
<MySubSubSubObject />
<MySubSubSubObject />
<MySubSubSubObject />
</MySubSubObject>
<MySubSubObject>
<MySubSubSubObject />
<MySubSubSubObject />
</MySubSubObject>
<MySubSubObject>
<MySubSubSubObject />
<MySubSubSubObject />
<MySubSubSubObject />
</MySubSubObject>
</MySubObject>
<MySubObject>
<MySubSubObject>
<MySubSubSubObject />
<MySubSubSubObject />
<MySubSubSubObject />
<MySubSubSubObject />
</MySubSubObject>
<MySubSubObject>
<MySubSubSubObject />
<MySubSubSubObject />
</MySubSubObject>
<MySubSubObject>
<MySubSubSubObject />
<MySubSubSubObject />
<MySubSubSubObject />
</MySubSubObject>
</MySubObject1>
</MySubCollection1>
<MySubCollection2>
<MySubObject2 />
<MySubObject2 />
<MySubObject2 />
<MySubObject2 />
<MySubObject2 />
<MySubObject2 />
<MySubObject2 />
</MySubCollection2>
<MySubCollection3>
<MySubObject3 />
<MySubObject3 />
<MySubObject3 />
</MySubCollection3>
</MyObject>
Of course, each object has properties and defines relations between them. For example, MySubObject3
references a MySubSubSubObject
(great names huh?).
So is a typed dataset overkill for this? If I only load a handful of records do I need this? Also, our control that this data works against doesn't support databinding, so will I see a benefit from even trying this?
The other question I have is related to this. I want to inherit from the dataset for each object and add static methods to it for basic CRUD functionality (Create, Retrieve, Update, Delete). So what I was doing was inheriting from the DataTables created in the dataset class, and adding them there, but is that the correct way to do it? Or do I inherit from the dataset, add them there, and prefix each CRUD method with the object name?
I think my solution here will be one of two things. First is to drop the typed dataset and go with custom objects, each with their own CRUD methods. This also helps extract the database design away from the application, and you can still databind to public properties of an object. Plus, the CRUD methods become standard across all objects (myObject.Create("myId");
, etc.) making it easy to pick up how to code against it. The second object is to put my CRUD methods on an inherited dataset object, rather than the datatable itself, which could get ugly. Thoughts?
I've even started looking at Gentle.NET as a potential solution for the data access, but we'll see. I haven't played with it much, but figure I'll try it out Some Day.
Categories: ASP.NET
National High Five Day
posted on 04/15/04 at 08:49:15 am by Joel Ross
That's right! Today is National High Five Day! The holiday was apparently started a couple of years ago, and is growing strong. I'll put this holiday right up there with National Talk Like A Pirate Day.
By the way, tomorrow is Wear Your Pajamas To Work Day, in case you didn't know. My only gripe with this holiday is that by definition, you'll never get the day off of work!
One last thing. It's tax day too. I guess finishing your taxes is a great reason to give someone a high five!
Anyway, go out and find a stranger, and give them a high five!
Categories: General
Cujo Named Wings Starter
posted on 04/14/04 at 09:39:35 pm by Joel Ross
News: Dave Lewis named Curtis Joseph as starter in game 5
Good. He's cost the Wings a lot this year, and I don't really look at this as a true goalie change. This is a player coming back from an injury. Plain and simple. Manny Legace has been the back up all year, but because of injuries, he was thrust into the starting role. Now that Cujo is back from his ankle injury, he goes back in. Yes, he could have come back sooner, but Lewis wanted to stick with the hot hand, and now the hot hand isn't so hot anymore. So in comes Cujo.
This will do two things for the Wings. One, I think the Wings get better in net. This is the obvious reason for the move. Cujo brings much more experience than Legace has. He also has motivation. He wants the Cup. He also has to avenge last year's playoffs. And he (I think) wants to prove the Wings organization that they were wrong about him when they chose Hasek over him. The second advantage is a mental thing. The Wings are playing behind a different goalie, and mentally it changes how they play.
Do I think the series being tied is Manny's fault? Absolutely not. He has done nothing to lose a game. But change is what this team needs, and this is one of the moves that I think Lewis has been waiting to make.
Now, what do the Wings need to do to win this next one? Crash the net. Shoot with guys in front of the net, and make Vokoun make some tough saves. He'll give up juicy rebounds. He's confident now, but his confidence will rattle easily. Then, skate through their players. If they want to clog up the neutral zone and skate across the middle, the Wings need to make it a little more unpleasant for them to do so. Hit 'em. Hard and often. Knock them down. Make them think twice about skating through the middle. Lastly, play more responsible on defense. Don't let guys get behind you. If they do, force them outside, and slam them into the boards.
Basically, out muscle, out hustle, and out play Nashville. And don't play thier game. Play the Wings game.
Ok. Enough about the Wings until after the game tomorrow night. Back to fixing the site feed!
RSS Not Working
posted on 04/14/04 at 04:12:37 pm by Joel Ross
I am aware that the RSS feed doesn't work right now. I'm also not sure why. I think it may have something to do with this running on IIS rather than Apache, but I'm not sure about that either.
I'm looking at it, and hopefully it will be fixed soon.
Categories: Blogging
Conflict: Desert Storm II
posted on 04/14/04 at 01:35:25 pm by Joel Ross
First, let me start by saying I got an XBox around Christmas, so some of the games I post about are old news for most. But not me. That's why I can pick up quite a handful of games for less than $20 a piece. They're all new to me.
Well, the best pick up so far has been Conflict: Desert Storm II. At first, it was difficult, and I didn't really enjoy it. But then my wife, her sister, and her cousin were over, and we played it all together. That's when I really Got It. Once I didn't have to worry about controlling three other players, it was much easier, and I understood what needed to get done. I think the idea of 4 people sitting down and going through the missions is awesome. The interaction between players is great, and it makes it much more enjoyable.
After that, I started playing with just two other people - my wife and her brother. I controlled two of the guys, and they each had one. I started to get the hang of it, but more than anything, the guy just tailed me.
Then I found out I could send him off on his own. I bought the game used at Blockbuster, and it didn't have instructions, so I didn't exactly get that part of it off the bat. Luckily, a cold Saturday afternoon allowed me to run through the training missions, which taught me how to lead a team.
Now, I enjoy playing alone. I still think it's awesome to play with three or four people, but playing alone is good too. Two people right now would be difficult - my wife says she can't handle controlling two people, and my brother-in-law doesn't have the game, so he can never practice.
Which brings me to my next question. What other games are out there where you can go through a set of missions with multiple players, but you don't have to worry about controlling the ones that are "computer players"? I've heard Halo might be that way (but never played it), as well as some of the Clancy games, which I was a huge fan of on the PC.
Anyway, back to Conflict. The first level was easy - no big deal. I love sniping! Being able to take out the gunners without them ever even seeing me is great. I made the mistake at first of not getting the truck to head up the road, but it wasn't a huge deal (this time).
The second level is quite a bit harder. It took us quite a few tries to get by it (I did this one with three people the first time, but eventually did it on my own too). The tanks really had me for a while. With the first one, I kept taking all of the guys into the same place, and the tank would eventually spot me, and slaughter my guys. We finally figured out the trick is to get on either side of it, and let one side distract it, while the other side attacks. Then came the bombs from overhead. It took a while to find the guys calling those in, but now, it's cake to wipe them out. Then more tanks. It's a long level, but it is fun, especially once you figure out a few things.
Level three was tough for a while. I had no idea where to go. At one point, I had one guy stuck somewhere, and the other guys couldn't get there. By this time, I was able to play by myself fairly well, and we hadn't had a good get together to forge through this level as a team, so I did it myself. "Under Seige" is a good explanation of the level. I lost the helicopter a couple of times before finally beating it. Then I headed the wrong way. Eventually I figured it out, but it took a while.
Level four is another cool level. Sniping all over the place! Other than that, it's fairly straight forward. The alarm going off doesn't seem to affect much, but then again, I am playing the easy level right now. I don't want to give away too much, but here's something useful. Take the truck - well, first clear out an area, then go get the truck. I made it to the end before I realized I needed the truck. Yes, I ignored the suggestions of my teammates who kept saying "Let's go get the transport." I figured, I'm in charge, don't boss me around!
I passed that one the other night around 1:00 AM. No progress on level five yet, other than a brief start, where I blew up the whole team right off the bat.
I'm still looking for another game that I can play as a team with my wife, but for now, I'll just play alone and try to get through this one.
Categories: XBox