Archives / 2004 / March
  • Going solo or taking a year off

    There was an interesting little piece on MSN today about taking time off to do, well, whatever. I can't tell you how long I've wanted to do that, on my own terms. Now that I've been laid-off a number of times, not working isn't nearly as scary as it used to be.

    That article was a little more geared toward people who have no alternate income to sustain themselves. That's not really me. I've got a little money coming in from my freelance consulting and my sites, so I won't starve. It's looking positive that I'll have a book contract soon, and the publisher's marketing people think it could be huge. I'm looking into coaching high school volleyball again as well (I coach the more interesting, more competitive junior Olympic ball now, as organized under USA Volleyball). Bottom line is that I'll have lots to do, and it will mostly be things I like to do.

    There is of course the risk that I'll have negative cash flow, for who knows how long. The upside of this though is that .NET jobs are plentiful in my area, and at some point later in the year, having a book to your credit might not make you rich, but it's a nice touch that few developers have on their resume.

    All told, I think there are a lot of opportunities, I just have to accept that living the J-Pizzie lifestyle will be a bit less extravagant than perhaps I'm used to, for the time being.

    Anyone else go through this process of self-discovery and self-employment?


  • 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.

    Yes, Microsoft is a convicted monopolist. They used their position to shut out or (allegedly) reduce the effectiveness of their competitors. I don't entirely get how the US arrived at that conclusion with Web browsers, seeing as how no one has ever paid for a browser (or at least they shouldn't have). Over the years I bounced between IE and Netscape, and never paid for either one, and my use of these browsers did not benefit either company.

    The EU case is weird because it wants to decouple the Windows Media Player. I admit, I don't have any research, but has this tactic affected the success of QuickTime or Real? I can't speak for the masses, but I don't use Real because the player sucks and is bloated with ad nonsense. I do use QuickTime exclusively for my video needs, in part because it's the basis for pro video tools like Avid (which I use), and I can make the cleanest and most pretty video files encoding with Sorenson. The point is, startling as it might be, that if these other formats aren't as successful, it might be the quality of the product, not Bill Gates.

    Flip that case even to the server side. Yes, my Win2k3 server has Windows Media Server. I use it for some purposes, but the preferred format for me is still QuickTime via simple HTTP streaming. Works like a champ.

    What's troubling about this EU decision is that it dictates business decisions. I like that MS bundles a browser and a media player. Has anyone bothered to ask consumers if they like this arrangement? Does anyone care that the biggest complaintants in these cases are competitors that want to litigate their success (or compensate for failures)? Has anyone considered that the Windows Media formats have been submitted to standards bodies? What actual affect does bundling have on consumers that causes the big evil empire to thrive? I'm still looking for those answers.

    And look at what Apple bundles with OS X now. I would argue that there's more there than in Windows (and much of it is better quality). Why not bust Apple? Because they don't have a majority market share? If that's the case, then the EU (and our own DOJ) are beating up on Microsoft because they're number one, and that's wrong.

    I say let market forces determine the outcome, not government. If it weren't for the many shortcomings of Windows, Linux wouldn't be gaining in popularity, and Apple wouldn't see people buying into the switch campaign.


  • The shortcomings of GotDotNet

    Craig Andera blogged about leaving GotDotNet, presumably its workspace feature, for SourceForge. The ASP.NET forum team also moved out of there recently. I'm surprised it took that long.

    The shortcomings of the workspace feature didn't come even remotely as a surprise to me. GDN reeks of neglect, and it was in pretty poor shape in its first iteration, not to mention appears relatively unchanged since it debuted in 2001, or earlier. That's a real shame, because it was the first .NET community I really got active in. Even to this day, I know I've made more posts there than on It had a great community in the early days.

    I know I'm going to be called a hypocrite (considering how frequently I complain about feature-bloated forum software not making up for a lame community), but the site has always been in a pretty sad state of affairs. If you weren't frequently getting errors, the site was slower than Dubya trying to spell “nukeular.” It was pretty much not usable much of the time, and it doesn't matter how good your community is when the site is that technically poor.

    The PM's and such started to get active on there and listen to feedback, only to disappear or change. One question that no one could answer was, why is GDN its own little kingdom, separate from the teams running and That never made sense to me.

    Then there was the whole technical side of the site. For something run by Microsoft, it was about as far from a good example of how to build stuff that you can find. Pick any page, especially the forum pages, and have a look at that viewstate in the source. Yikes!

    What a bummer. It was a good idea executed very, very badly.


  • Quality time with partial classes and ASP.NET

    A couple of weeks ago I was rambling about code-behind and Whidbey. The reason for the rambling was that I was starting to think about how I'd build the next version of POP Forums.

    Honestly, my goal in the last version was to build a class library that did the heavy lifting, and if you didn't like the UI, you were free to do whatever you wanted with it. I think that attitude came from the fact that users of my sites like a nice clean, light-weight, easy to use forum, even though the various PHP heavyweights are feature heavy. As is the case with many apps, sometimes there are more features than you really need, but that's a topic for another day. The last UI that I did is reasonably featured, but in my own projects I rarely use half of it.

    That discussion had a lot of interesting comments, and it led to other discussions in other blogs and forums. Jerry Pisk made the interesting comment that all of this dreaming and evangelism about separate code and UI in the current version of ASP.NET is puppy cock (OK, that's not what he called it, but that was the tone). I tend to agree with him. I mean, you've got all those references in your old school code-behind to the controls on the page. Like any other page is every going to inherit that class!

    The thing I really overlooked at the time was partial classes. After playing for a bit, it's pretty clear to me that with the UI I will provide (keeping in mind that I'm more worried about the core class library), that using partial classes is a pretty good idea as the new “code-behind” (or “code-beside” or whatever the hell it's called in the end). I know that a lot of die hard application developers aren't fond of this model, but just as it's hard for a script monkey to go OOP, it's hard for those of us in the “enterprise” (please show your membership card ;)) to look at what's most practical.

    My audience is still going to be the casual coder that runs a site on underwater basket weaving. If they want to tweak the forum and mess with it, then this partial class model is perfect for that. For the really hard-core, you can always dig into the core classes to alter the way they operate.

    That leads me to my next decisions regarding the use of data. Do I use ObjectSpaces? Do I create data objects that can be used declaratively? Lots of choices.

    You know you're losing your hacker mentality from long-term exposure to the “enterprise” when you start thinking about doing design documents for your little hobby projects like this. That's yet another topic for another day!


  • 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.

    So before I spoil your thoughts with the direction I think I want to go, you tell me what you'd say. My audience is ASP.NET developers making the leap to OOP, probably from more of a script-heavy background.

    What do you think?

    By the way, what's the syntax for generics (Whidbey) in VB.NET?


  • 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.

    I think that yes, it's safe to say that there are various levels of developer skill. In online communities, these different classes interact in different ways. More advanced developers tend to blog more. Hobbyists and mid-level developers tend to hang out in various forums. The two groups seem to rarely intersect.

    I'm just as much to blame for that. I've had little spurts where I've tried to stay active in the forums, but some days it can suck the life out of you when you answer the same questions over and over again. When you see people taking the “wrong” approach for something, you get even less interested.

    So what do we do about this? Really, none of us have any obligation to help people out (although that's crap, because we all started somewhere way down the hierarchy ourselves). I would challenge you, the .NET guru, to help out anyway. If every guru spent even ten to 15 minutes a day answering some questions, imagine the quality of people in our community overall.

    What not to do is propagate some kind of elitist snobbery. That's lame. I'm not suggesting that everyone should like you, or that would even be important to you, but flaunting your worthless-where-I-live certification around and belittling the hobbyist code monkey because you demand six figures a year doesn't really make you very cool, and you certainly won't win my respect.


  • No progress is made without being unrealistic

    If you've ever read Fast Company, you know that they have very brief pieces on "influential" people, basically including something important they have to say. Well, this one really stuck with me:

    "No progress is made without being unrealistic."
    -Eric Lander, Professor of Biology, MIT

    That's enormously profound to me, because being realistic is what's currently holding me back in life.

    See, I'm a creative person that needs to participate in the act of creation to feel like I'm making the most of my time. When I don't have that, the "work" that I do is substandard or causes me to appear lazy and unmotivated. I have all these things swirling in my head that I want to do, and in the long-term, some of them might even allow me to make a little money.

    But up and quitting my boring contract gig seems unrealistic because, well, my other endeavors don't exactly pull in a ton of cash. Since I can't be unrealistic, no progress is made, and I'm stuck.

    Indeed, I suppose I don't take a lot of risks, which is ironic because it was risk that got me to this level of income in my field in the first place. I'm a freakin' broadcaster in the world of code monkeys. I was never realistic about "making it" in this field, but yet, here I am.

    Progress really needs a kick in the ass right now.


  • Not the end of the world... not moving it forward either

    Scott Hanselman makes the point that the slipped ship date of Yukon and Whidbey is not the end of the world. He's right that, indeed, this is not the end of the world. It's not particularly good for it either.

    First of all, Scott, implies that what's good for him is good for everyone because he's shipping product right now. Good for him! He also suggests that “many” of us have a platform that we haven't fully exploited. Tell that to Paul Wilson, who has implemented Whidbey-esque stuff like master pages and ObjectSpaces himself (and is hopefully making a buck or two in the mean time). Heck, I've found an actual verified bug in the framework (which oddly enough still hasn't been documented with a KB article, nearly a year later), so I'm thinking I've gone deep enough with what I have.

    If the reason behind the delay was one of development, I might be able to live with that. The now infamous eWeek article, however, seems to indicate that it's not a development issue, but rather one that is purely marketing, pairing the release of Whidbey with Yukon. How annoying is that, when those of us who have acquired Whidbey are impressed with its stability, and pre-beta at that. Members of the .NET team (which have been rather quiet in their blogs lately) have said that they're excited about how clean the first beta will be. That's encouraging.

    I guess Scott and those that agree with him either don't use the ASP.NET designer or don't care that it mangles everything you put into it. It's a nightmare for me, because I sell (and giveaway) stuff that people will tweak, hack and change. It gets really hard to support that stuff when VS has messed with what you think they should have.

    Make no mistake, I'm not “angry” or anything. My fingers and toes all seem to be intact and the sun did rise this morning, but I still want the product that will make my life easier.


  • The issue of Whidbey delay is not an emotional one

    Reading this blog entry from Jason Mauss, I think he misses the point of all the complaining surrounding the Whidbey delay. OK, maybe not all of the complaining, but certainly my complaining.

    The information behind the delay, coming from Tom Rizzo anyway in the eWeek article, is that they want a simultaneous release because that'd be really cool. If that's not true, then someone needs to do some damage control for Rizzo.

    That's the core of the soreness I'm sure for most people. Whidbey isn't perfect now, but it's sure in remarkable shape for something that isn't even beta yet. Us ASP.NET developers in particular have had to “fight” with Visual Studio and work the way it says we should, not the way that makes sense for us. Whidbey fixes that.

    The related issue is that the new features can solve real problems today, in far less time than if we had to deal with them ourselves. Master pages, membership, personalization... these are all things that make our lives easier when responding to our customers. Sure, Microsoft can't be blamed for not delivering these things, but it's too late, they put them out there for us to see, and now we want it. This isn't an emotional issue, it's an issue of us being able to work better, work faster and make more money.

    It's all about the bling for me. I could care less about using exciting new stuff for the sake of being exciting.


  • Working too much isn't a way to live

    I read this post from Gus Perez, and to be honest I'm still shocked every time I read something like this.

    Maybe Gus sees work differently than I do (and no offense to Gus, as he's obviously a cut above most employees), but I can't understand people who are OK with the dusk-till-dawn work lifestyle. No job I've ever had was that important to me. I generally hope to derive some pleasure from working, sure, but the center of my life at least is family (well, my wife anyway), hobbies and such.

    That's probably the thing that has kept me from really going all out to be 100% independent. At the end of the day, the job doesn't matter the most. It seems that only Americans miss this point. That's a weird cultural phenomenon too, because although we allegedly work harder and work more than our European and Japanese counterparts, we still trail behind in certain markets.

    What's important to you?


  • Time keeps on slippin', slippin', slippin'...

    Siderant: Why the hell is it that my hard drive is still churning an hour and a half after I turned it on? I hate corporate environments.

    So the big news is that Whidbey and Yukon ship dates slip. Yukon, really, who cares, because I didn't really expect it this year anyway. While revolutionary in terms of object persistence, the truth is that we can all live without Yukon for awhile. No worries.

    Whidbey is something entirely different. Come on, Microsoft... you let us know what was in there and ASP.NET developers in particular want it yesterday. Having played with it extensively, I'd be happy at the very least to have the "go live" license with the first beta, because in recreational testing, it's almost ready for production as-is. Master pages, membership and personalization make our Web apps so much easier to build with less plumbing. We can't wait for that. Besides, we all know that the HTML-mangling that the VS designer does is worse than early versions of FrontPage.

    Throw us a freakin' bone here... listen to your customers.


  • DevDays, Cedar Fair and Six Flags

    Went to DevDays in Cleveland today. It was good to meet Alex Lowe in person, as well as local Steve Smith from

    Wouldn't you know it though, I had to leave at lunch because of a huge breaking news story for CoasterBuzz. Cedar Fair, the parent company of my beloved Cedar Point, purchased Six Flags Worlds of Adventure, the park formerly known as the combination of Geauga Lake and SeaWorld of Ohio.

    This is a big deal for a lot of reasons, not the least of which is that Six Flags ran the parks into the ground after acquiring the wild life side of the park from Anheuser-Busch in 2001. It's also a big deal because Cedar Point is the king of amusement parks, and now they own the competition. For locals, it's a big deal because both parks create strong emotional responses in those of us who have lived here for a great many years.

    I'll have to write more about DevDays later, but if you want to see what my distractions are about, check out the news and views...


  • 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.

    In the current version of the forums, there are base classes that do most of the heavy lifting and logic in the app, including all of the data caching. Upstream there is a data provider, and downstream is the UI, which I even distribute in a separate download. The UI package consists of lots of user controls, their code-behinds, a global class, web.config and a style sheet.

    The UI is the sticking point right now. It has been generally accepted to this point that putting all of your code in the code-behind is The Right Thing To Do® because it clearly separates presentation from logic. I agree with this for the most part. However, I start to challenge this to a certain degree, because quite honestly, every code-behind class I've ever used was written specifically for that page/user control. I've used special base classes derived from Page or UserControl, sure, and those get their own file. The question is, in the world of Whidbey, does it matter anymore? You can do a code block right on the page/UC with Intellisense and all, and it's going to be written just for that page.

    I don't advocate ASP.old spaghetti-style code... let me be clear about that. But the point here is that the code that has traditionally been in code-behind does things like turning the visibility off of a panel or binding some object's junk to a grid or whatever. It'll never be reused, and the heavy lifting is still in the app's base classes.


    • Code is compiled to assembly
    • .cs/.vb files need not be deployed
    • Clear separation of UI elements and logic
    • Intellisense (in current versions of VS)

    On-page code block:

    • Fewer files to maintain
    • Easier to debug if you don't have VS
    • Easier to support because errors on live sites will show line numbers (if configured)
    • Easier for the novice to modify
    • No need to rebuild when changed

    What do you think?


  • Self discovery of your developer personality

    I've seen various posts 'round here about the kind of developer personality you have. I've done some thinking, and I think by some people's standards, mine is not great.

    In the current job that I'm on, there is more organization than any other project I've ever been on. In fact, there are more meetings about how to organize the organization than I've ever seen. (This is night and day from my last gig, where there wasn't even any real documentation.)

    It drives me kind of crazy. One component, the first in this huge project, does some simple data calculations. It was budgeted to have 60 hours for design. I prototyped it in a couple dozen lines of code in about two hours. The reaction to me doing this ranges from, “Good thinking,” to, “What the hell are you doing? Where are your design documents?”

    Just as I believe that clear separation of various application layers is not a clear, concrete concept for all scenarios, I don't think that planning to death is the only way to do things either. You get to a point where the design and break down of various tasks is so focused and specific, per the requirements, that you don't need to document design at that point. Instead, and especially in our case using C#, you can derive design documentation from your little prototyped classes.

    The result is that I come off as the demon in both extremes. In my last one, people hated my need for documentation, and in this one, people hate me for saying their extreme organizational process is overkill.

    I need to find my place in the world with the 75% of people who aren't guerrilla coders or mega-enterprise architects so I can keep my sanity.


  • 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.)

    A “hobbyist“ might very well make writing code their day job. It happened for me. A lot of folks code Web sites as a hobby and one day find themselves with a business. It happened for me.

    Ironically enough, Rory makes the point that, “When I was over the hump of getting accustomed to .NET, I found my job much easier. Gone was the horrible combination of procedural and OO programming styles.” That's ironic to me because that alone is the single greatest reason to get the hobbyist/low-end guy learning about the platform.

    This is a subject near and dear to me, because the book I'm working on is really targeted to “those people” and getting them up to speed. Many are brilliant people who need a push into the OO world from their script background in ASP, PHP or whatever.

    Rory says, “Microsoft tools are not for hobbyists. If you're a hobbyist and curious about coding, then there are many other ways for you to go about learning. Microsoft tools are priced for professionals. The training is priced for professionals. What does a hobbyist need with something as expensive as VS.NET?”

    For one thing, VS itself teaches OO design in certain respects that are not obvious to someone using Web Matrix or NotePad. For example, if you want to consume a Web service from Amazon or Google in your app, reading docs on either one would never lead you to believe that you could treat these as object-oriented services. In VS, you add a reference, it creates proxy classes, and all of a sudden it's obvious that you're creating an object, passing a type into it, and getting back objects that represent your favorite books on underwater basket weaving. Without VS, the novice thinks, “What the hell do I do with all of this XML?”

    That's one example, but I can think of dozens of others, many a lot more fundamental than consuming a Web service. I encounter them when I train people on a consulting basis all of the time.

    It's a crime that VS will set you back nearly a grand, but even worse is that no one seems to see that the language-specific IDE's can be had for under a hundred bucks, and they do most of the same work.

    Getting back to whether or not MS should cater to these people, as I said, absolutely. If it's easier for the “n00bz,” chances are it'll be easier for me. The easier development is, the faster I develop, the faster I get something to market, the faster I get paid. It's not about measuring my testicular fortitude versus other developers, as there's always someone who knows a lot more than I do.


  • RollerCoaster Tycoon 3 and the art of the single developer

    I'm sure there are other roller coaster geeks out there besides me, but not one game has ever consumed as much of my time as RollerCoaster Tycoon. Now we'll get it in 3D with on-ride POV, as Atari just announced the development of RCT3.

    If you aren't familiar with the first two games, they were, and continue, to be among the best selling titles of all time. Their appeal was so insanely broad. Way back in '98 or '99, Chris Sawyer developed this game, in machine language no less, all by himself. That never happens in light of multi-million dollar budgets, celebrity voice talent and armies of code monkeys. He only got help with the graphics and sound. I remember when the demo went out, every coaster dork on the planet played it over and over and over, despite not being able to save and losing your work to the timeout. It didn't matter... it was cool.

    As a recreational gamer (and coaster enthusiast), the game was great because you got to nurture something and watch it develop. No one would “die“ and you didn't shoot anything. It was hours and hours of fun. The scenarios that Sawyer developed were well thought out and tons of fun. RCT2 added a lot of scenery, a scenario editor and some other stuff, but most of the scenarios were terrible and not Sawyer-designed. The expansion packs for RCT2 were all terrible. It was clear that Hasbro/Infogrames/Atari was milking the franchise.

    As a developer, you have to cheer for a lone guy that can create something that amazing (and did I mention in machine language?) and execute everything so well, from coding, to design, to gameplay. It's inspiring in a world where we frequently have some little task to turn into code as part of a bigger picture. If anyone has been able to “feed the soul“ writing code, it's Sawyer.

    RCT3 is being developed by a software house under Sawyer's watchful eye. While it cuts down on the charm level of one guy writing the insanely popular app, there's no doubt in my mind that his oversight will keep it inline with his vision of what makes the gameplay so special.

    I'm really looking forward to this game!



  • SCO nonsense is out of control

    I don't care that much about Linux, quite honestly, but this SCO nonsense is getting out of control.

    As best I can tell, SCO hasn't even been able to prove that Linux has code that came from Unix, so how can any of these suits move forward? I seem to recall a story awhile back where some portion of code in question was shown to Linus himself, and he said he wrote it (and as an aside was embarassed by what he wrote).

    I want to see SCO go down hard. I really do. Linux is a good thing, even for Microsoft users. Linux is going a long way to keeping MS honest, and that's good or all of us.


  • 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.

    This is weird stuff, because I never thought I'd be writing an ASP.NET book. Late last year I was helping out my friend Walt on some coding issues he was having, and I was making the case for code reuse and a certain kind of class design for what he was doing. At about the same time, I was doing a little .NET training for a small dev shop that is transitioning out of Cold Fusion to .NET. I jokingly said to Walt, “I should write a book on this.” He said I was right.

    I won't get into the focus of the book, because it seems that competition between publishers, and to a lesser degree authors, is pretty fierce. Suffice it to say that I identified a market that I don't think current books serve, so I wrote a proposal and started sending it out to publishers.

    The one that wrote back is the one that, quite frankly, is doing the most exciting stuff around our platform these days, so I'll feel pretty good about landing a deal with them if it all works out. The only other response I got was from a publisher that everyone knows, and it was outright negative and not constructive. The irony there is he was ragging on my style when he couldn't spell or use correct grammar himself.

    People ask me why the hell I would ever want to write a book. It's certainly not for the money. It might be for the ego, but that's only a small part of it. I think more than anything I want to give back to the community, because the community got me to where I am in only a few short years. I'm not a Jedi master, but I stand out, in no small part because of the help and direction I've had.

    Another consideration is that I did actually go to school to write in the first place. I double majored in radio/TV and journalism. Aside from a couple of letters to the local paper and a few trade rag articles, I've written very little since graduating from college.

    As an aside, I finished a screenplay last weekend. It's not great, but I wanted to get something done for Project Greenlight just to see what the feedback would be like. It sucks as it stands now, but I figure it'd be fun to see what all the film school types think of it. Like my ASP.NET book proposal, I think it has a good premise, it's just the execution that would make or break it.