Archives / 2004 / February
  • Early thoughts on POP Forums for Whidbey

    I had a nice little conversation with some architect types at my current contract gig today regarding my open source project, POP Forums. I was greeted with a real surprise when talking about data: Not one thought I needed stored procedures.

    Good thing too, because I'm not using any in the current version! I've watched people debate this to death on Usenet, forums and blogs, and I think it's healthy that people have finally started to challenge the notion that using sprocs is the “right” way to do things.

    The biggest argument always seems to be that sprocs are better because they cache the query's execution plan, but it has been pointed out time and time again that a parameterized query from ad-hoc code gets cached too, thus negating any potential performance benefit.

    I'll agree with that, because I've tested simple inserts and selects with random data en masse and, sure enough, there's no difference in performance. Ditto for more complex joins, again provided that it's all parameterized. When I discovered that, I made the decision right then that my data access class would not use any sprocs in the forums. The benefit is that someone ported the class to use Access within about a week of me releasing the source. It's very easy to convert.

    This led to a discussion about ObjectSpaces, which at this gig has a lot of people talking in light of the type of project it is. Someone brought up the interesting point that, at least in theory, someone could adjust the mapping files to allow the app to use the database from another forum product, though there is an obvious danger of taking a performance hit.

    This early in the game, the performance hit of using ObjectSpaces in general is the real question mark. I don't plan to us any of the built-in caching functions in Whidbey because I already have my own written, and they work regardless of the data provider (important for those people still using Access). I was surprised to see how well the forum worked against Access, without as many of the performance issues I was used to seeing back in the old days when not everyone had access to SQL Server. Regardless, using my own caching means that even a slight performance hit caused by using OS is overcome by the fact that data is only freshly read perhaps 10% of the time at most.

    The other discussion centered around the new membership API. I don't think there's any getting around using it. As easy to use as my class library might be for user and role management, people integrating the forum into their own app will likely use the membership classes, and I need to be sensitive about that.

    Even though we're many, many moons away from a go-live license for Whidbey, I'm still excited about using this stuff. I need something new and smaller to concentrate on, all my own, because this huge enterprise stuff is not generally as interesting to me anymore.


  • Disrespecting the Bill

    I was really put off by this post by Ajay Juneja. I don't care so much about what he did or didn't do, or what he said, it was his classmates in general.

    As I mentioned in the feedback there, in my college days (if they happended a few years later than they actually did), I would've killed to see Gates, Ellison, McNealy, Fiorina, Wozniak, Jobs or any of these people even if I couldn't stand what they stand for or disagree with their opinions. Ellison comes off as the biggest jerk in technology, but that doesn't mean I couldn't learn something from him.

    When I was in school at little Ashland University in Ohio, the school's conservative political institution brought in Margaret Thatcher, Dan Quayle, Colin Powel, Dick Cheney (weird how those two came back to light), among others, and I couldn't see them because I wasn't in the right circles. That crap aside, and disregarding that I don't care much for the policy of any of those people, I would've done anything to see them speak. You don't get a lot of opportunities like that.

    I think it reflects poorly on CMU and the kids that will graduate from it. I run into similar nonsense in the real post-academic world all of the time, and it's astonishing to see how much energy people put into platform religion or Microsoft hating. Do any of these people ever write software or solve problems?


  • Getting the bling with the gig

    I've learned an important lesson the last few weeks:

    Money != Happiness

    I know everyone 40 or older is out there saying, “Yeah, duh!” But here's the thing, I came from a broadcast background before making the leap to “Internet guy” and developer. I think most would agree that it's unusual for a guy to go from television production guru (and striking on-air talent ;)) to developer writing a book in the span of five or six years. Consider then that in my former life that I might as well have been rich making $30k USD a year. That still doesn't go a long way, but here in the Cleveland area, that's not bad.

    So imagine when someone waves a contract gig in front of you that would gross six figures, more than three times what you made a few short years ago. How can you resist that?

    I should've known better. In 2000 I sold the domain to a British firm for $100,000. It paid off my car, bought my wedding, honeymooned us on Kauai and eliminated lingering credit card debt from my college days six years prior. That was a critical point in my life, and I realize now that what I should've done is invest in making an attempt at floating my own business. I at least had the common sense not to blow it all on stupid stuff.

    So what's wrong with the gig I'm on now? Well, for starters I have nothing to do. There also isn't a lot of potential to be challenged, the work isn't interesting and in the long-term there's little chance of any real professional growth. At this point I could just walk away, but that might not be entirely responsible without lining up something else first.

    If my own projects generated a nice $40k a year, I wouldn't need to work for the man. I'm only half way there.


  • For the people, by the people

    I hate when people post in forums and refer to everyone as “people.”

    hay people!!!!11111 i'm l33t!!!!!1111 u people shood use linux cuz it roXorz1!!!1111

    I swear these kids have made it into every online community.

    Sorry for the off-topic post, people!


  • A Mac lover in a Windows developer

    My wife Stephanie got her little 12” iBook this week. It's killing me because I like it so much better than my big clunky HP laptop.

    That's pretty crazy when you consider that my HP has a 15” 1400x1050 screen, and even with a 2 GHz Celeron it still has a lot of horsepower to do many great things. The only thing it really lacks is good video hardware, as evidenced by trying to play Rollercoaster Tycoon 2 on it (many, many animated sprites all over the place).

    Steph bought the iBook because she needed something small and functional to take with her to both the classes she teaches and to the classes she takes. She needs to use Word, Excel and PowerPoint, access the Internet (campus is covered in Wi-Fi) and for fun watch DVD's. Through the academic Apple store, she scored it for about $1,200 with upgrades in memory and the built-in AirPort card.

    The more I touch and play with Apple stuff, the more I feel conflicted as a Windows developer. I mean, at the end of the day, I love .NET and all, but OS X is just so... pretty. It's hard to qualify what makes the UI so much better, but it simply is better. From what I've seen so far of Longhorn, we'll get our pretty UI, but it's still a year or two off.

    Of course, if I ever quit being a programmer to instead be an independent starving film maker, I'll have to switch. It's the right thing to do!


  • I missed an opportunity is heading toward an IPO. You have no idea how much I kick myself in the ass everytime I hear about their success.

    When the company was founded in 1999, we were considering the implementation of a similar system at Penton Media. By “we” I mean the corporate Internet development group, of which I was not a part of but worked closely with from my business unit. I think the idea was at one time pitched to the execs, but they didn't get it. To us it was obvious... the ability to consolidate CRM across the entire company and identify overlap between customers and the markets we covered via magazines and trade shows. It was an even harder sell I suppose because of all the little “kingdoms” in the company.

    Outside of work, I was looking at the crappy contact managers and some of the other software being used at the time to manage customer contact, and it all sucked. A Web-based app seemed like a really good idea at the time, even though Web-based apps were not thought to be a very good idea by the general population.

    I didn't have the programming skills at the time, and probably still didn't for another two years or so, but what I would have given to thought of the idea and got something to market first. I signed up for a demo account at, and I was only partially impressed. Overall, yes, it's a good system with a ton of features. However, I think the UI absolutely sucks. pretty much owns that Web-based CRM market, but it can't last. At $65 per user, it's kind of steep. Someone can do better. I certainly have the resources and partners to develop such a system in a relatively short amount of time (.NET, of course!), but I certainly don't have the sales and marketing to sell it.


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

    Anyway, I wrote a little Windows app that takes a table name, prefix name and some database column names and their types. Push the generate button and it generates a little class for you to cut-and-paste into Visual Studio, similar to the format for the class design tutorial I wrote. It's not meant to be pretty, just something to play with. I think if I was more serious I'd have it generate based on an actual database table instead of my own input, and maybe even compile it for me.

    The project I'm on now has an internally-developed app that creates business rules then serializes them to XML and generates code and compiles it. The UI isn't great, but it lets non-programmers create rules to process data, so I can't complain about that.

    Of course, this all got me to thinking about ObjectSpaces, which would allow me to be a lot more free and loose with application design (especially in all these trendy "agile" projects I keep landing). If the performance hit isn't something that will cause great amounts of pain, OS will save me a ton of work. I'll still have to write a lot of app-specific caching code for the performance I'd like on single-server sites, but that's not horribly time consuming.


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

    This gig I'm on now, which I can't wait to be done with, is the typical huge open space with offices around the perimeter. It's the worst I've been in too, because it has low walls. These two guys are standing next to me as I type this discussing their Palm devices with total disregard to what I'm doing.

    Some days, when you're really coding hard-core, you need a door, a lava lamp, a zen fountain and a little inspiration to make things happen.

    Back in the day when I worked for Penton Media, we moved when our trade shows were pulling in the bling and ad dollars were plentiful (circa 2000). We went from 80% offices to 80% cube space. The CEO, which to this day has no business in his position, told us at a company meeting about how cool and “new economy” the new environment was. It was so cool that us Internet people got blown out and the stock was de-listed from the NYSE.


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

    I really dig Apple's stuff, and I always have. That's a funny thing when you're a .NET developer, but it's hard not fall in love with the hardware and OS X. Even free stuff on OS X has better UI than Windows stuff.

    My latest fascination is with Final Cut Pro. My background prior to writing code was in radio and TV. At my last TV job, for a city and school district, I convinced the powers that be to let me buy a $20,000 Mac-based Media 100 system, one of the early pioneers in non-linear editing, second only to Avid at the time. It changed everything for me because I had been cutting tape for years prior to that. It was this amazing creative freedom.

    I still miss the toys, and my desire to write a screenplay and make a film has me interested again. I currently have the Windows version of Avid Xpress Pro and it's not bad. It's more or less the same UI that you'll find in the more expensive Avid systems that most feature films are cut with. But Final cut looks so much more clean and damn impressive on one of those giant cinema screens that Apple makes.

    So today at the Apple store I got to play with Final Cut a little. Clearly they learned some things from Avid and Media 100, and there were a lot of striking similarities. For example, it was obvious to me how to “patch” audio tracks from the source clip to other tracks on the timeline.

    The store itself was bright, clean, and slightly creepy in that respect. The people working there were the “alt” types of course, including this cute girl who knew her stuff better than any socially-challenged nerd at CompUSA.

    My wife, Stephanie, ordered an iBook last week and it should arrive later this week. I'm kind of excited to play with it. It's perfect for her because it's small and portable, yet functional (in the Windows world, Sony gets small but not functional).

    Even if Steve Jobs doesn't always make the best business decisions, you can't help but admire the culture the product creates. It's good stuff, and even as a .NET developer I'm not too proud to admit that.


  • Help a code monkey out...

    Fellow developers, I need a little help. I was reading this post about the rough release schedule for the Whidbey beta, and it's troubling.

    Here's the thing... I'm writing an ASP.NET book targeting mid-level developers, the people who have transitioned away from script development but haven't yet made the leap to grand, object-oriented, tiered development. The problem is that there are a few areas I need to cover if anyone will pick this book up to publish, and naturally these areas are all in Whidbey. I can't easily talk about that which I haven't spent some time with. :)

    Can someone get me on the “A” list so I can get the bits? I tried Redmond but keep getting bounced around to different people, none of which are the “right” people.


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

    Turns out I got here an hour early. I've got the laptop with me because I'm planning to show some video I shot to my girls to help them correct some things. Figuring that it is a school, why not fire up the laptop from my car and pop in the Wi-Fi card? Someone around here has to have a connection hanging open.

    What do you know... there's one in the school and one called “NETGEAR,” persumably a neighbor. Thus, I'm posting here from my car.

    God bless the Internet.


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

    I brought up an example relevant to my current project where we're migrating to .NET from an old COBOL system. The datastore will be last to change from the mainframe to SQL Server. If we applied our rules on the mainframe we'd have to rewrite that code when we went to SQL Server, and that's not something we want to do. This didn't click with him.

    I'll be the first to admit that the academic teaching of n-tier architecture is somewhat out of control and frequently ignores the practical aspect of a project or application. However, with service oriented architectures being all the rage in gigantic systems that combine all kinds of different technologies, I generally feel that the less you tie together the better. That's why I get all excited about ObjectSpaces. At the end of the day, I still don't want my datastore applying business rules.

    The guy I was arguing with has only college experience, and is no pursuing a PhD. That's a fine and noble thing to do (my wife has two masters degrees). When he started pulling out stuff from certification texts, that's when I thought back to a recent post from someone about the relative quality and use of a certification.

    In the OS/networking space, certifications are a dime a dozen, and as many hiring managers will tell you, they mean a lot less than being able to demonstrate the ability to solve problems. I don't know if this is true for programming folks, but would you hire someone with an MSCD issued last month or someone who has been using .NET since it was beta? I think the choice is obvious.


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

    The first is that they want to make so sure that they don't get locked into anything long term (the new system is all .NET-based) that they've created custom tools in-house to create rules and work flows and store them as XML. These tools also in many cases generate code to do some of the grunt work.

    It's a good idea in a lot of ways because these simple GUI tools let non-coders develop the rules and work flows The problem is that these tools don't have the same requirements process as the bigger project. The tools are written by two or three people as a continuous work-in-progress. Just starting the tools cause five or six exceptions, and a lot of actions do the same thing. It's really annoying.

    The second problem is that I question how necessary a lot of this is. Having the rules in some kind of XML format makes sense, but doing so for the work flows is overkill. There are only a couple dozen processes in the big picture, and each one has a handful of work flows.

    Not that I can change anything, but what do you think?


  • First Post!!!111111

    I own the T-shirt, but I always wanted an excuse to be lame and post it online somewhere.

    I'm in a weird place right now. I'm working as a contractor, getting the bling and soul searching my way to a happy place in terms of career. Aside from my aspirations of writing a screenplay, I've got my hand in a lot of “stuff” right now.

    First off, I launched <uber:ASP.NET> about a month ago. So far it has been fairly well received. My goal with the site is to have a mid-level resource for developers. As Joel Semeniuk mentions in his blog, there isn't enough out there for that sector. I mean, people don't just jump from learning the basics to being a .NET ninja. A lot of the people I consult for are stuck at that lower level because they don't have the object-oriented training and experience to build more complex apps. It leads unnecessary growing pains for them.

    I'm trying to sell a book proposal along those lines, and I've been through one editorial review from a hot publisher, but nothing concrete. Everyone has been enthusiastic about it, but I'm not exactly getting contracts in the mail. No worries I suppose. I started my career in radio so I'm familiar with rejection!

    I also maintain POP Forums, an open-source forum app for ASP.NET. Back in the ASP.OLD days I was able to sell the product and make a nice buck (and in retrospect it really wasn't very good), but since MS released their forum for free and there are a number of free PHP boards out there, I decided it was just time to get give it away. The fact that some folks helped squash some bugs and another guy wrote an Access provider for it is more gratifying than getting paid for it.

    The other thing is that, in my frequently less than humble or popular opinion, the official MS forums are needlessly complex. There's a lot to pick out of them that's useful, but in terms of doing your own UI, I thought it was too much. I wanted a nice simple class library that I could do a minimal or massive amount of UI against, and that's how my forum was born.

    I plan to use this blog to talk a lot about the development of the next version, which naturally will be Whidbey-based (and I would have already started if I could get my hands on the bits).

    So my current day job doesn't feed the soul, but all of this other stuff does, and that's the stuff of narcissistic rambling you'll find here!