Jeff and .NET

The .NET musings of Jeff Putz



My Sites


May 2008 - Posts

Twitter is all about Scoble? Twitter is about something else

It seems like a good post from the folks at Twitter has been interpreted by Scoble as being all about him. I gotta say, I'm just not seeing it. I'm also not sure why Scoble is throwing such a public tantrum about Twitter's down time.

Regardless of what you think about it all, there's a strangely familiar pattern I've seen when it comes to the tech-centric "2.0" apps and what typical software development has experienced for longer than I've been doing it. Scoble is the big power customer, much like an executive for an internal line-of-business product at any corporation. Alex the Twitter guy is like the product manager trying to explain technological problems to the executive who can't be bothered with the details (ironic given that Scoble's rise to fame came out of Microsoft). Ultimately this results in a big conflict where neither party gets what they want. If you've worked in a big company and developed software, you've been there.

If you've been there, you know that these kinds of projects end up being epic failures. The problems arise from a mismatch in expectations. Frankly Twitter has grown so quickly (well, among the goofy tech niche anyway) that they never even had a chance to set expectations. Twitter's champions have set them instead, and now the champions are turning on them.

So how do you define Twitter's success? It's a product that has no business model, so how can it really be accountable to anyone? There's something to think about. It reminds me a little bit of certain Microsoft products, like Live Writer. I mean, it's free, and it has no business model, right?

Ah, finally, I see a parallel. Live Writer does have a business plan, because it's a feature for Microsoft's bigger platform. When you suddenly put it in that context, it makes perfect sense that Microsoft would develop this product and ship it. Suddenly, it's obvious to me what Twitter is... a feature. The problem is, I don't know what it's a feature for. What platform or bigger picture does it support, other than for conversational fodder among the tech celebrities? If Twitter's point is to tell other people what you're doing, then clearly something that unimportant in your daily life is part of something bigger, right?

I still don't care about Twitter as a service that I need or want, but I do find it fascinating that some segment of the tech crowd needs it so badly that they throw a fit every time it has a problem. Clearly it does add some value to their lives, and that's fine. It's just strange that in the realm of technology and software development there is a soap opera going on.

Why Ariel is right about communities and doing what is right

There was some controversy surrounding Twitter's non-reaction to dealing with some allegedly harassing posts recently, with the noise being made by a user who is reasonably well known in certain tech circles. (The fact that she works for competitor Pownce I think is irrelevant, but some are making noise about it.)

Basically, Twitter is making a lot of stupid statements in public and not owning up to, well, what they own. They can do whatever the hell they want, but for some reason doing what's right is not high on their priority list.

I've been running community sites now for ten years. Our terms of service have been pretty straight forward, and we only boot people for various -ism's and hate, harassment and spamming. Contrary to a few noisy morons, we've never bounced anyone for having a dissenting opinion. We have bounced people for being illiterate morons or just being generally stupid in a way that doesn't contribute anything, and we do so because we can. It's not an issue of our TOS, it's an issue of doing what we think is best for our community.

So why is Twitter so reluctant to do anything? It's not because they don't want to get sued (because you're actually quite covered under various federal laws), it's because they don't want to appear unpopular. What a bunch of crap. Get some nuts and do what's right. I can tell you from experience that your community in the long run wants that.

I've criticized Twitter before, mostly for the fact that it's still a niche feature, not a business, and some people spend way too much time being connected. But regardless, I'm so tired of all these "Web 2.0" idiots trying to put high ideals over common sense (like revenue), especially when it involves problems that were solved in 1.0 by countless sites that came before them.

$80 million Twitter

Twitter scores another $15 million, and it's worth around $80 million.

So let me get this straight... A Web app with no business model that basically blogs short entries and aggregates them is worth $80 million.

Doesn't that feel very 1999 to you?

I'm late to the party: C# 3.0 rocks

I know this is lame, but whatever. In my day job we haven't jumped beyond .NET v2.0, which I think is reasonable. In my own part-time self-employment projects, I haven't really developed anything new either, at least not on the server side of things.

But today I endeavored to rewrite the private message system in POP Forums because I thought it sucked. It just wasn't logical. After considering WWFBD, I started fresh. With the just-posted beta of ReSharper also installed, I went at it. Between the suggestions that ReSharper was making and my own ideas, I'm shocked at how much less code there is.

The big immediate and obvious savings are of course auto properties. Using lambda expressions in the predicates for some of the generic List methods is so much cleaner. ReSharper suggested using an object initializer in a couple of places, which further reduced code clutter.

Is there anything ground breaking that I'm doing? No. Could I have done things the old way? Yep. Am I a lot happier with the readability of the code? Absolutely!

This is why I need to be doing work that is always looking forward, so I can have these fun gee-whiz moments more frequently.

The Mothership recently called me and wants me to visit... so perhaps I'll get that chance soon! ;)

ReSharper 4.0 beta posted

And there was much rejoicing...

Truth be told, I never understood the need or desire for IDE plugins. Then about a year ago, one of my co-workers was demoing something and kept making changes with what appeared to be piano chords on his keyboard. He was cleaning up and refactoring on the fly and it was like magic. I was hooked.

We've had to live without real support for C# 3.0 and the ASP.NET related memory problems were well documented. Now they've gone away, and life is good. I've been using various nightly builds with a fair amount of success and only the occasional crash. Can't wait to get this version installed!

Best $200 you'll ever spend.

Anatomy of an ASP.NET site for amusement park fanboys

This is a post I've meant to write for a very long time. Since 1998, my part-time job of sorts has been to maintain a number of community sites. One of those, started ten years ago, was Guide to The Point. "The Point" in this case is Cedar Point, an amusement park an hour west of Cleveland and about two hours from Detroit. It's home to more roller coasters than any other place on earth, and for people how grow up in the region, it's a summer ritual. In 2004, I joined forced with a friend doing another site, and we called it PointBuzz, inspired in name by my woefully neglected general coaster enthusiast site CoasterBuzz. These sites have become a business to a certain degree, since the ad revenue isn't exactly small coin. And if you can make money doing something you enjoy, why not?

Late last year we rebuilt the site. The old version was still running on v1.1 of .NET, and frankly a lot of the code was vintage 2001 stuff built on the beta of .NET. Our goals for rebuilding it were to concentrate on what we were good at: news, forums and photos. Our previous attempt ended up being a huge array of content that, frankly, was just as easily found on the official Cedar Point site and we didn't really have time to maintain it. A secondary goal was to boost performance (the site peaks around a million page views a month, sometimes as much as 100k a day) and get the code base into something maintainable. Let's face it, in 2001 I barely understood what OOP was, and even in 2004, prior to writing my book and having experience in a giant company, I had a lot to learn. The app as a whole was rather fragile when it came time to change something.

Naturally the first priority for me was rewriting POP Forums. The benefit of experience is that I know how many things I did poorly in the previous version from late 2003. I've tried to eliminate much of that legacy, but there are still things I find in my code, often inconsequential, that should be different, like checking for a string to be empty or null instead of String.IsNullOrEmpty(). I spent literally years trying to make it work with Membership and Profile in a way that I liked, and generally it did, but I abandoned that cause. You had to give stuff up too often when making efficient database calls, and that annoyed me. It's not that there aren't logical architectural solutions, it's that I was spending all kinds of time worrying about it, when I was the first and primary user of the app!

What was important to me was using a little AJAX where it made sense, and using the ASP.NET AJAX framework for any client script I had. The version you can download doesn't have it yet, but the version running on PointBuzz does, and I'm very pleased with the way you can encapsulate it and reuse it. The primary use is to load stuff into the page, like user profile data, dynamically. Most forums who you the user's name, number of posts, astrological sign and other useless shit that doesn't advance discussion, and I've always been annoyed by that. (Heck, you've been able to turn off signatures and profiles in my app, also annoying, since 2003.) So I just load that when a user chooses to view it. I also do first post previews this way, but not as tool tips the way vBulletin does (because I find that annoying too). Finally, I refactored the mess that is my rich text control, dating back to 2000 at least, so that it uses the AJAX framework.

The forum app does a whole lot of caching, but not to an extent that it isn't necessary. In old versions, I found that it wasn't holding on to much because the cache collection got enormous and it was always cycling items out. I also didn't cache on a paged basis, so if you viewed a topic with 1,000 posts, it read and cached the whole thing. That was silly. I've found that nearly all of the performance tweaks have to do with the database and caching, which I guess is certainly no surprise.

Custom controls were also a big part of it, using list controllers to handle UI elements based on the data they created. I had mixed success with this, because the thread page still has a lot of code in it because of all the stuff going on. On the other hand, the forum index page is pretty lean in code-behind. Doing custom templated controls also helps, because you can easily drop in an ad, for example, in between forums, topics or posts.

I prototyped a search engine for the forum way, way back in 2004, and after some tweaking I got something I'm pretty happy with. The SQL is incredibly ugly, but the performance isn't bad. Basically, when a post is updated, it's marked for indexing. A background thread on a timer dissects all of the words, throws out the junk and scores them on frequency and appearance in the title. I think the scoring formula needs some work, but most of the time I get pretty relevant results.

Honestly I could probably talk about the forum as a stream of consciousness forever, so I'll move on to photos. The truth is, we have too many. Walt, my partner on the site, went through a document everything phase, and we have over 6,000 photos to prove it. This is honestly not a totally solved problem. We have categories and albums as units of navigation, and we also have tags. The truth is that people generally go to photos of the roller coasters or to albums we link to from news items. We don't know if that's good enough, and we have thousands of photos untagged.

From a code standpoint, we started testing the photo app months before re-launching with live data. Contrary to the advice a lot of people gave me, I decided to store the photos in the database. My reasoning had mostly to do with ease of backing up. HttpHandlers serve the images and the thumbnails, and frankly I've not encountered any performance issues at all. I also kept permissions for editing the photo collection as abstract as possible. There's a simple HttpModule that does the required plumbing to map forum user data into the photo app. I can just as easily wire it up to anything else.

The news management is nothing special, and as such doesn't exist as its own project. The only interesting thing is that it will replace the first post of a special forum topic with a user control that has the news item in it, so essentially there are two views of it, either in the forum or the regular news page.

That's really the bulk of the site. The forum is used for all the member handling junk and e-mail.

Incidentally, I do hope to have another beta of the forum out soon. In addition to the items I listed on the PF site, I've also rewritten the private messaging.

A question I get a lot is, "Why not just use stuff that's already out there?" Aside from being my own code monkey, all of the stuff out there tries to be too many things to too many people. I don't have excessive database tables to deal with, superfluous UI, rigid style elements, etc. The forum is a lot of code, sure, but overall the rest of this stuff isn't hard to roll on your own. If you've got the skills, why not?

Video, Flash and Silverlight
I've been having a good time messing around with video this week, even though I haven't been able to commit a lot of time to it. As I mentioned before, it's a little frustrating that I essentially have to relearn Final Cut Pro shortcuts and such over and over since I don't do it enough.

Being a former broadcaster with the salary of an in demand programmer has really allowed me to stay in the loop with video gear and own "real" HD gear. (I have a Panasonic HVX200, for which the major expense is the solid state media.) It's funny how I've thrown a lot of convention out the door with regards to how I edit, since you're not constrained by the "package" mentality of broadcast news. Especially when you're dealing with fanboy type content, you can go with nice long cuts of stuff they just want to see.

In any case, I've been a QuickTime fan for many years. Back in the day, this was because the Sorenson Pro codec was easily the best in terms of quality. Then H.264 came around, and I declared it as the future years ago, back when most computers didn't have the nuts to even play it back.

These days, the action has been in Flash, for the obvious reason that it's so universally available. The recent adoption for Flash to playback H.264 QT movies makes it a total slam dunk for me. The primary benefit is one of work flow. It's easy to export these from Final Cut Pro very quickly.

I've started to play with Flash, the authoring application, to try and hack out a slightly customized video player. As an IDE for writing code, it absolutely sucks. ActionScript is not terrible, but I kept hitting obstacles in trying to get moving. So many articles online are behind subscriptions, and the documentation isn't organized very well. I'd kill for Intellisense.

Silverlight v2 has a lot going for it, though I haven't had any time to mess with it. I've barely touched Silverlight v1.x. Assuming that adoption skyrockets with the Olympics, I can see moving toward it for a lot of different reasons. Aside from being .NET-centric, the server-side of things have a lot of appeal. I remember the demo for the media server at Mix where they showed how you don't have to stream out the entire file too far in advance when there's potential that part of the video may never be watched. That's awesome stuff. The price is right too (free).

The only big negative to Silverlight as a video platform, for me, is the work flow issue. I can't quickly and easily get the video there out of the tools I use, and these are tools that the bulk of people in the field are using.

When I stop to think about it though, I left broadcast about nine years ago, and it's still not quite where I thought it would be with regards to video on the Internet. I mean that in terms of quality, which is no longer a function of CPU power, just bandwidth. Hopefully the US can catch up in that regard.
Posted: May 15 2008, 11:21 AM by Jeff | with 3 comment(s) |
Filed under: , , ,
.NET is teh suX0rz!!11! (And Ars' editorial standards are on the decline)

I love Ars Technica, but I think they're slipping. While the articles they post in the legal realm are fascinating, when they get down to writing about bits, they get the most uninformed jackasses they can find. Check out this steaming pile of crap on why .NET is a failure, and count how many times you see the term "API" (take a drink every time!).

It's an opinion piece wrapped up as fact, and one of many pieces you can find that people will buy in to the credibility where none exists (just read the comments). What's more annoying is that this is presumably setting up the author's Mac zealotry, which as a Mac fan and a .NET developer I could really do without.

I'd love to see this guy's resume to see just how much experience he's had. Heck, maybe we can lump him into one of his neat little categories of developers.

I suppose just linking to the article is some sort of validation, but my real intention is to show that this is the sort of stuff in the online tech quasi-press that is of the least value, and it's starting to permeate RSS feeds. It's basically Brit/Lindz gossip. No platform is quite perfect, but you know, there are millions of us doing really sweet things with this one, and not because of some evil monopolistic power either.


More Posts