Jeff and .NET

The .NET musings of Jeff Putz



My Sites


August 2006 - Posts

Trying out Google Apps

I got approved to try Google Apps today. I decided I'd try out using Gmail as my mail server on the domain. So far, I like what I see.

It's easy enough to handle the e-mail switch. You set your DNS MX records to point to a few different domains of theirs, and off you go. I was receiving e-mail there in ten minutes.

I have a couple of different motivations for checking this out. First of all, I love the searchability of Gmail, and the fact that it's simply everywhere. And with POP access, you can download the mail and "own" it even if Gmail were to disappear or start charging for it.

The other thing is that I really kind of want to get e-mail service off of my server. I'm already doing around 30% average peak CPU utilization (because of some really bad code that's three years old), so whatever I can pull off will help.

If I like what I see, I may switch over my primary domain as well. We'll see!

A POP Forums milestone
This evening I successfully made a post and reply with a newly registered account in POP Forums v8. It even logged the security actions.

Half way there!
Posted: Aug 30 2006, 11:01 PM by Jeff | with no comments
Filed under: ,
The wonders of data binding in ASP.NET v2

One of the things that really got me excited about .NET v2 in early 2004 was the more declarative approach to coding ASP.NET pages. I like the idea of having a solid class library and then using as little code as possible in the actual page to get things done. The basic SqlDataSource in combination with various UI controls are great examples, but these barely scratch the surface of the cool things you can do.

The magic really starts with the DataSourceControl and  DataSourceView controls. Check out the code samples there. They really show how simple it is to roll this stuff yourself. It frees you of having to mess around with a ton of code and business objects manipulated in page code.

It's not all fun and games all of the time, mind you. It's still not easy to put a DropDownList in a GridView, populate and set its selection, and do it all correctly in the event structure for an edit. In one recent prototype I built, I actually had event handlers output to trace, for rows, the drop downs and the grid itself trying to figure out how to get it all to work. I think I got there, but it wasn't easy.

Doing custom ITemplate controls is a lot of fun too. You know how it is. Repeaters don't do enough, GridViews and DataGrids do too much. But roll your own template-based control, now that's alright! I've got a couple I wrote for the next POP Forums, because I wanted it to be as easy as possible to roll the UI the way it makes the most sense, including the insertion of ads. I'm really pleased with it.

I will post some code, hopefully soon. Crazy busy lately, but will get it up there eventually. 

Posted: Aug 29 2006, 01:56 PM by Jeff | with 2 comment(s)
Filed under:
Republican spammers

The GOP is spamming me. They're sending e-mail, with embedded tracker pixels, and no unsubscribe link.

Not going to win any votes that way! 

Posted: Aug 29 2006, 10:31 AM by Jeff | with 13 comment(s)
Filed under:
Wisdom of crowds my ass

Digg Forces Shutdown of Domain

Note all of the comments saying how Digg now suX0rz!!!!111 because of this action. Do these kids even live in the real world? Trademark law is pretty straight forward, and you have to police your mark or can be challenged. Today it's some kid doing something he thinks is harmless, tomorrow it's AOL.

But all of those commenting people seem to think that Digg is doing something evil here. Get over it. They're doing what they have to in order to protect their brand. In my opinion, they're also keeping some scab from leeching off of their success too, which I think is 100% valid.

Posted: Aug 26 2006, 09:27 AM by Jeff | with 7 comment(s)
Filed under:
Reporting on massive amounts of data in real time: Need input

Since I've been in the content business online for eight years or so, advertising is the life line that pays the bills. Not my first choice since it has been relatively unstable since the start, but it is what it is.

Eventually the time came where I needed to develop my own ad serving application. The truth is, it works extremely well in terms of serving ads. Where it doesn't work that well is reporting from the millions upon millions of rows generated.

Here's the situation. Every time an ad is served, a row is recorded that contains it's ID, it's location (an ID for a specific ad position on a page), the time it was served, and two GUID's, one for the user's session and one for the user's lifetime identification. The last two are used for session and overall impression capping. They're indexed, and surprisingly enough inserts aren't hindered. I seem to recall an index on the ad's ID as well.

Reporting queries ask for total counts in a given time span, either by the ID or the location, and need to be displayed with hourly or daily totals. Originally I had a background thread that counts up totals every hour and puts those in a new table, but even querying that data is too slow.

Can anyone with more SQL experience offer any suggestions? 

Posted: Aug 24 2006, 10:52 AM by Jeff | with 8 comment(s)
Filed under: ,
No Xbox Live networking in XNA

From the XNA FAQ:

Q: Does the XNA Framework include the ability to use Xbox Live?
The initial release of the XNA Framework on the Xbox 360 will not have any support for networking. We realize this is a big area of interest for game developers and are actively working on a solution for the next release.

Boo! What's that about? For the first time in my life, I thought of a game idea that actually sounded like something I'd like to develop, but it requires network support. I'm so disappointed.

Posted: Aug 24 2006, 10:45 AM by Jeff | with no comments
Filed under: ,
The easy way, the hard way and the fast way

Between my personal projects and those at my daytime gig, I've had a lot of discussions lately about how to write code. You can do things the easy way, the hard way and the fast way.The

reason I think about this is because I'm one who frequently gets so wrapped up in detail that I often fail to actually deliver something functional quickly. There are pros and cons to all of these ways, and sometimes they overlap. In an ideal world, we want everything to be easy and fast.

Easy means you can roll with something that already exists, or mostly exists. You find that magic class, and you bang out what you need. The downside of this is that you may be compromising flexibility elegance.

Hard means learning new things, applying a design pattern you don't fully get or working through some refactoring that spawns a million classes. The benefit is that you end up with something flexible, clever and reusable.

Fast means the path of least resistance, even if it means hacking out some functionality you already have somewhere. It's like concatenating a string because you don't know about, or don't understand, String.Format(). If other people are going to consume or molest your code, this isn't an option.

I know what you're thinking... duh, you need to combine all of those elements. I believe that's true. But as is the case with many things abstract and emotional, sometimes it's hard to reconcile it all into actionable standards.

Developer snobbery revisited

My last post seemed to rile up a few people, which is not entirely surprising since I used strong language about something that, in the big picture, probably isn't that important. There are really two things I think about when I look back at the comments in that post.

The first thing is that there are a lot of people who defend Microsoft when they really don't deserve it. It's one thing when mindless Slashdotters say "M$ suX0rz teh big one!!!!!11," but to suggest that I, as a customer, should do something about their piss-poor documentation is the opposite extreme. I hold the company to high standards because at the end of the day, I feel they have the best products in certain areas and I'd like them to keep that up.

The second thing, and this is something I blogged about way back in 2004, is that the .NET community still has a lot of pricks that make it feel generally unfriendly, especially for people that are trying to learn more about the platform. I'd like to think that after writing a book and giving away an app for years (however poorly I may think of it), I'm entitled to complain a little about Microsoft, especially having been on the front line to educate and mentor in various roles over the years. I don't ask for an MVP title or whatever (apparently that's reserved for people who only help online), but whatever Microsoft can do to make my job easier, I'll press for it.

I'm sure I'm guilty of it too, but don't flame people because you think you know what they're all about after a few sentences on a blog or forum. 

Fire the person that wrote this documentation

I generally have the opinion that Microsoft documentation has gotten a lot better, but then I run into crap like this...

Yeah... that's an example that show not functional use of the method, but rather a not implemented exception piece of code.

Someone should be fired. 

Posted: Aug 17 2006, 10:33 PM by Jeff | with 11 comment(s)
Filed under:
More Posts Next page »