Archive for the ‘General’ Category

Intro to CAB

When Acropolis was announced, quite a few people I chatted with in e-mail and on message boards seemed to want to move away from CAB because they were afraid it would no longer be “maintained” or built upon. Fortunately, the SCSF Contrib Project has been busy steadily adding code and features to CAB. I haven’t had a chance to blog about much of the additions lately (or contribute myself, even though I have plans to add my UIService and WizardWorkspace to the code base), but I have taken notice of a few cool blog posts.

For starters, Rich Newman has put together a pretty darn nice looking Intro to CAB. It is one of the best point-by-point introductions to the CAB framework that I have seen (if a bit lengthy). Rich does a nice job of separating out some of the patterns and ideas (Command, Dependency Injection) from the way CAB implements them. So, if you’re new to the concepts as well as the framework (which many developers are) then you get to digest both the theory and the implementation as separate chunks, which I think is very valuable if you’re trying to learn this stuff for the first time. I highly recommend his site for people new to CAB.

ActionCatalog

The other really cool thing I saw in the last week or so is Bil Simser’s post on Taming the ActionCatalog in SCSF. The ActionCatalog has been a point of confusion for many developers. Here, though, Bil makes everything very clear with a concise explanation and some great code samples. It becomes really easy to see how one would go about utilizing this service to perform role-based UI configuration in a much less intrusive way.

I know for myself, I can’t wait to make use of what Bil outlines. In the application I’m currently working on, we have to do some role-based, permission-based UI configuration. But up to now, because of the limited amount of configuration we’ve had to do, we’ve done it the quick-and-dirty way. The ActionCatalog looks a lot better from where I stand.

So there’s some CAB updates to sink your teeth into.

Every now and then I remember to check my blog for trackbacks, postbacks, etc. Today I found this article from .NET Geek titled Blogs vs. CodeProject. I thought it was quite fortunate to run across that particular post since myself and a coworker were just bitching about the CodeProject the other day.

I’ve got to the point where, when I Google something, I skip references to two sites in particular: Experts Exchange and CodeProject.

Experts Exchange pisses me off because they blur all of their answers; they want you to pay so you can discuss software problems and solutions with other “experts”. I find the thought of paying to converse with my fellow software developers so revolting that I want to vomit every time Google links to one of these pages. Experts Exchange is the antithesis of something like ALT.NET.

CodeProject is better because it’s free. But it also has some serious problems…

The first problem is that the vast majority of the contributions to the CodeProject are written in such a way that the author wants you to download their code and use it. This is not an ideal solution. Instead of explaining the principles of a solution that the author is proposing and giving you enough code examples to write your own solution, they force you to download the code they’ve written. The most frequent suggested solution on the CodeProject is to, “download my library and use it.”

Well, I don’t want to download you’re code, CodeProject dude. Half the time (or more) your code is so poorly written and/or designed that I wouldn’t put it in a production environment if you bribed me with hot E3 booth babes. If I end up wanting to use anything off the CodeProject I have to completely re-write the code to make it acceptable, often fixing bugs and errors along the way. It would be a lot easier if the people who author solutions on the CodeProject would just write out the solution in their article, and then point to a reference implementation that you could download if you want to.

Now, someone is going to argue that the code on CodeProject is just that – reference implementations. But the point I’m trying to make here is that I shouldn’t have to download the code in order to understand the solution they are presenting. The concept behind the solution is what should be important, not the author’s library of cryptically written spaghetti code. Folks on the CodeProject spend way too much time writing libraries for people to download, and not enough time explaining how to properly solve a problem.

So, when Kim asks the following question about hit counts on CodeProject articles vs. blog posts:

Or maybe numbers isn’t everything???

I’m inclined to say: I agree. Counts aren’t everything. Ideas are.

CodeProject has one advantage over a blog: it’s bigger, so it’s going to receive more traffic. Unless you’re Ayende or someone else with a fairly sizable audience, then posting your solutions on the CodeProject is a good idea. You’ll reach a wider audience and help more people that way. And from reading Kim’s blog that appears to be what he/she is all about: helping others. And that’s a good thing.

So I don’t want to seem like I’m coming down hard on CodeProject. I love the idea, I just wish more authors would focus on the idea they’re trying to share instead of the assembly they’re compiling.

Are comments on blogs worthwhile? That’s the question some folks are asking (and answering), namely Adi, Joel and Dave Winer.

Dave puts it like this:

Do comments make it a blog? Do the lack of comments make it not a blog?

Here’s my answer: Comments don’t really have anything to do with the core concept of a blog (self expression). They’re an optional feature. Whether they can add value to a blog depends entirely on (a) the quality of the comments coming in and (b) how the author handles them.

Dave and Joel don’t apparently think they add much value, regardless. Joel writes:

