Yearly Archives: 2005

I Have the Power(book)

I’ve got good reasons for slacking off on the blogging lately, I swear. First off, I bought a new house in southern Calgary with my fiance, Jackie. We’re just getting settled in, and things are going remarkably smoothly. Luckily neither of us had much in the way of worldly possessions, so the move was slicker-than-snot-on-a-doorknob. As a direct side-effect, I’ve been completely distracted from any programming or computer stuff for the past month, which is my main excuse.

Another major piece of news (where major equals minor to everyone but myself…) is that I’ve switched. Yes, Windows bitches, that’s right. I’m typing this post in TextMate, on a frickin’ 12″ Powerbook. To be honest, I couldn’t be happier. The laptop itself is so utterly beyond anything the PC world could muster it’s almost laughable for me to think that I was this close to buying a Dell.

Anyways, it feels good to be back. I feel like I still have a few good ideas worth posting, so hopefully I can amp it up here a little bit. Just to keep this somewhat on topic, Jeff Atwood is looking for good examples of CSS-based websites rockin’ the .NET framework. It seems he found David Shea’s The Zen of CSS Design, and liked the vibe ol’ Davey was puttin’ down. I can personally vouch for the awesomeness of the Zen Garden, which almost everybody has seen by now. I know it single-handedly inspired me to learn CSS. So if you have any examples, drop a comment on Jeff’s blog. Word

Here Be Dragons. Slay Them.

I’ve been somewhat facinated by Ruby on Rails for a while now. Initially, I’d watched the demo videos about the basics of the framework and was impressed by how nicely everything fit together (like most people, I’d imagine). The elegance of simplicity can sometimes be mind-bending, in a why didn’t I think of that sort of way. There’s nothing new there, it’s just that the way in which it’s been implemented is so damn… well… fan-fucking-tastic.

Perhaps the thing that I respect the most about Rails and it’s developers, however, is the extent to which simple common sense was applied in it’s creation. Over the many years of “enterprise” software development, certain things have become so entrenched within the mindset of developers that we’ve missed the original point of it all. For example, how many of us cringe when we see something like this?

<% foreach( Item item in LineItems ){ %>
    <p> <%= item.Name %> </p>
<% } %>

Most of us do, I’d bet. Sometime in the not-to-distant past, somebody realized that embedding a whole bunch of busness logic in with your views made things hard to manage. So they decreed “Thou shall not mix business logic with view logic” and the world was good again.

But look again at the code I’ve written above. Is there any business logic in there? No, there isn’t any at all, actually. Yet we all still experience an allergic reaction at the sight of it. Why? Instead, we write things like in another language entirely, a templating language to be exact. So now, instead of the above code, we have a layer of indirection like so:

<asp:Repeater id="repeater" runat="server">
    <itemtemplate>
        <p><%# DataBinder.Eval(Container.DataItem, "Name") %>
    </itemtemplate>
</asp:Repeater>

Perhaps this is easier to read, perhaps not. There’s certainly more to write. The fact remains that we haven’t really changed anything. We still have two examples of view code that don’t implement any business logic. Big deal, I guess.

My point, and I do have one, is that the most refreshing thing I see when I read my new book on Rails is the complete disregard the framework authors had for certain established norms. Rather that going ahead and implementing their own templating engine for views, they simply use Ruby. Pure craziness, I know. But it works, as long as you remember not to mix your view logic with your business logic. You don’t need an entire new language to accomplish this. The dude who handles the GUI where I work (which is Struts based) will attest to the fact that a templating language does not necessarily prevent business logic from bubbling upwards through the layers anyways.

The Rails book I linked to above is chock-full of stuff like this. I highly recommend it, even if you don’t ever write a line of Ruby in your life. Basic common sense is refreshing every now and then.

NewsGator Online is a Sexier Bloglines

I’m a dude that definitely prefers function over form, which is why none of the slick new online aggregators have rocked my world like Bloglines does. I like being able to loosely categorize my feeds, and then read each category in a free flowing River of News type style. Up until now, I haven’t found an online aggregator that fits my style like Bloglines.

That all changed yesterday, when I discovered that NewsGator has a free online version of their aggregator that behaves almost exactly as Bloglines does, except it actually looks sexy (ie; no frames). It imported the OPML file generated by Bloglines in a couple of seconds, and to my surprise functions almost exactly the same. I now have both form and function. Yay for me.

Intranets (The Bane of Corporate IT)

As a developer, I’ve had to personally implement at least one Intranet for a large organisation, and have been privy to the details that have gone into the implementation of several others. It seems that there’s a big batch of common functionality that goes into each and every one of them. It also seems like every company of decent size on the planet has one. So why do most of them suck ass? Well, I don’t have the answer to that question, but I know of at least one or two (massive understatement alert) articles on the web that go into this issue in depth. All I can offer is my own insight.

First off, realize that the individuals you are most likely going to be directly dealing with as a developer are decidedly non-technical (think, Communications Department). Their main goal is usually to provide interesting and relevant content to a large number of users. Remember that part about the content. You’ll most likely receive requests for all kinds of little features, but (as I’ve said before) content is what really matters. If the publishers of content can’t do their jobs efficiently, you’re in trouble. One thing you’ll come to learn, is that it’s quite hard to find or develop a solution that makes publishing and managing simple content entry easy. This is often lost in all the features of “Enterprise” CMS packages. (I’m pointing directly at you, Microsoft CMS).

