The Great Lies of Software Architecture

NEW YORK - MAY 22:  People walk towards Manhat...
Image by Getty Images via Daylife

I was staggering through my RSS feeds tonight, wondering how many more blatant insanities our elected officials would be able to unleash on us this week, when Jeremy Miller's blog post tonight reminded me that we've no further to look than our own trade.  Take a minute and go read it - it's a narrowly-targeted rant, and a quick read:

Separate Assemblies != Loose Coupling

I agree with Jeremy on all counts, but I'll add a couple more logs on the fire.  The bit about "can you change one thing without messing up others" struck a nerve, but I've seen multiple architectures recently that seem to be even worse than this.

It's bad enough, after all, to inadvertently create a fragile architecture stack such that you "may" have to propagate change from assembly to assembly, but I'm seeing a lot of solution stacks where the normal development use case is to have to make changes in a half-dozen or more assemblies every time the smallest change is required.

Continue reading "The Great Lies of Software Architecture"

Selling Architecture, Redux

Construction works at a prefabricated house
Image via Wikipedia

Architecture is a tough sell.  It rarely is linked directly to the delivery of a feature, much less is a feature.  And without that tie-in, business leaders won't approve the time and expense to build or improve your architecture.

Of course, as software professionals, we understand why architecture is important.  You can build almost any individual feature without investing in any meaningful architecture, but it probably won't work well, and it's certain to be difficult to maintain.  A good architecture can make development proceed more quickly, make it more likely that you'll hit your delivery dates, and make maintenance far easier.

Continue reading "Selling Architecture, Redux"

Use a null SMTP server for testing

Note: While the article here is still correct in general, the links and technologies are pretty badly dated. One of the more popular contemporary alternatives is MailTrap -- their site includes some great additional background on mail protocols, too.

[Updated 3/2020]

It's not uncommon for companies to have SMTP servers locked down so that only a limited set of machines are able to send email. They might do this by requiring authentication or by blocking port 25 for all but "known" server hardware. This makes a great deal of sense in the face of zombies and spam and all manner of email-propagated evil, but when you're testing an email-enabled application, it can put a real cramp on your progress.

In some cases, you can get away with running a full-blown SMTP / POP server on your desktop, or maybe you've got the freedom to set up a machine or a VM. This can be more hassle than it's worth, though, in some cases. It's a hassle to set up, it's going to suck up a noticeable chunk of resources on your desktop, and maybe the biggest issue - you don't really want to deliver all those emails!

Continue reading "Use a null SMTP server for testing"

Get to the “Wow!”

I read a blog post on the signal to noise site today that made me reflect on the perils of selling software.  Matt was reacting to a video he saw for a new handheld reader, and he noted that the demo in the video cuts directly to the "wow" factor for this device, and then points out that the company's web site completely fails to do this.

This sure sounds easy, doesn't it?

Live demos are really hard to pull off well.  I remember trying to sell a software product a few years ago, and it just didn't leap off the screen in demo situations.  The technology was good, but the "wow" factor was just a little too subtle for most people to appreciate.  I don't recall ever having an exciting demo until our CEO slipped on one conference call and told our prospect that the next release of our software was going to have "virgin control"!

Continue reading "Get to the “Wow!”"

Drive Backup 9.0 Express – a really bad start

I'm slowly weaning myself off Vista on my home PC and onto Ubuntu, because Vista just continues to disappoint me day after day.  I've pared my Vista install down to just the basics now, and I'm setting it up to dual-boot to either Vista or Ubuntu.

Paragon Software Group

Before I go messing with boot sectors, though, I plan to take a backup of my system.  The last experience I had with Windows Backup wasn't stellar, and as luck would have it, I just read a blog post announcing a free personal backup program from Paragon Software Group called Drive Backup Express.  It's supposed to be really simple, and really foolproof.  Perfect, I thought - I'm in!

Continue reading "Drive Backup 9.0 Express – a really bad start"

What Chrome means for developers

google_chromeBy now, you've surely seen every blogger on the planet sound off on Google's new browser.  There are dozens of reasons why this is an important development, and hundreds more if you speculate on ulterior motives.  I'll leave you to consider the overall market impact of this new browser, but if you develop web applications, there are some specific implications that I believe we're going to see in the next 18 months or so.

First, consider how Google's introduction of Chrome differs from the birth of any other browser.  After all, it's been a long time since a new browser garnered this sort of attention.  Not since Microsoft introduced Internet Explorer have we seen a browser hit the market as a predestined market contender.  Firefox, Opera, and Apple's Safari have built sizeable market share since their introductions, but it's happened over time.

Continue reading "What Chrome means for developers"

English grammar no longer required for CNN editorship

This is the dateline from a real CNN article:

NEW YORK (CNNMoney.com) -- Hurricane Gustav could inflict as much as $10 billion in damage, making it one of the more costliest storms in U.S. history.

CNN
Image via Wikipedia

As a software professional, I'm constantly amazed at the number of people I work with on a daily basis who routinely master dozens of computer languages, but butcher English.  Granted, the "grammar checking" tools available to us can't hold a candle to the syntax help we get with most IDE's, but I think the point is still valid.

Sadly, though, it appears that the typical American continues to become less proficient in the use of the English language as each year passes.  You can hang the blame on everything from our schools to the rise of IM and texting, but it's clear that people just don't give a damn about grammar anymore.
Continue reading "English grammar no longer required for CNN editorship"

