Archives / 2005 / March
  • RHS on Hungarian notation

    Whoops, I closed the window that had the other blog that referred to the one I'm referring to (got that?), but RHS has a good post on why Hungarian notation doesn't make sense in the modern world.

    I have to admit that I used it, and it was a throw back to when I had to use VBscript in ASP.old pages. I made the mistake of having code samples out there using it today and I still get blasted for it, and justifiably so. Early last year I finally let it go because I was lazy, and because the contract I was on (auto insurance giant Progressive) adhered strictly to the standards set in various Microsoft docs.

  • Frans gets it too, about communities

    I think Frans more or less agrees with me in his post, although for slightly different reasons, that Microsoft sponsored communities are a mess of doomed kingdoms. I already said my peace about it.

    The only thing I might slightly disagree with is that all Microsoft initiatives are doomed to fail and that the people in the trenches really drive the community. I don't totally think that's true. Like I said, eliminating duplication of effort would be a good start.

    I thought GotDotNet was very cool when it started, and my login there is one of the earlierst. I racked up hundreds, perhaps thousands of posts. Then it stopped working because the site was (and still is) a poorly coded mess that doesn't work half of the time. Then I stopped going to the ASP.NET forums because they weren't working half of the time. I guess the reasons there were technical, and not community driven at all!

  • Amazon's affiliate program can make you a buck or two. Who knew?

    Naturally I have Amazon affiliate links all over creation for my book, partly to promote it and partly to make an extra $1.50 or so on every copy I sell. Truth be told, I've only sold a little more than a dozen copies in the last three weeks.

    The shocker is that people still went on to buy all kinds of other weird stuff, and I'll get a nice check from Amazon for my trouble. The stuff I ended up selling was 80% things not my book. Classic CD's like String Quartet Tribute to Godsmack and a Barbie doll with light-up wings. Weird.

  • Yet another little Microsoft kingdom

    The latest Microsoft kingdom: CodeZone.

    I don't get it. No one at Microsoft talks to each other about anything. I've mentioned more than once that Microsoft takes several directions at once, all in the name of entrepreneureal spirit, when the company could get it right and consolidate resources and build real live centers of activity that eliminate the duplication of effort.

    For example, ASP.NET is my thing. I can get information about it on, GotDotNet, MSDN, Channel 9, this new site, and God knows where else. Isn't that a little ridiculous?

    I've seen it posted many times over that getting anything posted to the "proper" Microsoft sites is a pain and takes forever, so these little projects have launched all over the place. That's great, but the resulting mass chaos of URL's is the polar opposite and just as bad. Surely there must be some kind of middle road?

    Someone in Redmond needs to take charge and resolve this. Lots of little kingdoms do little more than water down the overall value of what the company could be doing in a consolidated fasion. No one should have to visit a half-dozen sites to figure out what's going on.

  • Video and the Internet

    Scoble has been talking about video on the Internet lately, which got me thinking a bit in a retrospective manner. Long before I became a code monkey and author, I was a broadcast monkey. I was one of those rare types that did it all, from air talent to engineering.

    When I made the professional transition around 1999, broadcast video was really just starting to make a widespread conversion into the digital world, and even then that was only with regards to acquisition. Sony had its DVCAM and Panasonic had its DVCPRO (what I used in my facility), and consumer miniDV was catching on, if a bit on the expensive side. DV-based video editing more or less sucked, because the only thing any normal people could afford was Adobe's horrible Premier. To really get things done, you needed something from Avid or Media 100.

    Today I use Avid's Xpress Pro HD, which is a fabulous product that shares the same interface as the stuff used right up to feature films. They're stubborn about hardware compatibility, but really no one can touch what they have. It's hard to believe a software-only solution is really this good. Ditto for Apple's Final Cut Pro, which I haven't done anything more than play with but it certainly seems really solid.

    Figuring in the Internet has always been an interesting process. Video distributed over the Internet is still of marginal quality (in my broadcast eye), and because of all of the compression, you can't edit or remaster it without killing the quality. Anything under native DV isn't usable for further production.

    Of the various formats out there, Windows Media is OK for talking heads, Real blows if for no other reason than the player is a bloated piece of crap, and QuickTime, in my experience, still gives you the best bang for the buck. You can do simple HTTP streaming with it, and the Sorenson codec is still at the top of the heap. There's a reason most movie trailers are released in this format. People pay me money to encode video, and I always get them the best quality in QT with Sorenson.

    Broadband penetration sure has made things easier. You can do really nice stuff on the Internet at a resolution that can actually be seen as something more than a low-resolution slide show. Thank God that old modems are becoming more rare with each passing year. Access and bandwidth are probably still the biggest limitations to distribution of video, but I'm encouraged by lower pricing for the connections and computer hardware. We've still got a long way to go.

  • In and out of work routines

    That contract job I was excited to start has more or less stopped because the client is enduring several IT issues outside of the scope of the app I'm supposed to architect, so I've been at home for a week. Last week it wasn't a big deal, especially since I spent the weekend in Baltimore for volleyball, but they're still not pitching the "big picture" proposal until later this week. That's annoying.

    My biggest beef is that I got all excited that I'd be able to really knock out my taxes without having to endure any huge financial hit because I'd have this extra work. The blow will certainly be cushioned, but I could still use the extra cash to support the J-Pizzie lifestyle.

    My own business, the ad-supported and subscriber supported content stuff, is not doing particularly well because of really soft ad sales in the first quarter. I'm sure it's just a phase, but the timing stinks. It's totally offset by stuff I sold directly, but I was kind of hoping the direct sales would have been more of a bonus.

    Since this is already a rambling post, I guess I'll throw in that I'm trying to use this week to be disciplined and get POP Forums v8 rolling along. Last week I moved all of the caching code out of business objects and into the data access layer. With SQL 2005 and the new cache dependency scheme, it seemed to make more sense having the caching there where it can play to the strengths (or weaknesses) of any built-in capabilities that the data store might have. I haven't had any time to play with SqlCacheDependency, so I don't even know if there's any advantage to using it over the scheme I've been using. That's a project for another day, way down the road.

  • Microsoft marketing got it all wrong with VS 2005

    I think that finally, years later, we can finally put the name-everything-.NET fiasco behind us. But our friends in the marketing division of Microsoft have managed to get it wrong again. I'm absolutely astounded how the product development teams can think up great things, be in touch with the world, and listen to customers, while the people down the hall can't get even a single clue.

    There has been a lot of chatter about it, but I see two particular issues.

    The first is that the entire Visual Studio product line has been fragmented to death. The differences between standard and pro are silly enough, but the Team System skus are even more ridiculous. Collaboration my ass. Whether it has been in a small team of two or in a giant corporation, I've always had to have all of the tools on my computer to get the job done. That includes requirement management, defect tracking software, testing software, quality tools, Visio, Office, the IDE itself, etc. The arrangment of the VS skus pretends that we all live in these discreet little spheres and never cross into other areas, especially the VSTS products. What a shame.

    The other issue is the one about the server product for Team System. That one doesn't stick quite as close to home, but it's still certainly an issue. How it's tied to MSDN subscriptions is even more ridiculous, and the consultants get the short end of that stick. Seriously, what's the fear there? We've been getting the enterprise version of SQL Server for years. You don't think we're using that kind of thing in production, do you? Why would it be any different for this new server product? Good luck getting that into the enterprise when consultants can't even get their hands on it as part of their subscriptions.

    Congratulations to the development teams bringing these products to us. We're glad that you've been listening. Now go kick down the doors of the marketing people and blast them for wasting your time.

  • Microsoft to developers: Here are the toys, now let the grown-ups play

    About a year ago I was chatting with an MS evangelist that felt pretty confident about the future pricing of VS 2005 and the associated tools. To his credit, he was right in some respects. The standard and pro versions of Visual Studio are certainly more affordable than they used to be and address a certain market.

    But what they really did is pushed off what we already had and made it less expensive, and decided to charge more for the really useful stuff that makes it worth the upgrade. Look at the feature matrix. Can you spot the problems? I don't know about you, but the idea that users of the standard or pro versions don't need unit testing is absurd. Look around, Microsoft... everyone is doing test-driven development these days. It's as essential as the debugger.

    I guess the reason I'm so annoyed is that I, like a huge percentage of developers out there, have to wear many hats. I'm more often than not a one-off developer and/or architect working in a team on a contract basis with my own hardware and software. I need all of these tools so I can get away from the nightmare combination of NUnit, NAnt, VS, etc. So unless I can score an MVP nod for my projects or site (something not getting any easier by making posts like this, I'm sure), or for being the author of an ASP.NET book, I have to shell out more than two grand for an MSDN subscription to get what I really need. I refuse to believe that my situation can't be duplicated among thousands of other developers.

    This is the kind of thing that makes for such great fodder among the open-sores zealots. For those on the fringe of choosing a platform, this is not exactly going to make Microsoft a slam-dunk for anyone.

  • CliqueSite.Ads Beta 1 available for download

    I've posted the first beta of CliqueSite.Ads. You can download it here.

    This version will time bomb on July 1. So far I've been able to tweak it to the point where it can easily serve about 1.5 million ads per day on mediocre hardware, so for the bulk of future customers that need only a couple hundred thousand per day, this will take care of you, no problem. I've been running this on my production sites doing around 150k impressions per day, and that's on the same box as several forums, content management apps, SQL Server on the same box, etc.

    I'm not sure how it will be priced, but I'm certainly open to feedback on that.

  • Are Comcast and G4 run by 13-year-old kids?

    Just when you thought it couldn't get worse, G4 has decided to rename The Screen Savers, formerly the best tech show anywhere on TV, to "Attack of The Show."

    Do you ever wonder who is running that network? They obliterated a well-known brand, alienated and dismissed an audience that bought BMW's and Oracle software instead of monetizing it, and decided that running video game shows all day, every day, most of them repeats what a good idea.

    Rarely do I say that I want a business to fail, but this one should. They deserve it. No media acquisition in recent memory has made less sense than this. Read the various blogs of the people that either got canned or left, and it gives you a good perspective about what goes on there. Paul Allen should be ashamed for ever having sold the network.

    The irony in all of this is that the one last TechTV hold-over is X-Play, and it has gone relatively unchanged. It's ironic because TechTV did that one show better than G4 did the rest of the network.

  • I suck at project estimation

    Today I sat down with the project manager that I'm working with on this contract project to figure out how long it will take to build the product. Actually, all we really did is map out the time for requirements, which we're pretty sure will actually take more time than the actual development (as well it should be).

    But based even on our preliminary SWAG on the client's needs, and a look at the horrible system we're going to replace, I have such a hard time guessing how much time it will take to build. With solid requirements, my feeling is that it shouldn't take more than six weeks. All of the hard work will be done in the requirements and design process.

    As kind of aside, what do y'all use for requirements tracking, and does it have some kind of bug tracking capability as well?

  • "Wicked" dead at 33

    I saw on Frans' blog that Billy "Wicked" Wilson died at age 33. He was the creator of Voodoo Extreme, a gaming site that, as he would say, "kicks more ass than Gary Coleman on a crack binge." It was essentially a blog site, back in the days when no one knew what the hell a blog even was. He linked you to the good stuff, every day, and gave you his opinion the way few people could. I think he coined the term "thimble dick," which to this day makes me giggle.

    VE eventually got too big in that era where great sites got expensive to run and the advertising dollars just couldn't cover the expense. I don't know the specifics, but apparently he nearly lost everything, got divorced and the domain was eventually sold to IGN. Some of the stuff I've found indicates he was too proud to ask his audience for money. He fairly recently co-founded Gaming Groove, where you'll find several postings about his death.

    Billy's version of VE really inspired me, and honestly it was the reason that I started CoasterBuzz. He demonstrated that you didn't have to be a corporate tool or follow traditional media conventions to attract, entertain and retain an audience. It was editorial-journalism about the journalism and the gaming industry.

    Details on his death aren't clear, but he was apparently sick in the hospital for a few days. Regardless, it sucks. He is survived by his ex-wife and son.

    Edit: Apparently he died of liver disease...

  • Maximizing ASP.NET: Real World, Object-Oriented Development is shipping!

    After bugging Amazon a bit, and worrying about it, Amazon is finally shipping my book.

    You can order the book here.

    Thanks to those of you that offered encouraging words in the last post, and indeed in the 16 months that the project has been on my mind. If you're interested in evaluation copies, I suppose you'll have to contact Addison-Wesley directly. You can't have any of my copies. :)

  • Microsoft listens, even when you're not talking to them

    In a post from Tom Arnold, PM and ninja for VSTS Test, he says in response to my post that the stuff I didn't like about the testing stuff will be fixed in beta 2. Rock on. That's good news. In particular I hope that they deal with the clickable trace output. That would be sweet.

    See, Microsoft does listen. For all the crap MS catches about being arrogant or monopolistic or whatever, I tend to think they're humble and want to build products that customers actually want. I've read nonsense about how all this tool integration is designed to give the company a "stranglehold" on the market and lock people in or something like that, and I find that outright stupid. Put aside the fact that Microsoft is not a charity, but it behooves them to build stuff people want. How crazy is that?

    I'm reading the Head First Design Patterns book (you know, the one with the cute barefoot blonde girl on the cover) right now. It's actually a Java book, but if you know C# you can mostly get it. While I bought the book to find something not dry and boring to formalize what I thought I already knew, as an aside I see more than ever how Java-like C# is. And I say, who cares? Java is C-like, so it's all evolutionary. I don't recall anyone at Microsoft ever saying, "We created this new thing that no one ever thought of."

    I guess that tangent is just to comment that I still see people post stupid things like "M$" and hate on the company for no good reason other than it's fashionable. Microsoft does listen (unless you're a disgruntled non-evolving VB6 coder), and in a world where open source gets all kinds of press, you can be damn sure that Microsoft will continue to develop products people want. What alternative do they have? If they don't, they'll eventually die.

  • Online book retailers are weird

    Someone pointed out to me that Bookpool already sold out of my book, which means either they didn't get very many copies or they sold a bunch. Meanwhile, Amazon is sitting on a mess of pre-orders (via my affiliate link) and telling people it won't ship until the first week of May! What's up with that? The book is clearly out because a few people already have their copy. I've got a bunch too!

    I'm nervous as hell about the success of the book, not because of any financial reasons, but because I really want it to help people. I'm still confident there's a strong audience for it and the marketing message I think is mostly right. I guess like anyone that produces some kind of work, I need to let it go and let the world take care of it at this point.

  • Criteria for deploying .NET v2 beta 2 apps

    Trent asked, "What is your plan for evaluating Beta 2 when it comes out? Do you have a general set of criteria before you decide on using it for production code?"

    In terms of the tools, honestly they were mostly working better than the RTM of VS 2003. I'm already sold there. As a Web jockey, having an HTML editor that won't f-up my code is a nice change after years of the super-nasty 2003 version.

    In terms of the framework itself, I don't have anything that I think I'm ready to put "out there," but when I do, I'm basically looking for the ability to perofrm under load for days, not break, and pass tests. I'm not that demanding. Or am I? :)

  • Back to NUnit I go

    I gave the unit testing facilities in VSTS the old college try, but it's not good enough (see previous post). I can't possibly work with it if I can't debug running tests.

    I realize we're still in the early stages for the product, but I just can't imagine having to go on using NUnit, NAnt, Cruise Control, etc. in the typical development process. Hopefully Microsoft can address some of my concerns, because I doubt I'm the only one.

  • Unit testing in VSTS: Good and bad

    With Scott's suggestion, I decided to install a newer build of Visual Studio 2005, namely the one with Team System in it. I had been using the older beta 1 just because I wasn't really using VS 2005 much anyway since finishing my book. I was most interested in the unit testing, and Scott's suggestion that the testing framework ran in an ASP.NET context. Here are my impressions thus far:


    • Configuration just works. I copied the would-be web.config to app.config in the test project and the tests had no problem getting data.
    • No need to leave Visual Studio.
    • Test attribute names changed from NUnit. Stupid. I can't think of a single good reason for this.
    • Looking at the stack trace from a failed test doesn't let you click a code line number the way you do on a failed build to go right there. Right-click -> Go to source code sends you to the test code from the trace, which is almost never the real source of the error.
    • The UI in the test explorer kind of blows. NUnits did this better. I tend to group my tests in a class that tests a class, and I like to be able to test just that test class. You can group the tests by class, but then there's no box to check for just that class.
    • Assert.AreEqual fails. Expected: <1>, Actual: <1>. Huh?
    • If there's a way to test in a Web context, I don't know how to do it. As per my last post, I don't know I can test to see if Server.MapPath("~/whatever") will work.
    • If there's an obvious way to attach the debugger to the testing framework, that isn't obvious either.
    Honestly if I could figure out those last two points, I'd be sold. I realize it's beta software, of course, but the documentation out in the world is kind of thin right now. A gold star to anyone that can fix those last two problems. :)

  • Wrox network programming book reincarnated

    Back in late 2003 I suggested a friend pick up Professional .NET Network Programming from Wrox Press. He never did find it, as I think that was the time when Wrox started to go down the tubes, but as it turns out, he found that Apress got their hands on it.

    Looks like it was reorganized a bit, but I'm sure it's still a good read, if for the chapters on the stream classes alone. Check it out.

  • Still annoyed with unit testing Web app components

    I'm sure I remember blogging about this a year ago, but I'm still annoyed with trying to unit test Web components. It's still hard to test something specific to such an application (like when you call HttpContext.Current.Server.MapPath("~/somefolder") for example).

    I know the ASP.NET runtime can be hosted outside of IIS, obviously, but has anyone come up with a really good base class to derive from for Nunit tests?

    Look at me, I'm worrying about this on a Saturday evening. I sure know how to party!

  • Diggin' on ASP.NET v2... today it's configuration

    With a little help from Fredrik's blog post, I finally got around to cleaning up the configuration and data provider parts of POP Forums v8. I seem to have broken a few unit tests here and there, but I can deal with that. Wow... this is stuff I've been away from since last fall, and I just haven't had time to revisit it.

    In the last six months or so I kind of got bored working with v2 because, well, I had stuff to build for real to use in production! It's fun to come back to it though, and I'm starting to get excited about it. I'm actually kind of worried that my book came out before beta 2 did, because I cover a fair amount on Membership and Profile, among other things in there.

    The next thing I'm looking most forward to at this point is the Team System stuff. It will be nice to have a lot of those tools integrated into the product instead of having to have several things running outside and via command prompts and such.

  • Apple: Brilliant minds, stupid lawyers

    In case you didn't see it, Apple won the first round in court to get the sources of leaked information to some Apple fan sites. That's not right.

    Just because it's not The New York Times doesn't make it any less journalism. If The Times posted the same information, nothing would ever come of this. You know I'm right. This nonsense about what is a "bona fide news agency" is ridiculous. If there were any real standards to hold a news outlet to, Fox News would have been sued and disgraced years ago. Indeed, this same standard must be applied to The New York Times, ABCnews and my local Medina County Gazette. The precedent has been set.

    The most disgusting thing about it is that Apple suffered no loss, and more than anything benefited from the publicity. The information wasn't leaked early enough for any competitor to act on it, and just as is the case every time there's a leak, it built hype for the company.

    This is about chest thumping at Apple, sticking it to the guy with no lawyer. That's really lame, Steve. Taking on your fan base is a really stupid idea.

  • Reverse engineering Membership: Help me out

    I've been looking at the code for the new Membership API in .NET v2, using .NET Reflector (I love that tool). It's all very fascinating, but there's one thing I still don't get. How is the Membership class' static Initialize() method ever called? That's the method that creates instances of the providers, and I can't for the life of me understand when it gets called.

  • Working for The Man isn't so bad after all

    When I quit the last day job I had last May, I was fairly bitter toward The Man. I had some odd realization then that The Man had been keeping me down and beating me into submission. Going solo was a liberating experience in that respect, because there was no one to tell me what to do.

    Two weeks ago I picked up a contract job because I need extra money if I'm to avoid getting IRS'd into oblivion. Was I reluctant to take it? You bet. The money thing didn't even concern me as much as I thought I was failing myself in some way, falling just short of generating enough income to pay taxes.

    These last two weeks have changed my perspective. For one thing, I might be working on a W-2 basis, but everything is structured in a traditional contract consultant format. I work when I want, and unlike a contract, I can walk away whenever I want. It's just like any other gig only the checks are made out to me instead of POP World Media, LLC.

    The other thing is that The Man isn't always evil. Heck, this time it's not even a man! The client of the company I'm working for is full of good people that care very much about their business and want experts to help them get where they need to be. One of the execs even ordered a copy of my book, even though he has no idea what it's about! Working for good people makes you work harder and take more pride in what you produce. That's a good feeling.

    It's exciting to work part-time too. I'm finally at that stage in my career where I can work 20 hours a week and still make a nice bit of coin, so combined with what I'm already making from my own business, it's not about the money. Getting paid feels a lot more like a bonus for doing something I like, and this from someone that doesn't do anything free unless it's for charity.

    The bottom line is that The Man, for the better part of the previous six years, was an asshole, and that's what made me hate working for other people. When The Man is good people, it changes everything.

  • Amazon bait-and-switch with shipping

    You've seen it before when you buy Amazon merchandise. "Free super saver shipping." You also see something like, "Usually ships in 24 hours." So you would think that at least snail UPS will take a week from when it ships, like the next business day. Nope.

    I asked them what the deal was on a recent order and they had this to say: "The shipping method selected for this order is our free Super Saver Shipping option.  As stated on our web site, when you choose Super Saver Shipping, you can expect your order to take a few days longer to ship out than if you select our standard shipping option."

    Well if the type of shipping dictates how long Amazon sits on the order (which makes no sense), then they need to stop posting "usually ships in 24 hours" right under the "free super saver shipping." The type of shipping should only affect how long it takes from the time it leaves the DC to the time it arrives at my door, not how long they sit on the order doing nothing. That's lame.

    That's bait-and-switch.

  • The angry VB6 folks are still around!

    Read this post about how VB6 r0x0rz and VB.NET suX0rz. I thought we were beyond this back in 2001.

    Speaking of 2001, that was the year I first got my hands on .NET, bought an MSDN subscription on employment and played with VB6 for the first time. VB6 was really neat stuff because it was comfortable, like VBscript was for ASP. Meanwhile, as I got deeper into ASP.NET and VB.NET, it became more and more clear every day that to use .NET I had to think differently. I struggled with that even after switching to C#, and probably didn't really start to "get it" until early 2003. But hey, college journalism major here. No CS background. Once you go OOP, you don't go back.

    It's true... VB.NET is not VB6. I say, who cares? VB6 had a ton of shortcomings, and its "forgivingness" was the root of exceptionally bad code everywhere. I think VB6 was a liability because people tried to do too much with it, thus its reputation.

    But anyway, the linked post is filled with fun quotes. "It's 'basically' impossible to migrate programs written in earlier versions of Visual Basic to the .NET version." OK, assuming for a moment that's true, why do you need to migrate it at all? Corporations are still maintaining COBOL programs from 20 years ago (twice the age of VB), because they still work.

    "But those product managers aren't the poor bastards faced with rewriting millions of lines of source code to reinvent crucial applications, nor do the Microsofties have to swallow hard while they lose dependable business logic refined over decades." There's a cliche about wheels in there somewhere. :) Oh, and VB1 came out in 1991. Maybe he uses a different metric for decades.

    "...with the release of .NET, I'd be farkled, fubar'd, and frazzled. Like many other developers, I don't have the time, energy, or desire to un-learn the substantial skills I've acquired in over 20 years of coding with Microsoft Basics, and re-learn some new thing that's marketed as Visual Basic, but is, in fact, radically different." Give me a break. Fire up the VB6 IDE and tell me how it's anything like QBasic. Ha! And "un-learn?" Would you forget how to speak English if you learned Spanish? I have to admit that even as an author (I try to work that in whenever I can now!), I am not that clever. Yet, despite my lack of formal training, my lack of cleverness and my general disregard for the hardcore academics of computer science in general, I managed to achieve a commanding position in terms of pay and respect in just a few short years. Not bad for a guy that used to spin top 40 CD's on a really bad Cleveland radio station. If I can do it, certainly someone with "decades" of experience can.

    As for the petition, good God, let COM go. I mean seriously, it was a nightmare. To me it was even a barrier to entry into writing really useful Windows software. Why register controls when I can, uh, just copy them?

    Good times. Bring on the flames.

  • A retrospect on writing a programming book

    It's still so weird to see this bound book here with my name on it. My wife (who kept her last name, and of course has the dedication in the book) noticed that the spine simply says "PUTZ" and that's bound to get at least a few people to look it over. ;)

    I first wrote the proposal, sample chapter and preface for the book back in November, 2003. On December 16, 2003, I sent the proposal out, unsolicited, to every publisher I could find contact information for. I felt that the idea was solid, to write a book that took beginning ASP.NET developers solidly into the realm of object-oriented application development, instead of script-based, one-off page development. I felt that forums everywhere were filled with developers struggling to make that transition, and that market was being ignored.

    I only got two responses back after sending the proposal to a dozen publishers. I won't say who it was, but the first one was absolutely brutal (in a non-helpful kind of way) and unprofessional. I was shocked to get a response with incorrect spelling and poor grammar, and frankly would expect that they wouldn't manage a first-time author very well anyway. This was a major publisher too.

    The second response I got was from Addison-Wesley Professional. This was about the time that they started publishing all of those .NET books with the spiffy checker-board style covers. I felt they were quickly becoming the new Wrox Press in terms of covering .NET subjects in a very complete way. The editor there said she was sending out the proposal to various folks for editorial review, and she'd send the responses in a couple of weeks. At that point, even if no one liked it, at least I wasn't having my dreams crushed by one grammatically challenged guy not in touch with what was going on in the world.

    In mid-January, eight reviews came back. Two of them were anonymous, and not flattering or helpful. The rest were critical, but helped enormously in getting me to think about how to revise the proposal into something more marketable and more focused. Most of the reviewers felt I was on to something, but revisions were in order before moving forward.

    Most intimidating was a review from Alex Homer. It's not that he wrote anything awful, it's just that this is the guy I credit with getting me out of the dark ages of static HTML. It was his ASP books that started me down the path. Now I wanted to write something to sit on the shelf next to his books? That was a little scary to say the least.

    Based on the feedback, I revised the proposal, it went through another round of reviews, and in March I got to read those. While some were contradictory in terms of what each reviewer thought the book should be, they were overall a lot more positive. The executive editor pitched the proposal to the sales and marketing folks, and in April I got a contract. I was going to be an author!

    In early May, I quit the contract job I was working at Progressive to focus on the book. My time there heavily influenced my decision in particular to devote some time to test-driven development. I had some basic familiarity with the subject, but once I saw it in action on the scale that it was being used there, it seemed not only like an important topic, but one that made a pretty obvious case for developing applications in an object-oriented manner. The point of the book was, after all, to get the audience thinking in those terms.

    Editorial reviews began on a rolling basis as I submitted a few chapters at a time. By September, the book was essentially "done" in the broad sense of the word. The following months would lead to more editorial review and revisions, until it was finally ready for production I think in October.

    The copy editing was surprisingly painless. I expected the editors to hack apart everything I had written, but that wasn't the case. They made a lot of things more clear (which makes me look good), and so much of it was stuff I was too close to notice. That was really cool.

    I think it was January that I got the first PDF's of the laid-out book. Tracking down errors at that stage was pretty easy, I assume because whatever automated process they use just makes really obvious mistakes.

    Then today, when I got home from a morning meeting with a client, there was the UPS package at my door. What a great feeling to finally hold the thing in my hands. I'm really pleased with the result. The entire process, however long, was really a great experience. I love that AWP helped me develop the project early on, then run with it once we had a solid outline. It really is a classy organization, and it's an honor to have my name on the same spine as the A-W logo.

    Would I do it again? Absolutely. I have no idea what I'd write about, but I'd love to do another one. I did write a proposal for another book, but it appears the timing is pretty bad as there is a predictable flood of new titles on the way and being developed.

    As of right now, if I never saw another dime for the work (outside of the advance), it would still be a success in my mind. On the other hand, if I'm ever going to write another one, this book better sell well enough that I don't get dissed. :) The way the crazy royalty payments are worked out, I won't see anything more until October for sales in the first half of this year (yep... that's 22 months after I wrote the proposal). While this project has never been about the money, it will be nice to see what at this point just feels like "extra" income in the fall. Oh, and remember, I get an extra $1.20 or so if you buy via my Amazon affiliate link!

    I can cross off one significant thing on my life-long to do list. :)

  • Do you use SharePoint for requirements management?

    The company I'm contracting for is trying to formalize its requirements process to something beyond a folder full of Word documents. They're exploring a lot of options. There are some who are already saying we must use Rational RequisitePro, but that feeling seems to come from people that have never used anything else.

    I'll be honest, I've only encountered ReqPro myself. It's not horrible, but I wouldn't consider myself a fan. I've seen articles here and there showing how to use SharePoint in this capacity, and I have to say that I like that idea because of the familiarity factor.

    Does anyone have any stories or advice to share?

  • Lame amateur site-o-the-weak: PlayersARC

    Any site that blocks you from using it based on the browser you use deserves public humiliation. Today's example: Players ARC, a college recruiting site. Go ahead, check it out in Firefox or on your Mac.

    In fact, I might as well slam them for their ridiculous business too, which preys on the hopes and dreams of kids that don't have a snowball's chance in hell of being recruited for a college sport. I coach junior Olympic 17's in volleyball, arguably the most competitive level below college, and I can tell you that all of these services are crap, setting up false expectations. If you're curious to know what your chances are to play in college, I wrote an article that pretty much sums it up here.

  • How do you make your datastore as versatile as your code?

    I'm not an expert on design patterns at all, even though I use them even when I don't realize it. It just happens in OOP. (This is a good time to mention that the Head First book is surprisingly awesome for a topic that's otherwise a snoozefest. The examples are Java, but easy enough to get if you know C#.) I certainly have no problem coding stuff that applies different business rules and logic depending on what you throw at it.

    Where I struggle a little is the persistence of data. For example, I'm on a project now where it's clear that different data will be required in certain cases for certain customers, but I can't anticipate what those new data items will be. Modifying the structure of the database constantly is not a very good option.

    How do you deal with that? If I suddenly have a new group of customers that need to track a user's hair color, what do I do in terms of my database to accommodate that?

  • R.I.P. TechTV

    Comcast obviously has given up trying to save any of the TechTV audience. They've officially switched the name to G4, "Video Game Television."


  • Dogfooding is good for the soul

    John Lawrence posted some stats about the use of Visual Studio Team System internally at Microsoft, referring to the practice of "dogfooding," or using your own products internally before you ship. I totally believe in doing that to make better software, whenever it's practical.

    For me, virtually everything I've been involved with personally was developed for something I was doing. POP Forums has been that way from the start, as is my forthcoming ad server, CliqueSite.Ads. The only real negative is that sometimes I'm not as open to the feedback of other users, because it generally works just how I want it to work. :)

    I think that building something that will be used by developers, like an IDE or an open-source Web package or whatever, opens you to more scrutiny than you might otherwise get from consumer shrink-wrapped stuff. It's a tough audience. All the more reason to spend time with the product you want others to use.

    I'm starting to get excited about VS 2005 again. It's exciting to see beta 2 just weeks away, and I have to say that Team System offers a lot to be excited about. I might have to get an MSDN subscription again (unless someone knows who to talk to get authors hooked up).

  • ComponentArt's Menu control sure is cool

    I'm not sure if you've seen it before, but ComponentArt's Menu control for ASP.NET sure is cool. I first encountered it in SmarterMail's Web interface, and I have to say I'm seriously impressed. It works in all of the normal browsers and it renders pretty fast.

    For about $700, you can get a license to redistribute all of their controls, royalty free, and I think that's a bargain. Sure, the pages in which you use these controls get a little fat, but for the beautiful, rich UI they generate, I think it's well worth it. The hassle of getting this junk to work when you try it yourself is a pain.

    Anyone else have an opinion about these controls?

  • U.S. education sucks, and other observations

    When the top folks at Intel and Microsoft think our education system is, to understate things, inadequate, I think that's a good reason to sit up and listen.

    All the bullshit accountability that the Bush administration, and to a certain degree the Clinton administration, has forced on the public school system has done is force schools to teach kids how to beat standardized tests. I know it's a common complaint for young teachers that they feel like they've become a slave to this nonsense.

    On my current contract gig, I work with an Indian guy that also spent a lot of time in Singapore. Culturally, he found it odd that I have no formal education in computer science, but accepts that I've made up for that in terms of real experience. Still, he makes a strong case for off-shoring not in terms of cost, but in terms of available brains.

    One thing he said that struck me as not-so-obvious is that India and Singapore spent so much time under British rule that one of the biggest influences that came out of that was one of European education. He feels that India's constantly expanding middle class exists because there's so much emphasis on learning technology trades, in the way that the U.S. once emphasized industrial trades. The problem is that we never switched our focus. There just aren't as many well paying blue collar jobs around anymore.

    Personally, I see the failure of our educational system every day on the message boards I run. I don't want to call the kids stupid, because I don't think that's it. They're just so incapable of forming complete, written thoughts (with actual grammar and spelling) that what they say is not readable. Heck, my wife sees this failure all of the time as a graduate assistant grading undergrad papers.

    What's the solution? I don't actually know. I'm not suggesting that we should be a nation of rocket scientists, but if we don't get our shit together, we will fall desperately behind the rest of the world. Trade issues can't be solved by legislation... we're living in a global marketplace now.

  • Jeff: The architect? Another twist in my career

    Yet another unexpected event in my ever-evolving career...

    It was an interesting day at the contract job. It became obvious to me, and anyone else that saw it, that the ASP.NET project we were given to do a face lift on is in dire need of being scrapped entirely, along with the backend system and Windows app that go with it. It's the most poorly designed application ever. I hesitate to even call it an application.

    After an "I saved your ass" security fix that unintentionally made me look like a hero, we explained the state of things to the client over lunch. While certainly not happy about it, I think they started to grasp that if they want to continue growing the way they have, they're going to have let someone rebuild their system, and do it correctly.

    So what does this have to do with me? Well, the project manager asked if I felt comfortable in facilitating the requirements gathering and design of a new system. That's somewhat tricky because this is the client's busiest time of year, and frankly they have no requirements. The possible plan he laid out was perfect, as it would likely not be a full-time thing (given the limited availability of the client's experts), it would be a chance to be the point man on the architecture of an enterprise-class system, and I would continue working on an hourly W-2 basis (something I insisted on because it's a lot harder to take advantage of you).

    While I've been exposed to plenty of giant and grand application plans (the mother of which is easily the one I was involved with at Progressive), it has always been a following role, not a leadership role. I've had leadership and management roles many times before, but generally at a lower level in the grand scheme of things. This would be the first time that I get to actually decide on how to build the beast. The scale is much bigger than what I've had to do for previous gigs (and personal projects) where I was the architect. This could be a remarkable learning experience.

    Earlier this week, I felt as if I had somehow failed as an entrepreneur because I went back to a job that required me to put pants on in the morning. Now I'm starting to realize that perhaps I've been a little too critical of myself, and when I take inventory of the last two years, I've come a long, long way.

    First off, I went from negative revenue in 2003 to a point where I made enough to at least survive (if not live the J-Pizzie lifestyle). During the last year I wrote a book and didn't do much else. Even without a bona fide business plan going forward, there's still plenty of opportunity for growth. Generating a coulpe grand in profit a month for doing a few hours of work a week is a good start.

    Second, about five years ago, I wasn't a code monkey at all. See previous points. That's a hell of a shift to make in terms of career.

    Third, going back to a day job hardly makes you a failure when you've built your qualifications to the point that recruiters are calling you or sending you e-mail every day. Boy did I feel stupid when I realized that. I have friends that wish they had that problem.

    In any case, I made a lot of realizations today about myself, my career, and most importantly, what kind of experience and work would better qualify me to do certain jobs or even allow me to be better prepared to work for myself. Recognizing your deficiencies is such a ridiculously obvious way to better yourself, even though it's not always obvious!

  • How do you persist enumerations in SQL Server?

    This is one of those developer pulse questions. How do you prefer to persist values from an enumeration in your database? I've seen people suggest using its corresponding numeric value as well as a string.

    And for those of you really looking to the future, how do you do it for SQL Server 2005? If I understand it right, since you can use your own types in the database, it sounds like a good idea to do just that. What I'm not sure of is how you deploy the enumeration from your humble dozen lines of code to something that lives in the database.

  • Yahoo says: No SOAP for you!

    Yahoo's new Web service API is pretty cool, but they say they aren't supporting SOAP.

    My first gut reaction was, "Lame!" But then I thought about it, and I guess it's not that a big deal. Let's face it, the XML exchange for something like getting search results isn't exactly complex. The only bummer is that lazy jerks like me can't pop in the WSDL and crank something out in five minutes.

    I'd really like to see what MSN Search comes up with. Their results are still hit or miss, but the frequency of getting irrelevant results is dropping like crazy for me.

  • First time in an office in ten months

    I started a one-month contract gig today, and it's the first time I've been in an actual office in about ten months. I agreed to take the gig because it's largely on my terms, and I still maintain a large degree of independence, aside from the fact that doing the work requires me to be there to interact with a very small team.

    At first glance, I'm not sure if the project has a high chance of success, but since I'm not a stakeholder and it's so short-term, that doesn't really bother me. They understand that I have strong opinions and will give them if I think they're going to tank everything. They were so adamant about it being an at-will contract that it's good for both of us. If I don't like them, or they don't like me, either party can quit at any time. It's amazing how much more honest that seems to make everyone.

    In the mean time, I need to finish up CliqueSite.Ads and get that out to the people that volunteered to test it (2 million impressions a day on crappy hardware, baby!), and some other little miscelaneous things. I also need to schedule my book launch party, although that might have to wait until April at this rate.