Secondly, don’t forget about stats. At some point, whether it’s in an initial RFP, or several months down the road after implementation, somebody will ask for stats. Luckily, this one is easy. Every web server keeps a detailed log of every request made to it, so all you have to do is hook up a stats program that will make the information all pretty like. Do yourself a favor, and at least make sure that your web server is actually keeping these logs. That way, you can retrofit a stats package on later, when this feature is actually requested.

Next, think about search. There are actually more than a few CMS packages that don’t include this relatively useful (massive understatement alert) functionality by default. If you find yourself in this sorry situation, have no fear. Just think Lucene. It’s a Java technology (also available in a .NET version) that allows you to quite easily create a customized search solution for your particular situation. You can use it to index files, or you can base it off of an existing object model (like with Microsoft’s CMS). It’s quite easy to use, from a development standpoint, and will most likely provide results that are better than a package you might pay for.

Very importantly, you must realize that most users will write or receive content written in Microsoft Word. This means, that they will expect to be able to cut content from Word, and paste it as is into the CMS interface and just be done with it. This opens up a whole bunch of fun issues, (like what happens to images and charts). It’s hard to balance having this functionality with maintaining a good, consistent look and feel. I don’t have an easy answer to this one, unfortunately. Just be aware of it.

And lastly (at least for now), be wary of situations where the technology is actually chosen for you before you start development, without any input from yourself. This likely means that, sadly, the points I’ve mentioned above were not considered very well. It also means that a salesperson likely already sold a solution to somebody before they fully understood what was needed. This happens a fair amount of the time. Good luck with that.

That’s all I can think of right now, although there’s probably more.

Endorsed by a Russian

My long quest to be personally endorsed by a Russian is now over. Too bad there’s no link, and he’s one company behind…

Witness. Also notice the extremely high ratio of strange names. In that one short list, we have one each of Egor, Igor, Yoko, and Elampoorani. Creepy.

I found this while performing some advanced ego searching techniques as I stay home from work today to avoid infecting the pod. (One definite downside to an XP project is the speed at which the little flu-nasties spread when you’re hammering away at the same keyboard as someone else). Another thing I noticed today… The complete idiocy of feminine hygene product commercials is even more astounding than I’d previously thought. I just witnessed (not 5 minutes ago) a beautiful, healthy young lady save herself and her man-friend from certain death-by-drowning by utilizing her ultra-absorbent tampon to plug the leak in their boat. Yeah. I don’t even know where to take that.

R.I.P.

As of last Friday, the first company to employ me as a developer has gone belly-up. Kanga Communications is no more.

I have many good memories of Kanga, especially in it’s early days. I came on board as their third programmer in the summer of 2003, and had the opportunity to work on many interesting projects. If it wasn’t for Kanga, I’d have never met a bunch of great people (Mike, Mila, Christophe, Chris, Ross, Brad, Barb, Linda, Miia, Nick, Darren, Ivan, The Hobbits, Giovanni, and many more). If it wasn’t for Kanga, I wouldn’t be where I am now; working on probably one of the largest agile teams in Calgary. It seems strange to think that a year ago, we were all part of a company of over 40 talented individuals, and now… Nothing.

It really makes you think.

It’s Not Just the Design, Stupid

One of the things that drives me nuts about the Web right now is the complete lack of understanding among designers, programmers and users in general as to what the Web could be.

Hint: You cannot control how your site appears, or is used by others. Don’t even try. Be flexible, and learn how you can make your sites work for everybody. Not everybody…

  • Can see colours the way you do (think colour blindness)
  • Has the same screen size you do (think PDAs and widescreen monitors)
  • Can read 10px fonts (think about poor eyesight)
  • Has a broadband connection (think rural)
  • Has the same taste in design (think about getting consensus about a design from your clients)

The standard tips apply here. Using standards based design is a good start, as well as following some basic design guidelines. Sexiness alone might win you the contract, but you won’t be doing your customer any favours, whether they know it or not. Give this question a thought: What are the 5 sites that you visit most often? Now, why do you visit these sites? I’m willing to bet that you visit all 5 of them for the content, rather than the way they look.

So what’s the lesson? The lesson is that Content is King, and in almost any situation I can think of, a website should be constructed in such a way that its content can be delivered to as many visitors as possible. If you can do this well, and still make your site look sexy, you’ve already got the competition whipped. (This advice presumes your site actually has content people will be interested in).

There are fortunes being made on the web right now by people who understand this.

It’s Funny ‘Cause It’s True

The last time I talked to a goat, he like totally sounded exactly like this…

I’ve tried about enough of the grass around here to last me a while. I’m sick of this grass. This damned same grass day in and day out, I could just about… I take that back. This grass is okay. I’ll eat it. It’s pretty good. It’s great, actually. I mean, it’s okay. Could you grab me a handful of weeds from the ditch? Don’t bother shaking off the dirt! That’s a waste of time! Just bring it over as is. Wave that near my mouth and it’s going down the belly hatch. I am not joking. I’ll eat weeds. Just watch me. You give me a rotten apple, and I will eat that whole thing, seeds and all. Tear off a piece of bark for me, and it’s gone.