Use .htaccess to redirect from Drupal to WordPress

As I mentioned, I just converted from Drupal to WordPress, and one of the most difficult parts of the conversion was figuring out how to redirect Drupal's old urls to the new equivalents in WordPress.  I'd taken care to carry over ID values intact, so the mapping was easy, and Apache should have been quite capable of doing the url translation for me, but it took a fair bit of trial and error to get it to work right.

Here's the file that finally worked:


#
# Apache/PHP/Drupal settings:
#

# Various rewrite rules.
<IfModule mod_rewrite.c>
Options +FollowSymlinks
RewriteEngine on

# Rewrite drupal urls to worpress
RewriteCond %{QUERY_STRING} ^q=node/(.+)$
RewriteRule ^(.*)$ http://blog.componentoriented.com/?p=%1 [R=301,L]

# Forward RSS feed
RewriteCond %{QUERY_STRING} ^q=rss.xml$
RewriteRule ^(.*)$ http://blog.componentoriented.com/?feed=rss2 [R=301,L]
RewriteCond %{QUERY_STRING} ^q=atom/feed$
RewriteRule ^(.*)$ http://blog.componentoriented.com/?feed=rss2 [R=301,L]

</IfModule>

Notice the use of RewriteCond before RewriteRule.  When I originally tried this, I used only the RewriteRule statement and tried to match the query string in the first part of the RewriteRule statement.  Needless to say, it didn't work.

The problem turned out to be that RewriteRule just wouldn't match query strings (which is where the node ID was), and when I figured out how to use RewriteCond, that turned out to be exactly what I needed.  The %1 instead of $1uses the value that was matched in the previous RewriteCond statement rather than the matched value in RewriteRule.

Finally, you can see that I also forwarded the old Drupal RSS feeds.  If you're converting from Drupal, this should work for you, and if you're converting from anything else, hopefully this example will help a bit.

Now running on WordPress

If you're a regular visitor, you probably notice a few changes here – I just converted from Drupal to WordPress. There wasn't a single big reason to convert, but rather a bunch of little reasons, like these:

  • I was looking at a Drupal upgrade to stay current, so I was at a point where I had to get off my duff and do something, anyway.
  • I really liked the clean look of WordPress blogs when I visited them, and I never quite found that in a Drupal theme. Maybe I wasn't looking hard enough, though…
  • When I moved from PostNuke to Drupal, one of the big reasons was for increased community activity, standards support, and ease-of-use, and it's the same story again here. WordPress has really taken off as a community and a platform, and I see tools and services generally supporting WordPress before Drupal, and frequently with higher quality.

I still really like Drupal, and I think in situations where maximum flexibility and extensibility are needed, Drupal still has more headroom. But I'm just a blogger, you know, and this suits me just fine, thank you.

You'll also notice that I've changed my URL. I've decided to go to a .com extension in hopes of boosting google juice, among other things. All your bookmarks and google searches should get directed here automatically, thanks to some work in .htaccess (I'll post on that later). Same goes for RSS, but if you've added my feed to your reader, please take a second to fix up the address and avoid the redirect – the new RSS address is http://blog.componentoriented.com/?feed=rss2.

Thanks, and feel free to comment on the new design.

Free .Net Development

I saw an interesting question a couple of days ago on a Joel-on-software forum:

http://discuss.joelonsoftware.com/default.asp?joel.3.668628.7

A poster lamented that his company had a rather "mature" IT platform, with a bunch of classic ASP code, Windows Server 2003, SQL Server 2005, and Office 2000, and the maintenance of the ASP code was getting prohibitively difficult.  He asked the group's opinion about using the free "Express" editions of .Net versus making a platform switch to something like Java, which is "100% free".

You can read my response there, of course, but I'd like to expand on it a little here, because I think this scenario is really pretty common, and because I think the obvious problems here really do a pretty good job of masking some serious underlying problems, and I think most people are going to miss those.  In fact, I'm going to do this as a two-part post, because both problems merit some discussion.

vsexpress On to the first problem - can you really do .Net development for free using the Express tools?

You bet you can.

The Express editions target the very same .Net 3.5 runtime platform as other Visual Studio tools.  If you need to build large-scale Enterprise applications with the very latest bells & whistles, you might miss some of the features in higher-end versions of Visual Studio, but the real make-or-break feature is source code control integration.  The idea here is pretty simple - source control integration is nice for individual developers, but it's a must-have for teams, and if you're developing in a team, Microsoft's position is that you really should upgrade.  I think this makes sense, and it still provides an incredible amount of room for smaller-scale development.

I think the best way to think about this is to compare VS Express to whatever you're using today, and look at all the value you'd get for free.  VS Express supports Master Pages, LINQ, MVC, Dynamic Data websites, and more.  You can target the platform for your application (making VS 2008 the best platform you can use for developing .Net 2.0 applications).

Even if you decide to upgrade to a more capable version of Visual Studio, by the way, you should definitely check out the web resources for the Express Editions - there's a lot of great content there.  Finally, I'm not sure if this is still true, but when I downloaded the Express Editions and registered them, I was able to download some free third-party controls, including SpreadsheetGear, which is worth the price of admission all by itself.

So, to paraphrase (badly, too, I might add) Ferris Bueller, if you have the means to pick up Visual Studio Team Edition or even Pro, I highly recommend it, but if you don't, don't let that stop you from getting started in .Net development.  Download Visual Studio Express, and get started today!