Look at this innocent post on a real estate blog. By comment #6 you’re already seeing complete noise. By #13 you have someone cursing and saying “go kill yourself.” On a real estate blog.

Dave and Joel seem to think that if you’ve got something to say then you should just start your own blog. That idea doesn’t strike me as particularly practical.

I don’t know about anyone else, but I don’t see blogging as a medium fit for everyone (that one-size-fits-all problem again). I think you have to have a little bit of extrovert in you in order to write a blog. Plus you have to, you know, actually like to write. Then on top of that you have to buy web space (preferably with your own domain name), install blogging software, and then blog. Regularly. And not suck at it.

That seems to me like a lot of work for someone who might just want to respond to something you wrote one time, and maybe they’ve got something worth saying.

Isn’t it worthwhile to hear what they have to say?

Adi seems to think so:

…I don’t see anonymous comments as the evil Joel compares them to. I have read many blogs from Jeff Atwood, Scott Hanselman, Phil Haack containing meaningful and entertaining comments, some of them anonymous. Someone may have great ideas and the desire to express them, but no desire to open a blog, and you can force that person to start blogging.

I’m with Adi here. I think there’s a lot of value in other people’s opinions. It’s how I learn. It’s how my own ideas get challenged. For me, a blog post is a starting point. It’s a placeholder for a potential conversation. Without comments, that’s a pretty one-sided conversation.

As for the really idiotic comments, well, that’s where moderation comes in. Now, I admit my site isn’t a juggernaut like Scott Hanselman’s, so maybe there will come a day when moderating comments gets to be too much work. But I think for the vast majority of blogs, moderating comments is well worth the effort. It lets you keep the crap out, while giving people who actually have something interesting to say a place to say it.

Plus, I think there’s another benefit here: It makes people who visit your blog feel welcome. It encourages them to contribute to the conversation; to read; to have their own ideas challenged; to learn.

I feel like my blog is an extension of me – of my house, if you will – and when you’re reading my blog you’re visiting my house. Now, I could go all Soup Nazi on my visitors and tell them to take off their shoes, not walk on the carpet and keep their mouths shut while they’re in my house. But I prefer to make them feel at home; welcome; like they are an invited guest.

Of course that’s just me. Your mileage may vary :)

Jeff Atwood wrote a great post today. (Scott Hansleman jumped on as well.)

The best part of the post is this:

The value of education isn’t in the specific material you learn– it’s in learning how to learn.

At my job I get a chance to interview new recruits who apply to be on our development team (along with a bunch of other people including my boss and coworkers; it’s a real team effort when someone applies for a job here). I put a lot of emphasis on certain things. One of the things I tend to make a big deal out of is a college education. I think sometimes my focus on the degree irks other people involved with the interview process…

It’s not that I don’t think a programmer/developer can’t hone the necessary skills or acquire the necessary knowledge without a degree; I think they can and I know people who have done it. But college is a gauntlet; it’s a serious trial and people who successfully navigate it acquire a few things that non-graduates don’t seem to acquire with the same regularity.

There’s a mental toughness that develops from going to college; an ability to work under really stressful conditions; an ability to see things through to completion. And like Jeff says: they learn how to learn.

I was in the military before college and that experience molded me quite a bit. When I got to college I saw the same sorts of conditions producing the same sorts of results: mental toughness, an ability to see things through to completion, an ability to work under pressure.

I guess you could put this down under the category of character. When someone applies for a job with a college degree in C.S. I know what they’ve been through and what they’ve had to endure to get that piece of paper. It’s not easy getting a degree in an engineering discipline, and that means something. It doesn’t mean everything, of course. There are still people with degrees who have other character flaws that prevent them from fitting in, and there are still people without degrees who have become great developers. But by and larger a degree seems to continue to be a good indicator of the makeup of the person.

To the rest of this…

Things I Learned about Software in College

  • Writing buggy software is really easy. (I immediately started giving a break to game developers who released patches for their games, or MMOG’s that had weekly patch updates.)
  • Languages are nothing more than tools in a toolbox.
  • Code changes so fast that documentation is almost irrelevant. Comment the “why”.

Things I Learned about Software While Not in College

  • Simpler is better. Always.
  • Some things don’t work as simply as you think they should. See Databinding.
  • Automated Unit Testing beats the hell out of last-second beta testing.
  • Agile beats the hell out of Waterfall.
  • Good design principles make refactoring possible.
  • Refactoring makes better code possible.
  • This line of work is more fun than I thought it would be.

This article made me laugh. Not the article itself. What made me laugh was that it reminded me of a YouTube video I’d seen a month or so ago about a German kid screaming at his computer.

I think what this goes to show is that no matter what, there’s always going to be some small segment of the population that can’t handle their liquor.