February 2004 - Posts
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.
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?
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 popworld.com 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.
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!
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!
Salesforce.com 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 Salesforce.com, 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.
Salesforce.com 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.
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.
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.
Almost forgot that I posted this to <uber:ASP.Net> last night...
Understanding event wire-ups in ASP.NET and Visual Studio
Summary: Every now and then I notice that there's some confusion about how events are wired up in the structure of an ASP.NET page. This confusion is in part caused by the way that Visual Studio .NET adds events and the way that most books teach wiring up events.
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.
More Posts Next page »