Archives / 2004
  • Text searching fun

    I mentioned the other day I wanted to figure out a good way to search volumes of text in my forum without the full-text engine of SQL Server. I didn't really find a lot, other than the way that SQL Server does it (or apparently does it, I've not seen a really thorough explanation).

    The obvious path is to break up every piece of text and create a table full of words, filtering out the "junk" words like "the" first. So I copied the posts from CoasterBuzz (about 440k posts) and gave that a shot with a quick prototype.

    I started to get bored with the indexing process and stopped it at about 2 million rows. I'm not sure why, as I had no reason, but I was skeptical that this was going to be very fast. With an index on the Words column, I started running some queries in Query Analyzer, and what do you know, the searches were nearly instantaneous. Huh. Not the results I expected. I did some AND's and OR's, still fast.

    So now I'm scratching my head wondering why I didn't try something like this, I don't know, years ago. I expected an endless tweaking effort to get performance to an acceptable level, and it just works. Stuff is never this easy! I assume that boards like vBulletin do something like this as well.

    So now I just need to figure out some kind of word ranking scheme. For that I think I need to just look at existing topics that I as a human understand as relevant to a word, then apply that to some goofy algorithm.

    Hooray for things being easy for a change, and hooray for SQL Server!

  • A probably obvious question about generics

    Don't hate me because I'm ignorant... remember that I don't have a formal programming background. If I'm to understand generics correctly, using System.Collections.Generic.List<T> will be ridiculously faster than using an ArrayList, because everything is boxed/unboxed to and from an object in an ArrayList, right? Whereas List<T> is a collection of objects that are a predictable type?

    In a related question, is BinarySearch() still the best method to find objects that have a particular property value? And I assume that the type I'm searching has to implement IComparer?

  • Fed courts say don't tax VOIP

    I was happy to see that a federal court upheld the notion that states shouldn't be taxing voice-over-IP service. This is the correct decision.

    States like New York are trying to make the case that it's just like any other phone service, but that's not even remotely true. Heavy regulation of traditional phone service is justified because it's essentially a limited resource and a natural monopoly. It's not like every company can string up a phone network. Cable TV is regulated under the same premise.

    Have you looked at your phone bill lately? I'm absolutely astounded at the number of taxes. They take up one entire page of the bill now. It's ridiculous. The only thing that has kept me from flipping to Vonage is that, for the moment, I can't carry over my phone number... yet.

  • Looking for text searching strategies, thread communication in a Web app

    I'm looking for articles that explore text searching strategies. I've read a lot of general ideas about creating word indexes and giving the words rank based on frequency, and referencing those indexed words to the database records that contain the full text. I'd like to read something with a little meat to it regarding performance and such.

    Anyone personally take a shot at this kind of thing? And no, I'm not looking for, "I just use SQL Server's full-text indexing." :)

    Related to that, I'm curious if anyone has advice on having a Web application communicate with a thread it launched. Please, let's not go into the case against launching new threads from a Web app. The kind I'm thinking of (like indexing text) would be run periodically on a timer from an HttpModule, not user initiated stuff.

    Your opinions and knowledge are, as always, appreciated.

  • Open source and documentation: Round 2

    In my last post about open-source and documentation, Chris Martin makes the assertion that: "If you don't like the way something is implemented, you do it yourself and it ends up in the distribution of said software... Instead of complaining, you should contribute."

    I'm not even sure where to begin with that one. I would say more than half of the projects I've ever encountered on SourceForge don't have an ounce of documentation. I'm the last person in the world that believes every projects needs a scope document and a stack of use cases, but if you can't at least write some basic documentation to get me started, why should I be interested to continue or improve upon your work?

    Furthermore, this "contribute instead of complain" nonsense is laughable. The biggest open-source zealots say this kind of thing all of the time, and I can't help but wonder what their time is worth. I can do 30 to 40 hours a week for work, but the rest of the time goes to family, friends, and even getting my ass kicked on Halo 2 from time to time. If those work hours aren't generating revenue in some way, I'm really not interested. The good cause of freesoftwaredom is not even on my radar. If there's not a good open-source implementation of something, I'm perfectly fine with paying someone to do the work and hold them accountable.

    S Dot One says: "You got the ULTIMATE documentation with open-source... The source code itself."

    If I had a dollar for every time I heard that in an agile workshop, I'd live somewhere more tropical than Cleveland. It's the worst cop-out in software development today. Yes, it's true, that in an agile/XP environment that the code is generally simple enough that you should be able to read it and understand what it does. I get that. We heard that over and over again in a stint I had at The Second Largest Auto Insurance Company. What no one ever explained is how that translated to some kind of context for the use of said code.

    The truth is that no matter how narrowly focused a piece of code is, it's rarely something that you can consider language/platform neutral, and there's almost always a different way to do exactly the same thing. So when it comes time to revisit the code, revise it, change it, whatever, you're left scratching your head because you have no idea what context the code was running in, or what business problem it was trying to solve. I saw it happen even in short itterations from an agile team.

    I guess what bugs me the most is that people don't speak up and form their own opinions about things like open-source or agile. I don't know if it's fear of retaliation, fashion addiction, consultant backlash, or what.

    Am I against open-source software? Of course not. I've been giving away POP Forums for about a year. I also document all 600+ classes, properties and methods. I don't remember what I wrote and what my own reasoning was; I certainly don't expect someone else to guess.

  • MSNBC: Lame Lame Lame

    When you get bounced out of Hotmail you of course land on the MSN page, which has links to top stories on MSNBC. So they were plugging the amateur video from the tsunamis that sadly have killed nearly 30,000 people at this point, and I was curious to see just what this looked like.

    I bounce on over there and launch the video clip. Wouldn't you know it, you can only view it with Internet Explorer. Could that be any more lame? I can deal with having to use Windows Media Player, but MSNBC wants to force me to use IE? And if I'm using a Mac I should do what?

    For all of the crap that Microsoft has taken for exercising its monopoly power to dominate certain markets, and given the pending litigation in Europe, I can't believe they would allow something this lame to occur.

    Sure, it's their business, and they can require users to use whatever software they choose. However, when you start doing this with news media, you're doing little but giving your critics the fuel they need to blast you some more. Controlling the distribution of news media in this manner is a real kick in the nuts to the journalists that risk their lives to get the story.

  • My frustration with open-source: Documentation (or lack thereof)

    I have to say that the .NET world if fortunate to have a lot of open-source stuff available. I can't even tell you how much I like NUnit.

    The problem I find, however, with a lot of open-source software is the complete lack or reasonable documentation. That drives me nuts, although I'm not entirely surprised. It's one thing to give away and share your work, but that scenario doesn't exactly provide a ton of incentive to document it properly.

    NUnit ended up being useful to me I think because it was in use at a project I was on, and it essentially has its own book. Most stuff I've encountered doesn't have that luxury.

    I'm not suggesting even for a moment that the world would be a better place without these projects, it's just that the price of entry is kind of high for something that is monetarily free.

  • I think I'm going to write another book

    Yep, the more I think about it, the more I think I want to write another book. I've got an idea that I think will sell, I can write it reasonably faster than the last one, and I'm feeling some enthusiasm for it. I'm going to put together a proposal and see if anyone is interested.

    As my role in Maximizing ASP.NET winds down leading to release, I have to say that working with the folks at Addison-Wesley has been a really good experience. They bend over backward to give you the support you need. I felt even before this that they had the best ASP.NET titles on the shelf, and I'm really excited that it was them that picked up the project.

    On a side note, I noticed at Border's last week that there aren't really as many ASP.NET books on the shelf as there used to be (casual observation, not a scientific statement). Before Wrox went down the tubes and was sold, there were a lot of really quality niche books that covered specific areas (threading, text manipulation, performance, etc.), and I don't think those areas are being served now. Granted, with such a narrow focus, I don't know what the market is for those books. Did they even sell three or four thousand copies? I get the impression that it's hard to justify publication of anything that doesn't at least get into the five-digit count.

  • Are typed ArrayLists a good idea?

    I love ArrayLists. I find them to be among the most useful collections in the .NET Framework. I remember seeing a discussion somewhere a few months ago about making ArrayLists into strongly-typed collections. This was achieved by simply inheriting ArrayList and overriding the Add/Insert methods to make sure the objects being added were a particular type.

    I don't know enough about what's going on under the hood to know if there's a performance penalty involved with this. Is checking the type of an object an expensive process?

  • To color text, or not color text

    I mentioned the other day that I was going to revisit the text parsing engine of POP Forums and essentially start over. What a difference that made. In less than a day I turned years of crap upon crap into something much leaner, about a third less code. I got there with about twice the unit tests that I originally had. Around a dozen regular expressions took care of all of my line break and blockquote woes that I kind of eluded to in that last post. I started with the first test, and kept working through them until they all passed. I don't know if it's the most elegant thing ever, but it appears to work. I dropped it into two of my production sites and so far, so good (yeah, TDD makes you that confident).

    Since this entire exercise is really about arriving at the next version, I can now think about features. The big question is, do I want to endeavor into the world of allowing different text colors, and perhaps text sizes? On the pro side, it would be something other forums already offer. That's the entire list for the pro side.

    On the con side, I have to deal with different implementations of rich text editors, decide how best to present the changes (span tags, probably), decide if the various heading tags make the most sense, and above all, know that I'll be responsible for some forum where I see something like:

    o my f***ing god!!!!!!!111 u suX0rZ!!!!111

    One must be a responsible code monkey, after all!

  • How is this for browser stats?

    While the group of people that use CampusFish is small, I was astounded to see that only 20% of my visitors use Internet Explorer. Wow. Granted, I know several of the users are Mac guys (they blog about Mac stuff quite a bit), and several others are Firefox users. I assume the other 20% are the people I don't know. ;)

  • Little victories in programming with test-driven development

    Those of you bored enough to read my blog regularly probably know that I coach 17-year-old girls in junior Olympic volleyball. In teaching my kids to improve upon their skills, I frequently tell them not to worry so much about the big picture when I want them to concentrate on the smaller things.

    For example, to pass accurately on serve receive, you have to be behind the ball and squared to your target, pushing out with your legs, not swinging your arms. If a kid is diving around because they aren't moving to the ball, I set the goal to simply meet the ball, body firmly in front of it. If they can do that consistently, I'm not as concerned about them squaring to target, using their legs or whatever. It's a little victory toward the bigger goal.

    Using test-driven development is a lot like that. You write all of these tests, maybe hundreds, and start to write code that passes the tests. There's no way in hell you'll pass them all the first time you run the tests (if you do, you're doing it wrong). But every test you pass is a little victory toward the bigger goal.

    If you can concentrate on said victories, I think you can get a lot more enjoyment out of even the most mundane programming tasks. That's why I like TDD.

  • Revisiting my own blog system on CampusFish

    Today I reached the milestone I was hoping for in the revisions for CampusFish, my little blogging project. After a year, it has only made enough money to cover the SSL certificate, the domain name and some of the bank fees, but it's worth it because I use it. It's where I drop my F-bombs and frustrations on the world and talk about stuff that no one here would likely care about.

    When I first launched the site, it was kind of limited because I was so geeked up about using the POP Forums class library to power it all. It still does most of the heavy lifting, but there are about a half-dozen or so data access methods now that do the rest.

    It's a lot more simple than .Text in terms of the code base, but it basically does the same thing. There are some additional features like the photo galleries, a recent comments list for members, private messages, friends lists, profile photos, etc. Even prior to the revisions, it was apparently compelling enough for the small group of users, because they're very active with it. Some are having good times with the custom style sheet functionality.

    The fun code exercise in this case was doing the trackback mechanism. It's pretty straight forward once you get your arms around the protocol. Granted, users can choose to disallow public comments entirely, so I don't know how much use that will get.

    I've gotta come up with some more interesting style sheets for the users, but that will come in good time.

  • HTML philosophy: <br /> vs <p></p>

    I decided that perhaps I should rewrite my text parsing engine for POP Forums from scratch instead of trying to band-aid it over and over. So with a clean slate, I have a few decisions to make.

    I've noticed that other forums don't get into parsing paragraph tags at all. Instead they use line breaks for everything. What do you think, is this acceptable? If my understanding of XHTML validation is correct, it's OK as long as it's nested within some kind of block element, like <div>. It's certainly a lot easier to parse line breaks instead of properly closed <p> tags, that's for sure.

    What's your take? I don't get religious about these things the way some people do, so I'm easily influenced.

  • If we had the Internet in college

    I was chatting last night with a high school kid that frequents two of my sites. Smart kid, has a site about a certain amusement park, fortunate enough to have his own PowerBook. We were talking about advertising revenue. He uses one of the same ad firms I do, and he does OK even with limited traffic.

    It made me think... what if the Internet was as mainstream today as it was when I was in college (fall '91 to spring '95)? I remember busting my ass on crappy work-study jobs, along with my radio gig, just to pay the rent my senior year. I was lucky to clear $300 for a month working 80+ hours. Not a lot of beer money, or money to buy other essential items like CD's and a replacement VCR when my hand-me-down died. I also wouldn't have had to settle for my ancient IBM PS/2 Model 25 with no hard drive (though ironically it was my first computer used to touch the Net).

    Today, nearly every kid in college has a computer, a laptop even, with a wired dorm. There isn't a doubt in my mind that if I were in college today, I'd have some site and I'd clear a grand a month to seriously party. I might have even studied now and then.

    And the effects aren't limited just to income. My former volleyball kids, now in college, are always connected and online. They're there in my buddy list 24/7. There's a totally different social culture aided by the Internet. I don't know if that would've resulted in fewer lonely nights or just a different means to receive a booty call, but it would be different, regardless.

    Maybe the weirdest thing is just that life hasn't changed much in ten years now that we have a mainstream Internet. On the other hand, everything has changed. It's a very strange dichotomy.

  • Naive about IE? Give me a break.

    I say:
    "I've never understood how Microsoft has profited from IE's dominance."

    Charles says:
    "This is a very naive view. There is a certain base level of standards compliance that all browsers implement. Beyond that, Microsoft has added siginificant functional enhancements to IE which allow it to do much more than browers such as Netscape or Firefox." He goes on to say it has more to do with intranets than the Internet.

    Either way, I have to respectfully say that he's full of crap. That sounds like a quote from the MS PR handbook.

    Anyone using Firefox right now that is missing out due to the lack of "significant functional enhancements" in IE? Anyone?

    *crickets chirp*

    That's about what I figured. Yeah, I'm sure you can find some exceptions, but give me a break. Heck, even in Corporate America I see no IE-dependence. In fact, I get mini-throw-up every time I start a new gig and find that a company is still hanging on to Lotus Notes databases, Domino Web servers and such.

    I'm as much of a Microsoft cheerleader than anyone. MS products have changed my life and I wrote a book about them. But I haven't seen anyone give any compelling evidence that IE allowed them to earn actual money. Yeah, they killed Netscape by pushing out IE, but so what? Netscape was a company with the most riciulous business plan ever conceived (if there really was one at all), and the product sucked and got worse every release. The hardcore Internet dorks like me started with Netscape, and eventually moved to IE because Navigator sucked.

    That's what kills me about the last six or seven years about this saga. There are really two issues that everyone intermingles into this demonization of Microsoft. The first is that Microsoft used its monopoly to squash competition. Seriously, what competition did Netscape offer? I'm not saying it's right, but to suggest that Netscape was ever going to be a bona fide profitable business is a fantasy.

    The second issue is that proprietary IE features would cause Microsoft to own the Web. (Ironically, it should be noted that Netscape's early versions had "extensions" to HTML that did the very same thing.) Yet here we are talking about the relative explosion in market share by Firefox. Huh. A lot of good that desktop monopoly did Microsoft, eh?

  • The inability of IE to evolve

    Wow, have you read this story from The New York Times (via The author just slams the guy from Microsoft, and quite frankly, he kind of deserves it for some of the stupid things he said. Granted, I'll offer that they might have been taken out of context, but that last analogy isn't very good.

    My personal feeling is, and has been since I first saw the Web with Mosaic 1.0, that the browser is largely inconsequential in terms of any company's business. If I were to start a new company today, a company that builds Web browsers would not be among my considerations. I've never understood how Microsoft has profited from IE's dominance, or how Netscape back in the day made a buck when you could download the browser for free. Neither company has scored any extra revenue from me, any more than Mozilla has by me using Firefox. The only thing at stake is to say, "ours has more users." That's such a dotcom business plan.

    Now of course the Microsoft haters (you know, the tools and morons that refer to the company as "M$," because that dollar sign means capitalism is bad or something) are going to say that they're trying to extend their desktop dominance to the Web. Really? How? Has IE's dominance prevented you from using the Web? There was this long-standing theory that as applications more commonly became Web-based that the browser would be the gateway to those apps, and somehow Microsoft's browser would control it all. That was a stupid theory because it assumes that the Web itself could only be viewed by IE.

    If you want to bitch about IE, then by all means complain about the legitimate problems like security and the worst CSS rendering of any browser. Those are things that irritate the crap out of me, and they're the reason I don't use IE anymore.

    Despite this, Microsoft is not being harmed by my decision (as a .NET developer, they're obviously getting my money in other ways). In fact, I start to wonder why Microsoft continues to build a browser at all. The one they have doesn't work as it should, there's no sequel in sight, and with XP SP2, there isn't a single reason you need it (Windows Update works on its own, without the browser itself).

  • Grumpy blogging

    It occurred to me that I've made a lot of posts lately indicating that something "sucks" or "blows" or is "terrible" or something similarly negative. It seems I blog a lot when I have something to complain about.

    I think this is what happens when you spend too much time in front of the LCD glow. I'm actually very happy, and enjoying life. It's just that in this profession, given my area of "expertise" (stop laughing), there isn't much to talk about right now. I did my fair share of Visual Studio and ASP.NET v2 cheerleading last summer while writing my book.

    Actually, there it is... I think I figured it out by talking through it. Since I can't use Whidbey in production, I need to use VS 2003 and ASP.NET v1.1 so I can pay the bills. Indeed, that's enough to make anyone grumpy. Aside from mangling the crap out of my HTML, VS 2003 gets pissed and won't open a Web project if the web.config for it has some other IHttpHandlerFactory taking requests. You get the drive doesn't map to site error nonsense. Honestly, who thought that rooting your Web apps in IIS was a good idea? I'll never understand that.

    But alas, it won't be beta forever, and this insanely long testing period will result in a nearly perfect product, right?

  • Strong Bad does radio, and it's hilarious! Oh, and radio still sucks.

    This is to see who really reads my blog...

    In his latest e-mail, Strong Bad takes on the stereotypes of radio.

    I laughed so hard at this I nearly pee'd my pants. Seriously. If you know anything about my resume, you know that I double majored in radio/TV and journalism in college, and I worked professionally in radio for about two years. I'm not sure if it will be as funny to you without that radio experience, but for someone that loved the medium and loathes what it has become, it's freakin' comedy gold.

    And speaking of radio, it sure sucks. You can trace the death of good radio back to the days when Congress was into deregulation for the sake of deregulation. When the FCC lifted ownership restrictions on radio, therefore handing the scarce resource of FM bandwidth over to huge media companies, they killed every last chance that radio had to be personal and local. The shit on the air now is programmed from New York, for New York tastes, is pre-recorded, has no show component to it, and the formats absolutely blow. Despite all this, radio revenue has never been higher. Why? Because small local companies can't get their hands on a frequency to challenge Clear Channel and Infinity. It's a joke.

  • Rich text editing still blows

    Wow do I hate dealing with rich text editing. The funny thing is, way back when POP Forums was a product I actually sold, I think I may have been the first to use some very basic bold/italic functionality in a forum. Now there are some nice controls out there, free even, but trying to get them to work as you'd like in both IE and Mozilla/Firefox is hopeless.

    The latest version of FreeTextBox has one problem: By default it renders bold and italics with span/style tags/attributes. That's bad because what I need for parsing is <b>/<strong> or <i>/<em> tags. To Firefox's credit, it's smart enough to combine them into the same tag, but again, not really what I need. I did find this little gem buried in the Mozilla documentation and tried to work it into a derived class:

    public class FTB : FreeTextBox
      protected override void OnPreRender(EventArgs e)
        base.OnPreRender (e);
          "<script language=\"javascript\">if (navigator.userAgent.toLowerCase().indexOf(\"gecko\") != -1) document.getElementById(\""
          + this.UniqueID.Replace(":", "_").Remove(0, 1)
          + "_designEditor\").contentDocument

    Unfortunately, while the relative client-side script works great when I plug it into a static HTML representation of an editor (the useCSS command), it works great, but causes some kind of component error in Firefox's Javascript engine when I try to use it in a live FreeTextBox.

    My next attempt was to try and upgrade my own little control, however ugly it might be, to work in Firefox. Works great, except for the part about copying the HTML from the iframe to the hidden text field. In my version, I use the iframe's onblur event to copy, so if you hit anything else on the page, it'll copy it over before a form submit (by postback or otherwise). Firefox doesn't seem to listen for onblur from an iframe, so that doesn't work. Despite a lot of searching through the FreeTextBox script, I can't see how it does the copy.

    So here I am, back at zero.

    There really should be a good Flash-based editor, though that of course would cause you to lose text if you accidentally moved back or forward. I've seen a few out there, but they rely on Flash's built-in functionality, which, believe it or not, throws in more junk than IE ever did.

  • Bought a new Intellimouse Explorer

    I bought the first Intellimouse Explorer back in... uh, well, actually I don't know when it came out. It actually crapped out on my in the first year, but Microsoft sent me a replacement. I've had that one ever since. It has been at least four years, maybe as many as six.

    In the past few months, it started cutting in and out on me, and it wasn't a short in the cable. If I'd cross from the far end of one screen to the opposite end of the other (I use a pair of LCD's), Windows would make the disconnect then connect noise and I'd lose the cursor somewhere. I could almost deal with that if it wasn't for the noises! :) Alas, I decided it was finally time to retire it. It had been good to me. The Microsoft logo had long since been worn off and there are actual grooves in the plastic from my fingers.

    I replaced it with the new v4.0. Why not? The last one lasted so long. I got the wired version since I hate changing batteries (as my wife does this regularly on hers). The new version is roughly the same shape, but lighter. The only thing I don't get is why they made the forward and back buttons smaller. Then again, I don't know how many times I've accidentally hit them when grabbing the mouse on the old one.

    My Natural Keyboard Pro is still working. It looks disgusting, but it works. I hope it continues to hold on, because I haven't found any other keyboards that have the same tactile feedback I like.

  • Call for text parsing help

    As much as I'd like to think that I can continue to improve POP Forums on my own, I can't. I need some help.

    At the root of my problem is the text parsing class. In a nutshell, this thing is supposed to turn the HTML of a rich text editor into "forum code," and turn forum code into valid HTML for display in a forum thread. It mostly does this pretty well, but there are issues related to parsing e-mail and URL's correctly, namely if they appear in tags already.

    I've uploaded the class and the NUnit tests here. There are basically just a few tests that don't pass in the ComplexTests method. If anyone would like to take a stab at fixing, please, be my guest and I'll be eternally grateful. I realize the code isn't what it should be, and that starting over is probably a better idea, but you're looking at six generations of band-aided code. Rewriting it entirely is something I just haven't really had time to do.

    EDIT: Yes... the class won't compile because I left out the rest of the project. If you want to give it a go, comment out the section that calls the Emoticon class and the censoring functionality. There may be some tests that test emoticon parsing as well, so you'll have to ditch those. Sorry... it would've been too much to try and get it all together, including the config files and database. :)

  • Wiki == horrible documentation

    I'm sure it won't make me more popular by saying it, but I think the Wiki craze among developers is nothing to get excited about. Yeah, it's neat that you can implement such a system, but it seems to breed useless content.

    For example, I noticed that FreeTextBox released a new version, so I thought I'd check it out. I downloaded it, but went back to it in a test project on a remote server, where I did not have the original zip (and therefore, not the help files or code samples). I thought, hey, no problem, I'll just check the docs on the site. What a waste of time that turned out to be.

    I went to the installation page looking to see what the @Register directive was (seeing as how I had no idea what the proper namespace was). Nope, not there. After looking around some more, I eventually landed on a page with nothing on it at all, and no navigation to get me to something useful.

    I'm not a hater. From what I can tell, this version of the control is extra cool, and the price is right. And yes, I'm sure someone wants to comment that I should have had the stuff in the zip file with me, but I didn't. I don't think it's that ridiculous to expect that you'd actually find meaningful documentation for a product, free or not, on the site from which it came from.

    I've yet to see any Wiki evolve into something useful. The concept has been around for a long time, and for awhile you'd think that blogging .NET developers saw it as something that would change the world. But here's the thing... Having run sites that encouraged the contribution of content from anyone on the planet since 1998 or so, I can tell you from experience that this kind of Utopian everyone-can-edit idea won't ever work. You can't even trust people to behave in a discussion forum or in blog comments, and you want to have a site anyone can edit content on? Without some kind of moderation, it's useless, and if moderation is to be practical, it has to be of structured data.

    So tell me why I'm so uninformed.

  • Still unclear about using RewritePath for a default page

    I read Scott W.'s article on URL rewriting in .Text, and it's pretty straight forward. What I'm still not getting is how you can handle a default page request without having to wildcard map requests in IIS. For example, in this very blog, you can request "/Jeff" or "/Jeff/" and get my blog. I assume that's because IIS and ASP.NET are assuming this is a request for "/Jeff/default.aspx," but perhaps I'm not seeing something right. I've been looking at the .Text code and it's not entirely obvious to me.

    Anyone wanna help a guy out?

  • The code monkey's racing mind

    I didn't sleep well at all last night due to a nasty stomach ache, which I think I can attribute to the popcorn butter they use at the local Cinemark. I feel like crap every time I eat it. (Blade Trinity, by the way, was awesome. Jessica Biel: Action star. Who knew?)

    So tonight I thought I'd go to bed early since I would obviously be tired. Yeah, after an hour staring out the window I gave that up. My mind started racing, thinking about some of the projects I have in the pipe. Some of it will lead to revenue, hopefully in the near future, some of it will not. Of course, the more fun stuff isn't revenue generating.

    My wife has to get up early for school, so to spare her of the tossing and turning, I came down stairs with the iPod (a bit of Venus Hum) and the laptop to surf for some articles relating to some of the things I have to do. I figure it's the only way I'm going to get this crap out of my head so I can sleep.

    At first I was a little annoyed by this, but putting it in perspective, I'm glad I'm getting excited about writing code again. The book really took its toll (though I'd still do it again). Now that I have other things like a new J.O. volleyball team to coach, I think I'm balancing out some more. There's so much I want to accomplish.

  • FireFox doesn't refresh right

    Has anyone else noticed that FireFox doesn't always refresh as it should? I'm talking about the meta tag refresh. There are a couple of sites I visit that use these tags to refresh after a login, as does my Trillian "Check Hotmail" link. In these cases, you have to view the source of the page and paste it in to make the refresh happen.

    I've been seeing this since the beta days, so I'm surprised it's still a problem.

  • Support scripts don't help customers, people do

    For reasons no one can explain, iTunes asks me to authorize my music about every other time I try to play songs. I have no idea why. I've got my tracks on no more than three machines, and I get five.

    So I fired off a support request to Apple, which after three go-arounds resulted in little more than an explanation that I could only authorize five machines and that further support could only be achieved via a fee-based call. In each case it was clear that these were copy-pastes, not an effort to try and diagnose the problem.

    Using support scripts like this, handled by support drones making minimum wage, might appear good for business in that it keeps costs down, but at what cost? How many customers will just say "F' it" and move on? Probably not many when it comes to Apple stuff, but it's still not a good front for developing further business.

  • People is illiterite duspite teknologie

    Isn't this the truth: What corporate America can't build: A sentence

    It's staggering to me that we have this technology that has become a vital part of life in less than ten short years, yet people communicate more poorly than ever. I've seen it everywhere. I get e-mail from recruiters all of the time that look like they were pecked out by a 14-year-old crack addict with hands too unsteady to type the right letters. In my big corporate jobs, I didn't see it from other code monkeys that often, but from outside departments (help desks, HR, etc.).

    If you've been to any online forum that covers something you're interested in, you've seen the worst of it. If you like video games, you're really screwed, because I can't remember the last time I saw a coherent video game forum.

    I have a strict grammar and spelling policy for my sites. It really pisses off some people, but they leave, and that's fine. I just refuse to allow my little corner of the Internet to be over run with what we like to call "brain-dead AOLer speak."

  • Reviewing copy edits is the most tedious thing I've ever done

    I'm in the process of reviewing the copy edits made to my book before it finally goes off to production. I can honestly say that I've never done anything more tedious.

    Granted, the editors didn't make a ton of changes (I guess that degree in journalism counts for something after all), but it's enough that you have to read very, very carefully. Looking at these Word documents with all of the changes tracked and comments hurts the eyes. Last time I did something like this was in college circa 1993, when we didn't have Word and you still had to paste together the newspaper. (We didn't have instant messaging or the Web either. How the hell did we survive?)

    Aside from looking at the final proofs, this is essentially the end of the project for me. My wife Stephanie keeps yelling at me for blowing it all off as something anyone can do, but I never wake up and think, "Holy crap, I wrote a book and it was published!" I can be an arrogant bastard about a lot of things, but for some reason I tend to understate my professional accomplishments. I couldn't tell you why.

    I've got a lot of little projects to start, finish, or think about, but I've also got that question in my mind about whether or not I should write another book. From proposal to publication it will take about 15 months, so if I want to take a stab at supplementing my income in a serious way, I can't wait forever to do it again.

    Any seasoned authors have advice?

  • A tale of two Web applications, one good, one bad

    It didn't take me long after playing with the trial for SmarterMail to see that it was a really good Web application (and it's even a .NET app) and server product. The navigation is ridiculously clean, and honestly you could probably use it as your mail client, and never ever use a desktop client again. Best of all, it's catching far more spam than IMail ever did. I guess after using IMail for six years, I didn't realize how much it sucked (and went relatively unchanged).

    On the other hand, I decided to take advantage of an Overture promo ($100 credit) to try and generate a little traffic for my volleyball site. I've used this service on and off all the way back to the days when it was, and honestly I'm astounded by the way it generally isn't well designed. Aside from being slow, the UI is pretty bad and the navigation isn't logical. There are several pages where you try to update something and there's no explanation as to why it didn't save. Oh, and naturally the promo credit wasn't actually applied until I complained. Google's AdWords, by comparison, isn't perfect, but it's quick and straight-forward.

    I guess when I stop to think about it, there aren't very many really good Web applications that I encounter. When I did Weight Watchers last year to shed a couple of pounds, that one was pretty good. Bank One is pretty good too. (Is it coincidence that these are .NET apps?)

    Any other examples that come to mind of really good online applications? I'm really curious to know if anyone has extensive experience with what they think about it. That should've been my millions...

  • Any reviews on SmarterTools' SmarterMail?

    IPswitch just sent me a reminder asking if I wanted to renew my service contract for IMail, and truth be told, I'm not really that satisfied with it. The Web interface isn't great, it's expensive, and frankly the spam filtering isn't as good as I suspect it could be.

  • Launched a new site today:

    I launched my volleyball site today, This one is probably not much of a commercial venture because I'm not sure how big the audience is. Still, as I found when writing my ASP.NET book, writing about things makes you think more critically about them, and I hope to apply that same discipline to coaching volleyball.

  • really gets it wrong at times

    Flat-panel TVs can't topple tubes--just yet

    There sure are some problems with this article. First it says that, "LCDs are great as desktop PC monitors because they don't have to refresh pictures rapidly." This implies that TV's must refresh faster, which is not even remotely true. My computer LCD's here run at 72 Hz. Even the fastest HD standards top out at 60 Hz (or frames per second).

    The article also implies that the quality isn't as good, which I also tend to disagree with. I'll give that LCD's don't do black as well as CRT's do, but in terms of overall sharpness of picture, especially a digital picture, it's like night and day.

  • I really hate Internet Explorer

    So I'm working up this alternate style sheet on this project I'm working on. Looks absolutely beautiful in Firefox, and it's totally predictable. Pop it into IE, and naturally it's a total mess.

    But that's not even half the problem. The other thing is that it doesn't even render half the stuff it should, until you scroll it on and off the screen. Text won't appear, but if you scroll it off, then back on, or select it with the mouse, suddenly it appears. What the hell is that?

    If Microsoft is in no hurry to fix IE, I hope that Firefox continues to gain market share.

  • My new HP 2550Ln

    One of the things that I have to do to run CoasterBuzz is to send out membership cards to our club members (premium subscribers). When I started the club in late 2001, I had the cards printed up with perforation on a full sheet of card stock. I wrote a little Access app that pulls the new memberships out of the database and prints the name, expiration and address, fold it into a windowed envelope, and off it goes.

    This automation and printing ended up costing me more than a buck a card. Combine that with postage and the absolutely ridiculous Visa/Mastercard fees and already I've spent 10% of the $20 membership fee. I guess it isn't that big of a deal, but considering the combined cost of bandwidth and my own time in maintaining the site (not to mention the eventual rebuild), I have to pay attention to expenses. I don't work for The Man anymore, so this essentially is my living.

    So I decided to do the math, and found that a color laser printer would save money and get the card cost down to around 55 cents a piece through the first thousand cards, then lower after that (since the printer will essentially be "paid off"). At this point, the only real question is about how (or if) to perforate and still get a credible looking membership card.

    Anyway, I decided to go with HP's 2550Ln, the "n" meaning it has the built-in network printer server. The fact that they could get this machine down to a reasonable price point is impressive, especially considering how the inards are so cool. It has a Web-server to access all kinds of stats, including the number of pages printed and how your toner levels are doing (for all of the toner carts). The single imaging drum was certainly a good idea.

    The only real negative, and I didn't really realize it at the time I bought it, is that it doesn't have a real paper tray. The fold-out "drawer" on the front holds about 50 pages or so and just generally sucks. So as it turns out, to make it a more practical solution in the home office, I needed to buy the optional paper tray so that it's contained.

    Overall I'm pretty impressed with the print quality. I'll still send my 10D photos to Ofoto, but it does do remarkably nice work with surprisingly OK color.

    Despite feeling a little cheated with the paper tray situation, overall I think any printer with these capabilities would be a steal for under a grand. To start the series at half that seems like a miracle. Now if I can just unload my LaserJet 1000...

  • RegEx Challenge III

    I admit I'm mentally weak. I can usually get a regular expression to work until I have to come up with something to NOT match. Here's today's challenge. Match only e-mail addresses that are NOT preceded by a colon or closing bracket. Your test string is this:

    test[url=""] test

    Only should return a match. For simplicity's sake, I'm using this for the actual e-mail address matching (I realize it isn't perfect and may allow non-RFC compliant addresses through):


    Here's a handy test page. The prize is grand recognition and a pat on the back. It's the best I can offer... I'm poor. :)

  • More on ridiculous work hours

    I noticed there was more on the EA/game industry work hour expectations last week. More interesting quotes there from people working in fear of The Man.

    Here's what I don't get. What compels people to continue working in that environment? My wife was telling me about something she read recently in one of her graduate nutrition classes about the things that motivate people, and chief among them was survival, which relates to food and shelter. Fear is clearly a motivator when considering the possibility you and your family can't "survive" without the job. I remember how upset I was when I got laid-off for the first time, shortly after I bought my house. Talk about living in fear.

    But at what cost? At what point do people say, "This is no way to live?" I mean, if we're lucky enough to do something we really like, it's generally OK to spend a lot of time doing it, but if it's your entire life, you're going to miss something. Balance is not an easy trick to pull off, but without that balance you're going to fall down.

    Stephanie, my wife, was fortunate enough last year to make a serious realization about what she really wanted out of her professional life, and I had a similar realization earlier this year. Six months ago, I quit working for The Man. Despite taking an 80% pay cut (not counting future income from the book I wrote), I have never been happier in the decade I've been out of school. My financial security falling into my own hands was scary, but things you have more direct control of are a lot easier to deal with than those you can't control.

    I'm not trying to brag or pat myself on the back here, I'm just trying to offer some perspective about what constitutes success or security. Don't wait until you're 60 to ask the hard questions. You technies are smart people. You can figure out a way to make it work.

  • Amazon posted my book preface

    Someone pointed out to me that my book was not only listed on Amazon, but it also has the preface posted. I can't even explain how weird that feels. It creates all kinds of anxiety for me, because I hope it doesn't suck. I should trust that A-W and its editorial folks thought it was a good idea.

    The chapter summaries seem particularly weird given that some of the topics cover a product that isn't even out yet. I'm a little disappointed that it only clocked in at 300 pages, but I suppose it's about the quality of the content, and not the quantity. Some of the reviewers thought it should go into more detail, but I was trying to stay focused on an intermediate audience. Not every book should explain what a mouse is, any more than every book should explain how to build the back end for Visa and MasterCard.

    Despite the daunting task of writing the book, I'm thinking about writing another one... if the idea makes sense to people. We'll see.

  • Beta 2 changes to compilation and folder structure made public

    Wow, I missed a lot while on vacation. I see that some of the changes for beta 2 of ASP.NET v2 have been posted. Good to see. I noticed there are people in the ASP.NET forum that are still not happy, but it's like I said... you can satisfy most people or satisfy no one because you'll never ship.

    I'm starting to get excited about the new bits. When they finally come out, we can finally start using this stuff in practice instead of in theory.

  • What happened to the Whidbey hype?

    Back in March, if you were in on the Whidbey scene, you were a l33t haX0rz!!1111 Today, it's amazing how all of that hype and excitement has largely subsided. I see fewer blog entries on it, almost no articles, and generally no press. What a difference a couple (lots) of months makes.

    I'm still of the firm opinion that VS 2005 will save your life, or at the very least help prevent mental anguish. As soon as I bang out the project I'm on now, I think I'll return to it and get back to the forums and such.

    I'm hesitant now to talk about it I guess in part because I had to get on the NDA list when I was writing my book, and honestly I don't have the energy to keep track of what's public and what's not.

  • 200+ songs from iTunes so far

    Today I bought my 200th song from iTunes. It was one of the tracks from the Venus Hum EP "Songs for Superheroes" (has a song that uses elements of the Alias TV show theme, if you're curious).

    I'm not quite in the Apple cult, though we do have an iBook, and iPod, and an iPod Mini in the house, but for us there isn't any other music store we're interested in messing with. I see a lot of stuff in the press as of late about Microsoft taking on Apple or whatever, about codecs and hardware, about proprietary and not proprietary... you know, the usual.

    It's not about the Cult of Jobs. Why are journalists and analysts so stupid? Has anyone ever considered that people don't give two monkey farts about codecs and hardware? Is it possible that maybe, just maybe, people dig iPods and iTunes because it's a good product? You remember good products, right?

  • G4-TechTV still sucks, and it's getting worse

    I've been ranting about this since the merger was announced, but the clowns at Comcast continue to kill TechTV and dumb it down to a network for teenage idiots that will never get any action.

    Sarah Lane and Kevin Rose both blogged that they cut a bunch of people from The Screen Savers and killed Unscrewed all together. Apparently the aren't enough shows with pairs of unattractive and uninteresting men talking about video games. What particularly sucks about this is all of the people they let go of were lured down to LA from the bay area, and a few months later, they're out.

    And for what? When things finally started to settle, I was starting to accept the evolved shows. X-Play went relatively untouched, fortunately, and it's the only gaming show on the network that I can stand (hopefully the success has not gone to Morgan's head). They took some hilarious stabs in the first show about moving to LA. Unscrewed was the same goofy shit, and frankly was at the very least a change of pace from everything else on the network. The Screen Savers got a little too frat party, but it was grounded in the credibility of Kevin and Sarah (attractive people that aren't stupid), and Yoshi, the Jedi master of hardware. I wasn't sure about Alex (he was no Leo or Patrick), but he wasn't bad.

    I fear now that the network for smart geeks is done for good, and all of the smart people that made it special are out on their asses. They may blog that "it's part of the biz," but I disagree. This kind of TV is not rocket science. I produced more interesting government access shows when I did that stuff. It's still about informative, interesting and entertaining content. Most G4 programming is none of the above.

    Sigh. There's so little worth watching on TV as it is.

  • You have to ask IE to be standards compliant

    For the most part, I don't worry about standards compliance that much. IE and the rest of the world's browsers mostly render stuff the same way. None of them get it totally right. I learned today, however, that you have to ask IE to play nice and render stuff correctly.

    I found a link to this article which says you have to use a particular doctype declaration to get it to render like everything else out there. Look carefully... the difference comes between this:

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

    and this:

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "">

    Without the second part, you get the goofy rendering with CSS padding. Lame!

    Whatever IE becomes in Longhorn, it better be special, because things like this annoy me.

  • The Man, game developer shops and work satisfaction

    By now this has made the rounds to many of you, but it's worth pointing out again: EA: The Human Story.

    Sounds like EA cranks stuff out by killing its developers, especially if the bit about a 50% turnover rate is true. Eventually, even in the software industry, you're going to run out of people and your success will disappear as fast as you got it. With the impending Baby Boom Doom (retirement), it's going to get worse.

    This seems representative of the game development shops everywhere. Games might be compared to Hollywood films, but Hollywood has ridiculous unions that go to an opposite extreme in terms of workers' rights. I should think there's a nice middle ground there somewhere.

    I for one don't understand why people will put up with that kind of environment. Honestly, doing something you love for a living is a great thing, but if it's the only thing, it's not worth it. The Man is no longer a collaborator, he's an enemy.

    The last time I had a job with long hours was circa 1998, when I ran a city and school funded government access TV facility. I loved that job and all of the toys I got to buy. I worked long hours and didn't mind, but that was partially because of the city-mandated comp time. I was going to get time off for it. I think I'd still be there if it weren't for the low pay and local elected egos.

    Last year I worked for a payroll processing company as "the Web guy." I had nothing to do on my end, but I watched my co-workers do 80 hour weeks. For what? So the owners that inherited the business (i.e., did nothing to earn it) could take exotic vacations and you could miss your family?

    It's hard to say what motivates people. After college, I thought it was "fame" when I worked in radio. Fame didn't pay, so then I thought it was money. I eventually got that too, but that wasn't it either. So for me, I think being happy motivates me. Right now being happy means barely getting by on the revenue my Web sites generate and exploring the things I enjoy (volleyball, maybe even radio again, for fun).

    If The Man is keeping you down, tell The Man to kiss your ass. You'll likely still have a full compliment of fingers and toes, and you'll figure something else out. A little short-term uncertainty beats the hell out of realizing you wasted your time on The Man when you're on your death bed.

  • "I don't think that Internet Explorer is any less secure than any other browser out there"

    On, Microsoft's Ben English says, "I don't think that Internet Explorer is any less secure than any other browser out there."

    Come on... how can anyone say that with a straight face? Seriously, I'm as big a Microsoft fan boy as anyone, but that's laughable. I got drive by spyware using IE, and I'm a careful geek. That's when I switched to Firefox (which also does a better job blocking pops).

  • Playing with Amazon E-Commerce Service 4.0

    I decided I'd tap into Amazon's newer version of their Web services for my forthcoming volleyball site. I noticed a lot of interesting things.

    First off, their WSDL is hosed and has XML name duplication, which causes a Visual Studio referenced class to choke at runtime. XML is not my strong point, but I figured out the first part of their fix on my own. The second part is a mystery to me (though it works), because frankly I don't care to know the inner-workings of a generated proxy class. SOAP gives me a headache, and I just want it to work. I'm sure I'll catch flack for that when my book comes out.

    Speaking of code samples, it's stunning to me that there are so few really good code samples on how to use the services with .NET. Maybe because I'm a .NET code monkey that's surprising, but for all of the .NET questions posted in their forum, you'd think they'd take a moment away from their Java samples to generate this stuff.

    I more or less figured it out, and I cranked out searches, book details, and the really cool part, remote cart management, without a lot of serious issues. Everything follows the pattern: request item object -> request object -> action object -> response object from service call. Each item uses the previous as a property, with additional properties assigned along the way before finally calling the service. It's fairly logical once you've done it a few times, but there's a lot of redundancy too. For example, you would think that the logical place to pass in your associate ID and developer ID would be with the object that calls the service, but instead you pass it in with the action object. Perhaps it's more logical for people using raw XML or simple HTTP requests with query strings.

    The only really annoying thing I've encountered is the condition of the HTML in some of the content. The reviews are hopelessly malformed, especially for older titles. The editorial descriptions are even worse. I found one with an unordered list where each item was not closed, and additionally had p tags (opening only) on each list item. What a mess.

    That annoyance aside, they pretty much have everything open there for you, and the performance is pretty good. I'm seriously impressed at the amount of data available, even compared to v3. Neat stuff.

    It would be ineresting to see what you get out of's services. But I'm still bitter I didn't build something like that myself back in the day when we talked about it at my former job. Stupid executives. "No one will ever use that stuff online."

  • On programmers as designers

    Turns out after my last entry that a few people sent e-mail saying they're tuned in. Huh. Sure, the stats show hundreds of hits, but I figured that wasn't for real.

    Ever notice how most sites run by programmers have the worst designs ever? I remember thinking for years that 4Guys was borderline offensive (before the redesign). Slashdot is still hideous (it's called white space and padding, guys!). In both cases, it does illustrate that if you have really good content, people will overlook your design shortcomings.

    So I decided I'd build a volleyball site because there's a lot of stuff in that realm that, as a coach, I need to unload and share. For the time being, success (i.e., traffic) isn't something I'm all that concerned about as much as I just really want it to be a place a core group will hang out. I'm even narrowing the focus to high school/junior Olympic volleyball.

    The code template for the site is the code, so most of what I need to change is CSS for a "new" site. But I still need to make the header and logo pretty. I suck at this. I've worked with designers, but they unfortunately tend to go overboard. Worse, when you look around, it has all been done before.

    I get stuck starting with color. There's a neat tool that helps me out, but I still feel like I've seen it all before. I do have a starting point for a logo, at least.

    Eventually I'll come up with something, and I'm sure I'll hate it. The only designs I've really been proud of are one I did for a now-defunct community site for a client, and I kind of sort of like CoasterBuzz, despite being heavily into tables for layout (it's two years old).

    Do you often pull double duty as a designer?

  • I'm a bad blogger

    In the name of all that doesn't suck, I need to write something. All 12 people subscribed to my blog are undoubtedly wondering if I have been hit by a truck or am suffering from indigestion.

    Alas, all is well. The week before last, I turned in the final draft for the book, so aside from the forthcoming copy edits and proofs, it's out of my hands now. The result is that I haven't been the least bit interested in coding much of anything. I haven't fired up VS 2005 in weeks.

    I'm turning my attention to volleyball now, as junior Olympic tryouts are starting and a week from now, I'll have my 2005 team.

    Which is to say that I am actually working on building a volleyball site...

  • RollerCoaster Tycoon 3: How not to release software

    You have to first understand that RCT is easily the most important thing to appear on a computer for roller coaster enthusiasts. The first two games also had a special place in my heart because they were written by one guy, Chris Sawyer, and mostly in machine language at that. How many blockbuster games are written by one guy with no budget?

    For the third installment, they decided to go 3D. It was time, and I'm certainly not surprised. The team at Frontier was very ambitious in their goals, and I think they were 90% there with the released game. Of course, anyone that has been developing software for awhile knows that it's the last 10% that can make or break the project. The game shipped without the last 10%.

    It's heartbreaking, in a way, because I've been waiting a long time for this. I don't buy as many games as I used to, and when I do, few really get my attention. We've got a running list over on CoasterBuzz of bugs and major game play issues that's already four pages long.

    So what happened? My guess is that it went something like this. Frontier gets their first big break for a major, potentially huge release, and the big mean publisher Atari says get it done or else. They have no pull, so they can't be like id and pull the "when it's done" crap. So they do the best they can, send the gold master away and start working on a patch. After all, if half of all game sales occurs during the holiday season, time is money.

    And it's a damn shame, because I get the feeling that a lot of love and hard work was put into the game, judging by a lot of little touches here and there. Unfortunately, the bulk of these nice touches are totally overshadowed by the total crap the game is. The number of bugs are astounding, and it seems I'm constantly encountering them.

    The game could be great if they fix everything, but it's not supposed to be that way. It harms the brand (everyone's... Atari, Frontier and RCT itself), and the obvious poor word of mouth is spreading like crazy, even in their own forum. Not what you want in your target selling season.

    This brings me to the release of .NET v2.0. Yeah, it seems like it's taking forever, but if you've put up with the horrible designer in Visual Studio, I think you can appreciate just how critical it is to get it right. Microsoft has come a long way in software quality, and it's hard to dog them for that (though I think with the sheer amount of manpower and brilliant people their processes still seem to take too long).

    Good software takes time.

  • It's hard to conduct an uptime test in the real world

    Last night my host, ServerMatrix, put my server on a new power connection that allows me to remotely power cycle the box. I appreciate the new feature, but it's sort of a bummer that I had to lose 120 days of uptime.

    That's pretty cool though. I mean, I never made it that long when I use Win2k Server. In this case, I never even cycled a service on and off. It just worked, never choked. It's great to see that kind of reliability in a Microsoft product.

  • iTunes stops working, Windows Update annoyance

    For some reason, iTunes just stopped working on my HTPC. It appears in the process list, but the UI never appears. Annoying.

    Windows Update has an AMD processor update from 2002. It can't install it, and it gives one of those great meaningless errors as a sequence of numbers. Also annoying.

    Related? Only God really knows. I hate it when stuff doesn't just work. Reminds me of the Windows 95 days where you had to reinstall the OS once every six months.

  • Revenge of the greedy RegEx

    Naturally, when I get my text parsing right for the forums and release it, I realize that my test coverage wasn't as good as I had hoped. I've got a spot of code that looks for pseudo-code quote tags for conversion to an HTML blockquote. The expression looks like this:


    Works like a champ... sort of. The middle group in the Match object (match.Groups[2]) then gets parsed to look for nested quotes. This works well to.

    The problem is that it counts this as one entire match:

    [quote]quote 1[/quote][quote]quote 2[/quote]

    Where I'm troubled is that I'm not sure which group I should be altering. The middle "meat" of the quote I need to access via the Groups collection so I can parse for nested quotes, and every attempt I've made to alter this breaks the proper nesting.

    I hate it that this one area causes me so much grief. I'm not brilliant, but I would think I'd be smart enough to keep this from eluding me! Help is appreciated.

  • POP Forums v7.5.0 final posted

    I won't post the changes (again) here, but last night, or rather this morning, I posted the final distribution of POP Forums v7.5.0.

    This is only an incremental upgrade, not something amazing and new. The real highlight of it is that the text parsing engine is finally producing something XHTML compliant (if my test coverage is any good). It's not the cleanest code ever, but it works, and it doesn't bring the server to its knees to do it. Two pluses for any software. ;) It was always kind of a source of embarassment to have mangled HTML creep up into a page every once in awhile, so after like five years of messing with it, I'm glad it works now.

    There's a site I very much would like to build and deploy before the end of the week, then I can turn my attention back to v8. My motivation for working on that had slipped a bit since it's not like I can use it in production until beta 2 of Whidbey. It has been hanging out in the corner of my mind though, and that has allowed me to think some things out regarding its overall architecture. I think it'll be better than I originally conceived it.

  • Are there remnants of a SQL worm out there?

    I noticed that some IP was banging on my server today, specifically on the SQL port. No big deal I guess, because I just outright blocked it for safety's sake, but are there little remnants of that SQL worm still hanging out?

  • POP Forums 7.5.0 beta 2 posted

    POP Forums 7.5.0 beta 2 has been posted to

    This beta fixes minor bugs from the first, and the text parser in particular generates very nearly correct XHTML every time (or at least it passes the unit tests!). I expect this will be a short beta cycle before final release. Thanks to the cats that posted to my blog for at the very least inspiring me in the right direction on certain issues.

    This release is a point release intended to fix some of the problems associated with v7.0.x of the core engine and v7.1.0 of the "feature" UI package. A more comprehensive update to v8.0 is slated for release when v2.0 of Microsoft's ASP.NET may be licensed for use in production environments (this is expected to be some time in the first quarter of 2005).

    The following outlines the changes in this version:

    Engine changes from v7.0.x to v7.5.0

    • New text parsing engine
    • Removed PopForums.Global class
    • Added PopForums.Module HttpModule class to replace global.asax functionality
    • Added PopForums.OnlineUsers class 
    • Five methods from PopForums.Stats marked obsolete, replaced in OnlineUsers
    • New online user engine
    • Added OnlineUsers table
    • Added "PopForumsSessionLength" to config settings, indicating number of minutes in a user session as tracked by OnlineUsers
    • Added new PopForums.Forum.GetTopics() overload to get paged results 
    • RichText control displays in Windows 2000
    • Old PopForums.TextParser methods marked obsolete, new ones added
    UI changes v7.1.0 to v7.5.0
    •   Fixed member post paging
    • Online user stats now draw from PopForums.OnlineUsers 
    • Added RequiredFieldValidator to SendPrivateMessage.ascx to check for a subject
    • PM reply doesn't add endless string of "re:"
    • Removed global.asax entirely
    • Fixed PagerLinks.cs to correctly display tool tips
    • Added PagedPagerLinks.cs to display paged results from new PopForums.Forum.GetTopics() overload
    • Made the member mailer text box in the admin bigger

  • Help a guy out with RegEx

    OK, I get how to replace a group in Regex.Replace something like this:

    Regex.Replace(@"(blah)(blah2)(blah3)", "new$2new", RegexOptions.IgnoreCase)

    ...where the result is "newblah2new"

    But how would use replace "blah2" with something dynamically generated, namely another string based on "blah2"? I'm tripping all over the examples in the docs and need a little help.

  • Stupid programmers of the day: Symantec's Norton Anti-Virus

    Last month I complained about the stupidity regarding The Sims 2 save folders. Well the kids at Symantec have made an even more ridiculous programming desicion.

    If you move the product's Start Menu folder to somewhere other than the root Programs folder, it chokes and gives you the message, "Norton AntiVirus 2005 doesn't support the Repair feature. Please uninstall and reinstall." Even worse, the message pops up every time you open an Office document.

    You've gotta be kidding me! Symantec wants to dictate the way I structure my start menu? I don't know about you, but I like to categorize stuff and organize it does I don't have a list of 50 different program groups.

    Unbelievable. I think I'm going to write them and tell them I want my money back. I'll buy someone else's product. Who allows this kind of thing to make it to retail?

  • Pretty media center PC's

    Story on today shows conceptual media center PC's. Existing units don't sell well. Wow, what a shocker. Maybe it's because they look like PC's? Who wants to put one of those nasty looking boxes in their living room? You know, if Apple was designing the things they would fly off the shelf.

    I spent a ridiculous $200 on a case to make my HTPC look like it belonged in the living room. Talk about purchase regret, but what else could I do? Have you seen those hideous PC's made by HP and Dell? No thanks. Alienware got it right, but even I couldn't justify the cost of one of their boxes.

  • Product activation horror

    I got a shiny new CPU and motherboard this week, which required that I reinstall Windows to get it to boot (and by reinstall I mean "repair"). All was going well until I had to reactivate Windows. It wouldn't let me logon until I did so. The problem was, of course, that it couldn't connect to the Internet because the new network drivers weren't installed.

    I had to call. For reasons I don't understand, the automated process failed, so I had to wait for a human. I waited 20 minutes. Unbelievable.

    I don't have a problem with product activation, and as someone that owns a little IP, I understand Microsoft wants to protect its products. However, when the design of the product activation creates major inconveniences, it's broken. There has to be a better way.

  • Hardware upgrade bliss

    Against my better judgment and my business income, I bought an Nvidia 6800GT video card last week. At $400, it's more or less their top-of-the-line card right now (save for one higher that gets only slightly better performance). In my history of buying 3D cards, going back to the amazing Rendition cards that threatened 3Dfx at the time, I've generally only bought cards when they came down to the $150-200 level. This time I was planning on the $300 model, which had less memory. Then CompUSA had the sign there about getting Doom 3 for free with it, and Stephanie told me, "Just buy it."

    Of course, I theorized that I might be CPU bound with a two-year-old Athlon 2000+, and this was more or less the case. So after great success with a mobile Athlon in my HTPC, I decided to buy one for me.

    This thing is so easy to overclock that it's like getting twice the chip for half the price. I'm pushing the 2600+ (spec'd for 2 GHz) to 2.4 GHz without a problem. From the benchmarks I've seen, this puts the performance about on par with a P4 3.2 GHz, only the P4 sells for more than twice as much.

    I also have to give great props to the Thermaltake Silent Boost heatsink/fan (along with Ceramique thermal compound). Even though I'm overclocking, it runs really quiet and idles around 45 degrees C. My old CPU idled at 49! Now if I can just get the other five case fans (plus the power supply, motherboard chipset and graphics fans) to be a little more quiet!

    I'm thrilled to be getting 45 fps in Doom 3 at 1280x1024, with all options on 4x anti-aliasing. Believe the hype... it's beautiful and scary. This is the most interesting shooter visually since Half-Life.

    I also have a preview build of RollerCoaster Tycoon 3 that Atari was good enough to send me for review on CoasterBuzz. It runs reasonably well at high resolution, maxing at 100 fps on an empty screen, but it does get bogged down into the 30's with busy maps. I suspect there are a lot of tweaks that were made for the gold release, seeing as how this build appears a month older that the released demo. They really polished up the UI!

    This is a great season for games, probably the best ever. Stephanie has a list longer than mine. While I'm geeked up for RCT3 and Halo 2, she's playing Sims 2 and Leisure Suit Larry, and looks forward to Bloodrayne 2 and others.

  • The challenge of teaching ASP.NET

    I think about how people learn ASP.NET. I think about it a lot lately, because I'm trying to step away from my book and ask myself if my approach will cause light bulbs to appear over the heads of developers trying to learn the platform. There isn't much time for change at this point, but I still think about it.

    In reading a lot of books over the last couple of years, I've started to notice a pattern. Most ASP.NET books are written with the assumption that the reader has a formal education in computer science or at the very least extensive experience with some other platform. My experience out in the world, including my own, is that few Web developers have that heritage. It would appear that most got into the field as a totally new career choice, probably within the last five years. The difference in experience might be subtle after many years of work, but I do think it merits a harder look at the approach used to reach these two audiences.

    I'm not suggesting everything should be a For Dummies book, but I think even many beginning books either jump right in without providing context ("you do this because...") or they start talking about too much too soon ("ASP.NET page requests are handled by an HttpHandler...").

    As I get more involved in the community I see myself getting like this, and I have to slow myself down. I don't know if I'll write another book, but I do expect that I'll be involved with some level of face-to-face teaching from time to time. I think it's critical that authors and publishers make sure that we still serve this market, because clearly it's huge (judging by the questions asked in various forums). It's critical to the developing market that is coming with the Express tools as well.

  • BeyondTV: This is great software

    Snapstream released BeyondTV v3.5 last week, and I immediately loaded it to my HTPC. It isn't that often that I get real excited about software I'm not involved with, but this, my friends, is great software.

    The previous version was pretty good overall, and works great with the MPEG capture/tuner card I got with it. The new version just feels a little more polished in terms of UI and features. The "smart skip" that finds commercials and allows you to blow passed them with one click on the remote is awesome (I have the Firefly remote, which they also make). They have an affordable package that includes BTV, the capture card and the remote. They also have cable kits to control DirecTV receivers.

    The .Net connection: The Web-based admin is ASP.NET based and can be modified.

    I was skeptical that I could build a PC that really just worked, using nothing but the remote. Aside from ITunes, it basically does work with the remote, and that's all I need. All DVR and DVD functionality is accessed via the remote in a manner that's as simple as using a satellite TV tuner. It has really changed how we watch TV, and I'm curious to see how this phenomemon forces broadcast television to evolve. Bandwidth for true on-demand video isn't there yet, and broadcast isn't going to shrivel up and die overnight (well, radio might, since it sucks anyway).

    I love good software. I wish there was more of it.

  • Author perk

    I guess now that it's listed on Amazon, everyone knows that my book is being published by Addison-Wesley. I got a nice little surprise on my last call with the publisher when they offered to send me some of their current books. That's a nice little perk!

    It's a little intimidating too, because most of these other authors are far more clever than I am. It's tough company. These guys have been code monkeys for a long time, whereas I've been doing this (well, professionally anyway) for only about six years. I'm not so worried that I don't know what I'm doing as much as I'm worried that I'm not effectively translating what I know and can present in front of people to something that works on paper.

    I was thinking about drawing up a proposal for another book, one that combined a narrative of "growing up" as a programmer and the evolution of some piece of software, perhaps my forum app. The last part of the book might flesh out the design decisions and patterns of the app. I don't know how interesting it would be or if anyone would buy it, but I imagine there are a lot of people out there that would think, "If this guy can do it, so can I!" Empowering other people while exposing your own vulnerabilities is very much a feel-good experience. Since I don't have a CS degree, I'd at least be putting my journalism degree to good use!

  • Video card benchmarks are useless

    In the dissatisfaction with my current rig's 3D performance, I'm starting to strongly believe that the CPU is the bottleneck. I think this because the difference in frame rates doesn't change much from one resolution to the next. I have an older Athlon 2000+ (1.66 GHz) and a GeForce FX 5600 card.

    So I've been researching the parts out there right now. The problem is this: The hardware sites benchmark this stuff with high-end CPU's. Sorry, but even if I upgrade my CPU and motherboard (an inexpensive thing to do these days), I'm not going to buy an Athlon 64 3800.

    Right now it looks like I can upgrade my CPU and motherboard to something like a mobile Athlon XP 2600+ (over-clocked lots) for around $150. I don't know what kind of impact that will have on my existing video card, but I'm guessing it won't be great. Video card upgrades, those that aren't little incremental upgrades, pretty much rest with the Nvidia 6800's ($300) and the 6800 Ultra's ($400). I'm not really that geeked to spend that much.

  • ASP.NET vulnerability: I'm disappointed

    By now you've heard about the alleged vulnerability in forms auth-protected folders. I'm ridiculously disappointed that this wasn't caught years ago because it's not entirely unlike the worm vulnerabilities of 2001 in terms of messing with the URL to get to naughty stuff.

    In all fairness, I can't duplicate the exploit that someone sent me, but apparently someone can or it wouldn't have Microsoft's fullest attention.

    I hope there's a fix soon, like tomorrow.

  • Getting the hardware tweak monkey bug

    Quite by accident, I bought for my HTPC what apparently is the CPU over-clocker's favorite board for AMD processors, A-Bit's NF7-S. My criteria for buying the board was just that it had an optical audio output to hook up to my Sony receiver for DVD's. With it I bought a mobile Athlon XP 2400+ because a lot of users reported it running cooler than normal Athlons. It also happens to be unlocked, so you can clock it as you wish. This good accident was matched with another good accident, in buying a really good cooler for the thing.

    The last good accident was that I unintentionally clocked it at 2.0 GHz, though it's spec'd for 1.8 GHz. So for $77, I'm getting roughly Intel P4 2.6 GHz performance for about $70 less, and I don't even need that performance for playing iTunes, DVD's and Beyond TV shows.

    So now I'm getting all geeked up about this over-clocking stuff, and the crazy cooling schemes people use to make these things sing. Seriously, they spend so much on the cooling gear that they could've just bought the faster CPU to begin with, but I guess that's not the point.

    So now I'm tempted to upgrade my office computer, mostly to make the forthcoming RCT3 run at ridiculously high frame rates. Right now I have an old Athlon 2000+ and a not-that-old Nvidia 5600 video card. Simply buying a faster video card may not give me the boost I need if I'm bound by the CPU, so I'm not sure what I'll do. I'd love to get an Athlon 64, but they're still kinda pricey and who knows when 64-bit Windows XP will finally go retail.

    Have I mentioned that I'm doing everything but work lately? :)

  • More HTML and text parsing woes

    I mentioned last week how I absolutely hate regular expressions, and that rewriting the POP Forums text parsing engine is going to be the death of me (especially to get it to work with FreeTextBox, "forum code" and various mixtures of IE and Mozilla-generated HTML).

    I've managed to come up with an OK algorithm that makes sure tags are closed, and do not overlap. If they do overlap, they're properly nested. The challenge is getting block elements right, namely <p> and <blockquote>, to make sure that they appear as they should. So far, I'm sucking at that part pretty bad.

    Somewhere just out of reach of my brain, I know I have a fresh solution that will cure cancer, but sitting in front of the two monitors for hours on end is starting to take its toll in terms of me maintaining an attention span. That and I'm supposed to be finishing the book revisions.

    I have to keep reminding myself that these are good problems to have. I didn't have to get up early, drive in rush hour or answer to The Man today.

  • SQL Problem solved, it wasn't weird, but the responses were

    It's always crazy when you post a question to your blog or a forum when you get everything but what you expected as responses. This happened with my SQL "problem" last night.

    First the good news. There was no problem. If you look at the sproc I had, I was sorting correctly when I populated the cursor, but not in the join at the end. Whoops! Can't believe no one caught that.

    Anyway, one person came in and said you couldn't sort by a bit field. That obviously wasn't true because I was clearly doing it before. When someone called him on it, he said it wasn't ANSI standard and you should avoid it. Should we avoid using the CLR in SQL 2005 too? It's not ANSI standard. Sometimes I just don't understand how people respond.

    Another respondant said using a cursor was a bad idea in his experience, but didn't offer an alternative. The article I linked to makes a pretty strong case for using a cursor to page data. In fact, I searched far and wide on the Web and Usenet to find some kind of quantitative reasoning for this approach, and it's the only one I found. Hey, I'm easily influenced, especially in areas for which I have no significant expertise (like SQL). Show me something better and I'll switch to that. In running this sproc against 30,000 forum topics, it's pretty fast. If I apply a little caching to it, I suspect it will be even faster.

    Regardless of the outcome, I love to see people get out there and debate stuff like this. A disadvantage of working alone as your own business is that you otherwise don't have another set of eyeballs to question your work.

  • Come on, Steve... don't be a target

    I'm a big Microsoft fanboy, and I really admire Gates and Ballmer. However, Steve says some things from time to time that make him a target. He said today: "The most common format of music on an iPod is stolen."

    If you're a presidential candidate, you can make stuff like this up and people will just take your word for it. Techies, generally speaking, aren't that stupid, so to make an unsubstantiated claim like that and hating on the company that makes the most beloved device of our time is asking to be a target.

    My wife and I have iPods, and we actually own everything on them (including hundreds of iTunes songs). The rest of the thousands of files were ripped from CD's we own. We may not be typical, but the point is that suggesting every kid with a WMA player has more legit music than an iPod user is stupid.

  • SQL ORDER BY weirdness

    I'm sure some SQL guru will laugh and kick Dummies books in my face, but what's the problem here? I decided to do a stored procedure to page results of forum topics using a cursor. (Before anyone tells me that's a bad idea, read this to see why using the cursor appears to be the best performing option.) Originally, I was getting topic records in a date range, using this SQL:

    SELECT * FROM Topics
    WHERE (ForumID = @ForumdID) AND ((LastPostTime > @TimeSpan) OR (Pinned = 1))
    ORDER BY Pinned DESC, LastPostTime DESC

    To populate the cursor, prior to the paging and such, my sproc uses this:

    SELECT TopicID FROM Topics
    WHERE ForumID = @ForumID
    ORDER BY Pinned DESC, LastPostTime DESC

    For some likely obvious reason I'm missing, it doesn't do the ordering for the Pinned column, which is a bit. Pinned topics should come first.

    Tell me what I'm missing, and you get a free copy of the forums! ;)

  • Messeges to me via may have been spam filtered

    If you've sent me a message via, I may not have received it. I just learned that the is on the black list being distributed by IPSwitch for IMail server. I cut it out of my list. No one at IPSwitch seems to be interested in removing it, even though it's obviously a legit site. I'm not sure actual humans work there. Funny how they have no problem making sure I get e-mail from them for a service contract renewal.

  • The scary reality of being a published author

    Last night, someone pointed out that my book is already listed on Amazon. I'm a little freaked out by this, in part because it's not even done yet. We've got one more round of editorial review.

    I'm not sure exactly why I'm freaked out. I started my professional life working in radio as on-air talent. It's a very visible job where people think you're famous (because they don't know how little you actually make). That never bothered me, and I wasn't worried about being judged or whatever. This is so different from that, perhaps because programming books are not something read by stupid people, or top 40 listeners. ;)

    I have a lot of anxiety because if the book sucks, the feedback indicating this is very visible in terms of bad reviews online and a lack of royalty checks down the road. Yes, despite the occassional pissing match I get into online, I'm ridiculously insecure. I think my strength is teaching, not necessarily all encompasing knowledge. The reviewers say I know my stuff, but for some reason that's not comforting.

    On the upside, it's nice to know that I'm in the home stretch now. Writing a book is a lot harder than I thought it would be. I don't think I could have done it while working a regular day job. It's not that it's exactly time consuming, but it's very difficult to stay focused on it. Regardless, a month from now, it'll be out of my hands and all I can do is hope for the best when it hits the stores in the spring.

  • I sure hate regular expressions

    Call me names or whatever. I hate regular expressions. I can't put my finger on what exactly it is that keeps me from mastering these.

    I decided that the text parser for POP Forums v8 should be retro-fitted into the v7.5 point release I'm working on because it sucks and I can't wait (v8 is a Whidbey product). I would like to try and produce something remotely resembling XHTML-compliant junk coming out of it. So far so good. The last stab I took at it was back in early 2003, before I really understood unit testing. What a difference that makes in terms of writing the code and debugging (latching on to Nunit, in this case).

    Still, I can't stand regex. Just when I get one thing right, I break something else. This is one of the reasons I will never be one of the really brilliant academic type code monkeys.

  • The Home Theater PC complete

    I don't remember now how I found Beyond TV, but for all of the times I was missing the two TV shows I actually watch, I figured there has to be a better way than the VCR. I had seen Windows Media Center and wasn't that impressed, or interested in tying into the platform. BTV controls DirecTV receivers by a serial connection, has free program listing and it has a great hardware MPEG encoder bundle. TiVo shmeevo, I say.

    So I took the plunge and built my own box. The most ridiculous thing I bought was the case. The aluminum Ahanix D5 looked the nicest to me. Yeah, it's a rip-off for $200, but I couldn't find a better looking one in black that didn't have a stupid door on the front. What the hell is with the doors on the front of HTPC cases? Last I checked, none of my other stereo components had doors on them. It's a nice case, with two issues. The first is the cheap punch-out slot covers on the back. That's lame, and for $200 I would have expected better. The second is that the drive cage is nearly flush to the front, meaning you don't get enough wiggle room to align your DVD drive so that the button makes contact and the replacement drawer face is in the right place. I had to shave the sides of the existing face off so it could slide ever so slightly further into the cage. One other minor complaint is that the little display has to connect via the parallel port, and the software for it sucks. It's a minor complaint because I wasn't really that concerned about using it in the first place.

    I got a really spiffy A-bit (NF7-S) motherboard with Nvidia's nForce chipset and an optical SPDIF audio output. Sitting in it is a mobile Athlon XP 2400+. I opted for the mobile because it runs a little cooler and is easily over-clocked. The rest of the stuff is pretty standard, including a wireless card. The hard drive was a steal at CompUSA... 250 gig Maxtor for $130. The DVD burner is a $68 NEC that does dual-layer discs. It all fits no problem. A $17 infrared keyboard/mouse has been a home run.

    The heatsink had to be quiet, and work efficiently, so I settled on this beautiful unit from Thermaltake. It's HUGE! It really dominates the inside of the case. Sure enough though, it runs at a fairly cool 45 degrees most of the time, and that's with the CPU slightly over-clocked.

    The software is awesome. Beyond TV is a really great product. The guys at Snapstream really put a lot of love into their products (and they're all about .NET too). I got their remote control as well, which works great with PowerDVD and to a certain degree, iTunes. Pausing live TV works as it should, and it "finds" the TV spots in recorded programs. The hardware MPEG card makes nice recordings from the DirecTV receiver. The really neat thing is that you can pull up the program guide on their site from any Web browser, and BTV periodically checks the site to see if you've ordered any recordings. That's cool.

    I replaced my CD player, DVD player and VCR with this one box. The remote and BTV make it possible to never need the keyboard when you're using TV functions. I only need it for iTunes. Bottom line, I have a media center I can always upgrade.

  • Why do .NET community projects suck?

    "Suck" is too strong of a word, but who cares. I probably have your attention. :)

    It seems that every time I want to post something to ASP.NET or to this blog, I get some kind of errors. The frustration of using this stuff is one thing, but the bigger problem is that we kind of expect these forums and blogs to be examples of "how to do stuff" on our beloved platform.

    I've looked at the source of these two packages and I find them to be needlessly complex approaches to otherwise simple problems. An online forum in particular is at its core four database tables with simple relations (I realize there's more to it, but that's the core required to collect posts and display them).

    Other platforms have some great stuff out there. They might be commercial, but you'd think that with Microsoft's backing it wouldn't be a big deal. vBulletin is an amazing product for PHP. What I really like most about it is that the most recent version took a very hard look at what we expect and do with a forum and came up with a much cleaner interface. I frequent a number of sites that use it and I love it. Even the original UBB written in Perl, arguably the original Web-based forum we all immitate today, was awesome, and generally just worked (and it was written by one guy).

    Where is our UBB or vBulletin? People keep telling me it could be my forum if I kept improving it, but it doesn't have the features to make it popular. (Actually, it meets my needs 100%, which is part of the reason it's so hard to keep improving it.)

    I guess the thing about the Microsoft Web jockey community is that it's still dominated by people from the corporate world. Corporate types think differently. On one hand they're generally a lot smarter than I am (though I suppose after working for enough public companies I'm supposed to be a corporate type), but on the other hand their approaches lack the guerilla instinct that the typical one-man band has (the Chris Sawyer's, Ted O'Neill's and even the John Carmack's of the world). Maybe there just aren't enough people out there as clever as the people on the .NET team itself.

    Maybe the release of Whidbey will reveal new and fabulous things from the community.

  • RollerCoaster Tycoon 3 demo... ouch!

    Atari and Frontier Development released the demo or RCT3 yesterday, and what a mess it has been. It would appear by reading their forum that fully one-third of the people that tried to run it couldn't do to various errors. Ouch! It appears a lot of it is driver issues. It has been said somewhere that the demo is based on an aging beta. Not sure why you'd put something out there like that.

    For me at least, the demo works pretty well, with only a handful of minor graphical glitches. I like the direction Frontier took the game, and it still sticks to Chris Sawyer's gameplay. My only disappointment, or I should say affirmation of my fears, is that the minimum requirements are entirely absurd. Playing the game generally gets me 15-22 fps, which is fine until you go into the "CoasterCam" mode where you get to ride your creations. For that to work well you no doubt need a Doom 3-capable video card.

    Few games have ever been as important to me as this franchise, so I hope that the retail release in about a month gets the most thorough QA possible.

  • Taking the FireFox plunge

    Well, I've decided it's time to take the plunge into using FireFox full time for awhile. I've used it on and off for the heck of it, and decided to jump on the bandwagon and use it all of the time.

    I'm not an IE hater. I think IE is fine. I just figured I'd give FireFox more of a long-term shot so I could better compare. I honestly think the "browser wars" are more about hating Microsoft than one browser being particularly better than another. Browsers are like pencils to me. As long as they write, I don't care much which one I use.

    Does anyone know where FireFox stores bookmarks? I've always had my favorites folder for IE set to backup, and would like to do the same with FireFox. I can't find it.

  • The lust is gone for ASP.NET v2.0

    For awhile there, it seemed that the world would stop if suddenly ASP.NET v2.0 didn't exist. It was all the rage on blogs and Internet articles. Since then, it seems that we've gone back to developing with the "old" v1.x because, well, there's work to be done today.

  • Editorial reviews are in

    I got the last group of editorial reviews for my book yesterday, and the good news is that better developers than myself like it. Sure, there's lots of tough criticism, lots to revise, but they all like the approach overall. That's a relief. I hope that the people that need to learn from the book like it as much. Reviewers on Amazon are not that kind! I'll be crushed if it doesn't sell that well.

  • Was The Sims 2 written by amateurs?

    Sometimes you encounter some pretty ridiculous things in commercial software. I bought The Sims 2 for Stephanie, something to distract her from grad school, and was horrified to see that it installs over 300 MB of save data to your My Documents folder, whether you like it or not. There is no option to do otherwise. This is a problem for us because we off-site backup our My Documents folders daily.

  • Relaunched my game file exchange site

    I relaunched my game site, CoasterBuzz Games today. I originally hacked together the site about two years ago to exchange RollerCoaster Tycoon files, but it was a mess and I never really did it right. It was insanely slow too. With the impending release of RCT3, I figured it might get more use so it needed a rewrite.

  • PC-based DVR fun

    After "finishing" my book last night and faced with time to worry about, well, nothing, I started to think a little bit about TV. The truth is, Stephanie and I don't watch much TV, but naturally it seems that every network is scheduling the shows we do watch at the same time.

  • Schwan's has a nice ASP.NET application

    I don't know if you have "the Schwan guy" in your neighborhood or not, but Stephanie and I order Schwan's regularly. The food quality is generally pretty good, and a lot of it makes for above-average convenience food that you can easily throw in the oven. I'm particularly fond of the Hot N' Spicy Chicken Breast. It's kind of like what they have at Wendy's, only they're generally a lot bigger.

  • FastClick beats SP2 pop-up blocker

    I knew it wouldn't take long, but FastClick's pop-ups (or technically pop-unders) beat the blocker in SP2. The nice thing is that they only serve one per day per site per user anyway. I'm willing to deal with that if the site's owner gets paid.

  • Thoughts on a roller coaster

    It was sunny and 74 this morning when I decided to go solo to Cedar Point for a couple of hours. I had lunch with a friend working there, then walked on to a few rides (not terribly busy with most kids back in school). Between the fifth and sixth inversions on Raptor, I thought, "Wow, if I had not left my six-figure corporate code monkey job, I'd be sitting in a cube right now developing software I could care less about." Instead I was flying through the air strapped into a roller coaster.

  • Themes and CSS in ASP.NET v2

    I've been playing a little with the themes in v2 and I've changed my opinion on them. When I first learned about the basic capabilities of themes I kind of shrugged it off as a, "That's neat, I guess."

  • SQL Express and ASP.NET v2: wow!

    Scott Guthrie pointed me in the right direction in my last post regarding the use of SQL Express databases in ASP.NET v2. What I thought most incredible was that in e-mail he said that a box with SQL Express on it will create a database file in your /data folder, ready to go, for Membership, Profile and such, just as it did with the Access provider (which is going away for beta 2)! How cool is that?

  • Need help on SQL Express using file in /data

    It's my understanding that since the Access providers are going away in .NET v2 that the SQL providers will be the default. However, and correct me if I'm wrong, they won't generate a database file for Membership, Profile, etc., the way that the Access provider did in the /data folder, right?

  • Gmail must be ready to ramp up

    In the last week, I think I've had at least ten invites to give away from Gmail. I get the distinct impression that they're either pushing another level of traffic for testing purposes or they're considering going live soon. There are so many accounts out there now that it's not nearly as cool or "in" as it used to be to use Gmail!

  • Slipping schedules aren't good for anyone

    It appears that Longhorn is going to be less than we had hoped for. According to, some features will be left out just so they can finally get it out the door. Personally, I don't care that much, but I know the Windows developers that have been working with the alphas are disappointed.

  • ParameterizedThreadStart: Good call!

    I just noticed that a new overload of the Thread constructor was added to .NET v2, accepting a ParameterizedThreadStart object. Cleverly enough, it allows you to call the thread's Start() method with a parameter to pass in to the method you're firing in its own thread. I don't understand why that wasn't there from the start, but good call!

  • Search for "http" on Google

    I was trying to remember if the second "T" in HTTP stood for "transfer" or "transport," because let's face it, even code monkey geeks don't think about it every day. To find out, I typed it into Google because of their convenient link to the definition.

  • SQL paging advice needed

    OK, so saying that SQL Server isn't really my thing is kind of lame, but I'm not one to pretend I know everything. Generally I use a procedure like this to get paged data (parameters replaced with actual values for simplicity).

  • Jeers for LoginView control

    Awhile back I was crying about how LoginView is designed wrong. Apparently Microsoft doesn't agree with me. At issue is the fact that controls inside of a LoginView are created late in the page lifecycle so they can't be accessed directly from PageLoad or postback events. The stated purpose of the control, according to the documentation, says: "Displays the appropriate content template for a given user, based on the user's authentication status and role membership."

  • Why electronic banking is better

    Last month I went inside of my bank to make a deposit and get some cash, somehing I almost never do because I use the ATM. That particular day, the ATM was broken, so I had little choice.

  • .NET seems to make everything easier

    Back when I used Overture, I always thought it was kind of a cool security feature where you had to type in letters in a graphic that is, theoretically, not machine readable. This deters automated attacks. It occurred to me that'd be a nice feature for the forum registration.

  • More adventures in Web app threading

    Responses in my last post about this were either, "Threading in a Web app isn't a good idea," or a lengthy example that works, but wasn't really what I was after. After looking a little harder, I realized the error of my ways. The goal was to launch a Timer from an HttpModule. This is where I started:

  • XP SP2 issues

    I'm sure that 90% of people running SP2 will not have any problems, but we've already had a lot of issues.

  • Not every website is

    In my post yesterday there were some interesting comments about the code sample I posted regarding the use of StringBuilder vs. straight concatenation. Yes, I created a ridiculous scenario that would probably not ever occur in real life, but the intention was to illustrate a point.

  • A new version of IE? Why bother?

    I was reading this article on about the updates to Internet Explorer included with SP2. One “freelance Web developer” is quoted as saying, “Internet Explorer hasn't been updated in three years, whereas every other browser has been updated in the last six months... A company like Microsoft shouldn't have the least-capable browser.”

  • XP SP2 thoughts

    I got XP Service Pack 2 today. So far so good, I've only noticed one compatibility issue so far. The pop-up blocker in IE is nice, though the default option with that warning bar is annoying. Not sure what they were thinking there.

  • Need SQL help

    I'm embarrassed to admit it, but I need a little SQL help. The truth is, I suck when it comes to SQL. I guess I'm not disciplined enough to really become a guru.

  • Specifying the right parameter in SqlDataSource control

    I don't recall seeing this before, but after searching a bit in the forums I found that you need to specify the parameters in your WHERE clause of update and delete commands differently for the SqlDataSource control. The following is functional code:

  • Getting back to writing code again

    Finishing my book is sucking the life out of me, because I just can't seem to stay focused enough to bang out the last few chapters. They aren't even chapters that require research, it's stuff I feel I know well enough to just go at it.

  • What piracy is not

    Frans says I'm “handling the discussion wrong” from my last entry. I wasn't aware that I was bound to any one person's discussion guidelines. If you don't like how I handle it, don't respond.

  • G4 game awards a joke

    There's a short story on GameSpot about G4-TechTV's “G-phoria” game awards, and it sure sounds lame. Yes, I'm one of the many that hated the network merger (along with the functionally illiterate kids that keep posting in my blog), but it sounds like the Comcast folks don't even understand the audience they thought they had, let alone the one they acquired.

  • Non-amazing discovery about role management

    I was reading a little more about the role management in ASP.NET v2.0 when I realized that, duh, the reason it's not on by default is that it checks the logged in user roles for you and adds them to the user's Principal object. I was so blinded by the idea that I had a fun little HttpModule that did this for you (back in the “dark ages” of .NET v1.1) that I overlooked that.

  • Specialty Web publishing, on the rebound

    Anyone that published a small Web site than pulled a few hundred thousand visits a month circa 1999 knows that you could make an OK dollar producing such a site. It was a blast because if you did it, it was probably something you were really excited about, and it was a labor of love that proved to be a hobby with income.

  • When real life attacks!

    One thing I noticed about being self-employed (er, a bum, or something), is that I've had more time to blog. I feel like I've been doing it a lot more since I quit working for The Man.

  • Writing about Web services

    I finally finished my book chapter on Web services. Like the rest of the book, the goal is to get beginners up to mid-level code monkeys. I have to admit that I've not done a ton of work with Web services, though I've consumed those provided by Amazon and Google for little projects, and written a few in various jobs that send and receive fairly concise objects. I'm comfortable in my knowledge, but there are a lot of people that know far more than I do, especially with regards to the underlying XML SOAP structure.

  • Writing about server controls is no fun

    I finally finished writing my book chapter on custom and composite server controls tonight. I hated every minute of it because it's not an easy thing to write about in a way that is simple and lets the reader "get it" quickly.

  • Buggin' on the LoginView control

    I guess I'm just lucky, but I was surprised to find some bugs with the ASP.NET LoginView control and its use in VS 2005. I know it's only beta 1, but it surprised me.

  • The realization of misery

    Almost two months ago I quit my day job. I justified it (rightfully so) by knowing that I had to dedicate adequate time to writing my book. What sealed the idea is that I could at least get by with the little book advance and advertising revenue from my sites. I wouldn't be rich or able to live the J-Pizzie lifestyle, but I could at least pay the mortgage for a little while.

    The last two weeks in particular have led to a number of realizations, most of which have to do with the fact that three years in corporate hell sucked the soul right out of me, and made me a miserable person. The thing that's so fucked up about it is that I thought that for the most part I was pretty happy.

    When the bubble burst in early 2001, and Penton Media was going down the crapper, I split for Pfingsten Publishing. After only a few months and 9/11 related problems (not to mention a bunch of cheeseball big company personalities in a worthless start-up), they laid me off. I spent six months on the "government payroll" with my self-esteem in the crapper, unable to find a job. I was at least able to learn .NET during that time, which got me a job at an even more shitty payroll company. A year and a half later they laid me off too. Barely missing a beat, recruiters calling every day, I got in on a contract job with a gigantic insurance company, breaking the six-figure barrier. Four months later, it was May, 2004, and I made the break.

    Many things became very clear during those three years. The first was that money isn't the key to happiness, or a measure of self-worth. I doubled my salary in three years, and the more I made it seemed, the less interested I was in the work.

    The second thing is that, for better or worse, your self-esteem is tied to what you do. Prior to this time period, I worked for three years creating, programming and engineering an amazing government cable access operation, and I loved it. I would've stayed had it not been for the fact I'd never break $30,000 on the salary scale, and the people I worked for would have no part in making a raise happen. (Money isn't everything, but skilled professionals need to have some minimum standard.) Even at Penton, I believed in what we were doing at one point. Every job thereafter I didn't care. It wasn't interesting, and that made me feel worthless.

    The third thing is that the fire to do great things elevates your work ethic to a higher plane. I was doing great things in that government job, and worked insane hours to make it happen. The sheer act of creation is a natural high, and one I never got out of those three years. I would briefly have moments of satisfaction when I finished a revision for CoasterBuzz or something like that, but for the most part it was rare.

    Fourth is that balance is key in life. I've talked about it in online journals for three years, but in reality I was never practicing it. Finishing Masters of Doom, I realized that lack of balance is what put Carmack's and Romero's ventures on a perpetual downward spiral (if the timing is right, you can still make millions even if you screw up). If you keep at it too hard, you'll burn out and alienate everyone else. If you live carelessly, failure will kick your ass. Somewhere in the middle, you can succeed and be happy.

    Finally, the inability to take risks will keep you forever stuck in the same place. That's probably what was eating at me the most. In college I was idealistic and optimistic, heading into the worst business in the world, radio. I had a bright career ahead of me in an industry that killed more people's spirits than it elevated. The crappy jobs took those qualities away from me. Only now am I realizing that I missed out on three years because I wouldn't take any risks. Sure, I'm "poor" for the moment, but the long-term benefit of writing a book and taking time to "find myself" again will help me out.

    Fortunately my dear wife Stephanie didn't take off during those years. She had a lot of realizations herself with regards to career and education, so naturally things could've been really bad between us. As of today, I feel better about myself, my surroundings, my skills, my interests and my future than I have in years. There are a lot of things I still want to change about myself, but I finally feel that I can evolve with a little time. I'm not stuck anymore.

    Now I'm not just saying it anymore... it really is fun to be me again.

  • Does shareware still work?

    I need to make yet another Masters of Doom reference, this time to the idea of shareware. The original Doom and Commander Keen series made a ton of money by going the shareware route. Is this still possible today?

  • What happened to the 80s pizza joint?

    I was reading Masters of Doom today, which chronicles the lives of John Romero and John Carmack, two of the founders of id Software. In talking about their youth, Romero spent a lot of time going to pizza joints to play video games, because that's where the games were generally found.

    This made me stop and think, where did these places all go? I can think of three that used to be in the area around my house growing up in Cleveland. I always looked forward to going to these place because if I could convince my parents to spot me a quarter, I'd get to play Pac-Man, or even better, Ms. Pac-Man. How awesome was that?

    Now, it's rare to find a pizza place at all where you can go in, have a slice and play a few video games. Pizza is all about the big chains and delivery. Arcade games are harder to find outside of places like Dave & Busters. It's so odd that the era has come and gone.

    The weird irony is that you can buy the Ms. Pac-Man/Galaga combination cabinets now in small, medium and cocktail versions. In fact, some are targeted for home use, without the coin slots.

  • Bookstore visits just aren't the same

    Visiting my local Border's bookstore just isn't the same as it used to be. There was a time when I would anxiously head back to the computer section and browse the many .NET books, especially the Wrox Press books with the red covers. There was so much to learn!

  • Gmail anticipointment

    A friend finally hooked me up with a Gmail account. I guess the biggest reason I wanted an account was because it's not fun not being a part of the “in” crowd. So now that I've got one, well, not sure what I'm going to do with it.

  • Your blog Googled to death and the G4TechTV merger

    A while back I wrote about my disgust following the merger of G4 and TechTV. I'm convinced that the idiots at Comcast really had no idea how bad their programming really was in terms of production, air talent and scope. They bought TechTV because of its distribution, and ignored that fact that its programming was mostly top notch, so they killed good shows, fired a ton of people, and shut down the heart of the operation in San Francisco. Dumbasses.

  • Unit testing saved my life, and other thoughts about tools

    The text parsing in POP Forums has always been the bane of my existence in that product. Version after version, it's the thing I've hated most to try and make it work better. In a nutshell, it's supposed to translate “forum code” into HTML for post storage as well as reverse parse it or parse the sad excuse for HTML that comes out of IE's built-in HTML editing.

  • Application, Page and Control events in ASP.NET v2.0

    It appeared to me that they added a few things here and there to the Application, Page and Control lifecycle in ASP.NET v2.0. Curious, I whipped up some derived classes to output to a text file every time one of these events fired in the grand scheme of a request. I wired in the basic events then did overrides for everything that appeared to fire at some point. I think it's mostly complete, but the data binding events don't appear to fire unless you've got some data binding to do...

  • My birfday and other musings

    Yesterday was my 31st birthday. It was a lot less stressful than my last one, presumably because you only really freak out on the ones that happen every decade. I don't feel like I'm aging too quickly or anything, or that I'm missing opportunities. The only age-related thing I ever think about these days is children. I'd love to have one (preferably a girl), but I just don't want one now.

  • Writing an SMTP client

    The fun thing about my current voluntary break from “normal” work is that I can experiment with code for fun. I can't remember the last time I did that. Ever since I got the book “Professional .NET Network Programming” a year or two ago, I thought it would be fun to try and write a simple SMTP component. The spec is pretty straight forward, so why not?

  • TcpClient.Available... hooray!

    Every once in awhile when you're tooling about .NET v2, you come across something that you wish you had in the previous versions. Today, that's the TcpClient.Available property. It returns an int that cleverly enough tells you how many bytes are available to read from the network stream. It helps shave down a couple of lines required to read a stream.

  • Would you like to save a dump?

    One of the things I do “on the side” is compress video for delivery on the Web. Given my television background B.P. (before programming), it seemed like a natural fit to get into it.

  • I bought the wrong chipset

    I bought the wrong chipset last night... a poker chipset. I'm fascinated by the game and would like to start playing, so I bought a $150 set of chips and a case. They're the good stuff, the heavy clay chips that make the cool noise, with an indestructible metal case.

  • Working where ever on the laptop

    In early 2003, I bought a custom HP laptop online. It has a better mix of what I wanted than the retail versions available at the time. It's a 2 GHz Celeron with a half-gig of RAM, 15” 1400x1050 screen and 60 gig hard drive. It replaced my aging Sony (P3/450) which had a hard time running Visual Studio.

  • New Beastie Boys today after six years

    The new Beastie Boys album was released today, their first in six years. Scary that the kid in front of me buying the CD at Best Buy wasn't even born in the Licensed to Ill days. They're still the best thing in rap today.

  • Finally finished writing a MembershipProvider

    I mentioned awhile ago that I was planning to write an ASP.NET MembershipProvider for POP Forums. I finally got around to it the last day or two and finished it, along with a RoleProvider. Dare I say that it was really pretty easy, there are just a lot of methods to implement. What a great feature this will be for people that want to integrate Membership into their existing apps.

  • The users online collection: in memory or from the database?

    In the last version of POP Forums, I stored the users online in an Application variable. Surprisingly enough, the performance wasn't bad, even though I suspected it might be once you had a thousand users or so. I opted to do it that way instead of hitting the database to see when the last “hit” by a user was, because I wasn't that into updating that field on every page request. I know the forums does it that way, and periodically caches.

  • When Visual Studio 2005 attacks!

    I'm absolutely thrilled with the way Visual Studio 2005 leaves my HTML the way I want it. It's a fabulous tool and it's about damn time that someone in Redmond realized that we know better than the machine how to write and format our code!

  • G4-TechTV merger is really backward

    If you're a TechTV fan you know that Comcast bought the network to combine it with their own G4 network, creating the combined G4-TechTV. In the process, they cut a lot of the TechTV shows and laid-off a ton of people at the San Francisco location. Those that survived have to move to L.A.

  • You've heard of Google, right?

    I need to vent. I participate in a couple of forums where I'm glad to help people out to solve their coding problems. However, it annoys the crap out of me that people will ask “how do you” or “do you know of any code that does” whatever. Honestly, the first thing I do when I see a question like that is hit Google, and more often than not, I find something right away.

  • Using parameterized SQL queries

    Now that I'm working for me (have I mentioned that lately? ;)), I'm going to try and devote more attention to uber:ASP.Net. I had such good intentions for that site before I went back to work for The Man in January, but quickly slacked off due to a lack of time.

  • Interfaces to abstract classes

    I cracked open the First Look book for the first time since I actually had the bits (three builds later, actually). I was surprised to see that the MembershipProvider was an interface at press time, and not an abstract class as it is now. I wonder what the reason for this is?

  • Two weeks on my own

    Well, I'm wrapping up two weeks on my own after quitting my job to write my book, and take in the concept of independence while I wonder how I might work for myself permanently. I've got about four months before I evaluate if I'll keep this up, and so far, so good.

  • Going back to 2003: Not as fun

    I had to take a break from writing and playing with Visual Studio 2005 to work on “real” work back in VS 2003. Wow, what a drag that is. Beyond that crappy HTML designer, it's not nearly as fast to type code without the Intellisense on steroids and the better color coding.

  • ObjectSpaces delay: No worries here!

    Some people are a little disappointed that ObjectSpaces won't make the Whidbey release. I'm not one of them. It just reduced the chapter count of my book by one and that's a good thing!

  • Can't get config settings... Argh!

    I'm having such a grand old time with all this new junk that it's a real buzz kill to hit a roadblock. I'm trying to run some unit tests against some DAL classes and they aren't seeing the appSettings keys in my config file at all. As far as I can tell, everything is as it should be. The config file is the same name as the assembly with .config on the end, and it's in the same directory. Do you think NUnit is doing something odd? Is it some weird symptom of using this alpha software?

  • Unit testing with HttpContext

    I've become a real fan of unit testing, though I was somewhat skeptical about its use in Web apps. NUnitASP is pretty cool for testing UI, but what I really needed was a way to test classes running in the context of a Web app, not actual requests for pages.

  • I really dig the provider model

    As I've been musing lately about how to integrate POP Forums with the new security features of ASP.NET v2, I have to say that I really, really dig the new provider model. Since I had to come up with all of the plumbing once upon a time to set roles and such, this is much easier having to just write the plumbing code to the data store.

  • NUnit against v2 of .NET Framework?

    Thought I'd toss this out to the “blogosphere” (I hate that term)... Has anyone been able to make NUnit work with the May build of .NET v2? I was able to get the source to compile, but running it throws errors I'm too dense to understand. Not sure if it's being configured right either.

  • Membership in POP Forums revisited again

    Last week I posed the question on whether or not I should write my own Membership provider for use in POP Forums. As I mentioned in that post, I already have my People class that does so much of what Membership does, but it might be convenient for users including the forum in their app to use the familiar (well, it'll be familiar someday!) Membership class instead of my own.

  • Launched a new site last night!

    Finally, Walt and I launched PointBuzz last night. The premise is simple: I don't have the desire to maintain a ton of content, and would rather write code, while Walt likes to produce content. So we combined Virtual Midway and Guide to The Point into PointBuzz. It is, without question, the greatest unofficial Cedar Point site ever created.

  • Open source: Far from a reason not to use .NET

    I love the little holy wars that go on in various forums about why .NET sucks or whatever. Those who state this are generally folks that have never used the platform. One of their key “arguments” is the lack of open source community around it.

  • "I'm blogging this." Huh?

    So I wore my new “I'm blogging this” shirt from to my J.O. volleyball tournament Saturday. None of my girls knew what it meant, and their parents were just as clueless. Only one of the officials (a young, not geeky cutie) actually got it.

  • Is it 2005 yet?

    Just installed the March build of Visual Studio 2005. Even better than the last build in terms of just working.

  • Time off from all work, without a long-term plan. Ever do it?

    My wife and I, now around 30 each, have contemplated going away for a month. I'd be leaving a well-paying contract job (that sucks the soul out of you) and I have no plan on what I'll do when we return. I make a little money from my Web sites through advertising, at least enough to pay the mortgage.

  • Exhibit 13

    The Blue Man Group live rock tour was on the "free view" channel on DirecTV. Pretty intense show. I picked up the CD, also good stuff.

  • CSS will be the death of me

    You know, I really like CSS, and it makes live easier in so many ways. Unfortunately, because I haven't spent a ton of time with it, it's also a pain.

  • Externalized rules and generated code

    Another team at the company I'm contracting for just did some of the first work in creating a new system (it will take years to complete, replacing a COBOL system). They did a little performance testing and they were surprised when it reached only 10% of its target performance metric. Ouch.

  • Help on class design patterns

    Having gone to college for journalism and not anything computer related, I've been exposed to various class design patterns in various books, none of them really jumping out at me as, “Wow, that deserves its own name and maybe a book!”

  • Community development and getting questions answered

    Josh Ledgard made a brilliant post where he took inventory of the issues surrounding the Microsoft community. I'm glad to see this because I think we're at a critical point in the .NET world where we're hitting critical mass and we need more qualified people to work. People get qualified by working in community, in my opinion. Josh's observations need to be looked at, so that we don't end up with another “look at me” Channel9 thing (days later, I'm still not impressed, but they also had a save the world hype to live up to).

  • Reboots suck

    When is Microsoft going to figure out how to roll-out patches that don't require reboots? It's hard to pitch the reliability of Win 2k3 Server when you have to reboot every couple of months. It gives the Linux nuts a reason to kick sand in your face too. Granted, it pulls my sites off the air for all of two minutes, but that's two minutes too long.

  • Writing the book

    Got the contract to a place I'm happy with it, and it's time to get beyond the three chapters I have so far and write an ASP.NET book! I'm looking forward to the entire process.

  • Fanboys, a better Microsoft and Channel9 revisited

    I got exactly what I expected when I called Channel9 stupid. Heck, it even got Scoble to notice. So now that someone is listening, let me go deeper. (Also... a shout to G. Andrew Duthie for mistakingly identifying him a 'Softie. My bad! For some reason I thought you were part of the team, but then I get a lot of people confused because a lot of authors, ASPInsiders and such have pretty good access to what's going on.)

  • I am an author!

    It's official... I'm getting a contract for my book proposal today, and with the publisher that I think is tops in .NET books right now. Even more exciting is that their marketing people think it will be a big seller. How cool is that? I hope I can deliver on that.

  • Contemplating declarative controls

    I was thinking last night about all of the new declarative controls in ASP.NET v2. Things like the data source I find fascinating, because they require even less code to deal with. Putting aside the debates about the “right” way to separate your application layers, I think these are great for John Q. Programmer Jr.

  • The EU and MSFT

    What the heck, I'll jump in. Reading from Keith Warren and Frans Bouma, I think the two go to extremes in describing what they see as the issues surrounding the Microsoft and EU case. The reality is probably somewhere more in the middle.

  • Need help on defining delegates

    I'm at that point in my book where I need to write about delegates. While I do “get” delegates, it's really hard for me to put into words what they are. Every example I've seen in other books does a poor job of it, in part because the descriptions are so abstract that you end up scratching your head and wondering why you'd ever ever need one.

  • The culture and experience gap in the .NET community

    I've thought a lot about the culture and experience of the .NET community at large lately. Between the book I'm trying to write, the site I'm trying to maintain (about time to write something new for it!) and the communities I try to be active in (Sitepoint, as well as my own), obviously I think about such things quite a bit. Consider also a number of blog entries about who Microsoft should target with their tools, and the resulting elitist discussions.

  • Code-behind philosophy challenged by Whidbey

    I've been playing with Whidbey and experimenting a bit, in part for the book I think I'm writing, and also to start fleshing out how I'll build POP Forums for Whidbey. I think I need to make a design decision from the start, but because of the new IDE's abilities, what was once obvious isn't anymore.

  • Hobbyist code monkey is tomorrow's enterprise architect

    A post last night by Joe Bork in response to a post by Rory Blyth debates whether or not Microsoft should cater to the low-end programmers and hobbyists in the development of its tools. I take the position that Microsoft had better cater to these folks. If the point-of-entry to the platform is easy, it pulls brilliant people into our profession. We need more of those, because there are too many people running around who think because they have a degree in CS that they're experts. (Note: I think everyone should go to college, live on campus and learn about life, but that's a discussion for another day. The point is that college alone is not a measure of your capability, see these comments in Rory's blog. I'd never hire those people.)

  • Getting the book published

    I got a second round of editorial reviews from a certain publisher for a book proposal I did. Wow... the feedback was almost all positive, up from 50% thumbs down, with the remaining negatives really being differences in opinion (the various reviewers contradict each other on certain points). I'm supposed to have a conference call with the publisher later this week.

  • Messing with code generators and dreaming of ObjectSpaces

    I've used code generators in various environments, but I never really thought about writing my own. I then realized that I tend to write a lot of similar data access classes for smaller projects, where I can bundle data access and business objects in the same class. I run into that a lot on smaller little consulting things. I know some people hate that and say you should always separate them, but whatever. If I get $3k for a little Web project it's not going to happen.

  • Poor physical coding environments

    Who was the rocket scientist that decided cubicle office environments were a good idea? I agree that certain occupations might be well suited for this, but programming is not one of them.

  • Getting sucked into Apple culture

    They opened up an Apple store here in the Greater Cleveland area, in a real trendy area on the east side in a trendy new outdoor mall. Make no mistake... I am a devout iPod user and there are more than 100 songs so far from the iTunes music store on the little guy.

  • Wi-Fi in weird places

    I coach 17 open Olympic volleyball for a club in Cleveland. We have practice today at an elementary school that I've not yet been to. Not knowing how long it would take to get here from the other side of town, having to cross through downtown, I just went for it. Better early than late.

  • Stored procedures, business logic and certifications

    I was getting into it on another site with this guy who insists that you should apply business rules to data in stored procedures, going as far as to quote something either on MSDN or in a certification training book. I disagreed with him but he was sure he was right.

  • When do you stop with the extensibility?

    The current project I'm on is with a major insurance company replacing, over the next four years, its old mainframe policy processing system. It's all fairly organized, but there are two problems that are making it less than fun.