All Tags
Generally speaking, I do everything I can to avoid images in content. Simple text is easier, more maintainable, more accessible and, for added incentive, I'm a spectacularly inept designer. Predictably, though, there's always an exception. When an exception arises and I have to use an image, I still want the markup to be semantic and accessible.
The technique I use isn't revolutionary or even new, but I don't see it used very much where I work, so I thought I'd write it down. Who knows? Maybe it's less common than I've been assuming it is.
In my last post, I talked about a few of the challenges I ran across when consuming an RSS feed using ColdFusion. The whole point of consuming the feed, though, at least in my case, was to display it in some way. That presented a few challenges of its own, although these were all technical in nature and easy to solve once I figured out the problem. The hard part for me was figuring it out. I spent more than a few hours on a couple of these.
Among the (many) things that I'm admittedly anal about with respect to code is nomenclature. I hate obfuscation, I detest ambiguity, I deplore obscure abbreviations. I'm also not a fan of misdirection.
I sat down in front of GMail this morning to compose a message to the CF-Talk mailing list and I had this vague sensation that something was amiss. I couldn't put my finger on it, but I honestly didn't think too much about it. After a minute or two, though, I think my neck started getting tired and it hit me. GMail's message composition window is no longer constrained. I've been turning my head to see what I'm typing. Although I've gotten used to it, I suppose, I always hated the wasted real estate that could've been used to keep the vertical scroll within a message to a minimum. As far as I could tell, there was no reason for the width to be constrained (ad space, perhaps?), it just was. Maybe not any more.
Reckon I just might've spoke too soon when I posted last night. Maybe. I thought I'd solved all of my issues with MAMP and had successfully bent it to my will when I got pear running. Alas, 'twould appear not. Today I tried to execute an Ant script and one of my Subversion tasks was failing.
On the whole, I suppose, Ant is probably best known as a build automation tool for "traditional" software projects (particularly Java), but its usefulness for building and deploying web applications should not be dismissed. I've been using Ant since maybe 2003 or 2004 to do just that.
This entry offers a high-level view of how I use Ant to meet my own build and deployment needs. Subsequent posts will look at specific elements that are non-standard or that relate to how I integrate Ant into my end-to-end deployment process.
Anyone that's been building web applications (or doing anything else, for that matter) for any length of time has undoubtedly established a few operating principles that drive the way they work and the deliverables they produce. I have mine. Not too long ago, I sat down and made an effort to articulate the principles (well, at least the big ones) that drive my work and, after some thought, decided to publish them here. I'd be interested in hearing how others apply (or avoid) the principles that I follow.
- Keep It Simple, Stupid
- Separate Presentation from Content
- Separate Content from Behavior
- Prefer Extensibility to Performance
- Prefer Readability to Perforance
- Prefer Simplicity to Flexibility
- Less First, Then More
As many computers as I use in as many different locations, I've come to rely more and more on a central bookmark repository. Because I already use Google to manage my mail and calendar , King G was a natural selection to manage my bookmarks, too.
I keep trying to leave Firefox behind. And trying. And trying. Not behind, behind like feathered hair or roadkill, but behind as in dropping it as my primary browser. I haven't had much luck so far and it's pissing me off just a little bit. This I tell you this now because I just installed 3.0 b2 on my Mac hoping it would be better than 2.x and my bitterness is a bit more acute at the moment. Needless to say, it's not better. Not really, anyway. It doesn't even look that much better. I may even prefer the look of 2.x with one of Aronnax's outstanding grApple themes applied, to be honest.
On the whole, I suppose, Ant is probably best known as a build automation tool for "traditional" software projects (particularly Java), but its usefulness for building and deploying web applications should not be dismissed. I've been using Ant since maybe 2003 or 2004 to do just that.
This entry offers a high-level view of how I use Ant to meet my own build and deployment needs. Subsequent posts will look at specific elements that are non-standard or that relate to how I integrate Ant into my end-to-end deployment process.
Seems like an easy decision, right? I mean, it's just web application, right? It's not. I mean, it is just a web app, but it wasn't an easy decision. The evil geniuses behind InstantSpot have been really good to me and, frankly, it's just so damn easy to get started and to be productive. It took me a while to decide that I wanted to take on that burden myself. But I do. More on my reasons for leaving can be found at robwilkerson.org, but the reason for this post is to talk about what's next.
Among the (many) things that I'm admittedly anal about with respect to code is nomenclature. I hate obfuscation, I detest ambiguity, I deplore obscure abbreviations. I'm also not a fan of misdirection.
About a year ago I wrote a feed aggregator for a content management product. In doing so, I ran into a number of issues - some big, some small - that had me banging my head against a wall until i finally tracked them down. This morning, Bob Imperial asked a question on the CF-Talk mailing list related to one of those topics. I answered his question and went to work tracking down another, similar question that I knew I had responded to in the past. I thought it was the same question so my intent was to blog the solution in case anyone else was having the same problem.
In my last post, I talked about a few of the challenges I ran across when consuming an RSS feed using ColdFusion. The whole point of consuming the feed, though, at least in my case, was to display it in some way. That presented a few challenges of its own, although these were all technical in nature and easy to solve once I figured out the problem. The hard part for me was figuring it out. I spent more than a few hours on a couple of these.
Anyone that's been building web applications (or doing anything else, for that matter) for any length of time has undoubtedly established a few operating principles that drive the way they work and the deliverables they produce. I have mine. Not too long ago, I sat down and made an effort to articulate the principles (well, at least the big ones) that drive my work and, after some thought, decided to publish them here. I'd be interested in hearing how others apply (or avoid) the principles that I follow.
- Keep It Simple, Stupid
- Separate Presentation from Content
- Separate Content from Behavior
- Prefer Extensibility to Performance
- Prefer Readability to Perforance
- Prefer Simplicity to Flexibility
- Less First, Then More
About two or three times a year I find myself in need of a background process that either needs to SSH or SCP into a remote machine . Since I do it so infrequently, I need to remind myself of the procedure each time so I've decided to lay it out here for anyone - but especially me - to reference.
This process will allow a user to access, via the SSH protocol, another server without being prompted for a password. This technique is tremendously useful if, for example, you want to run a cron job that creates a backup using rsync or one that simply needs to copy files from another server to be processed locally.
Generally speaking, I do everything I can to avoid images in content. Simple text is easier, more maintainable, more accessible and, for added incentive, I'm a spectacularly inept designer. Predictably, though, there's always an exception. When an exception arises and I have to use an image, I still want the markup to be semantic and accessible.
The technique I use isn't revolutionary or even new, but I don't see it used very much where I work, so I thought I'd write it down. Who knows? Maybe it's less common than I've been assuming it is.
I write less code than I used to (particularly during the daylight hours), but I inherit a lot of code and I review a lot of code in addition to that which I still write. Today I read something that reminded me to write about a trend - or maybe it's an oversight - I've noticed in the last few years. It seems that a lot of developers are afraid of errors. Somewhere, somehow, it seems like it became the norm to create "bug-free" software by masking bugs and failing silently. Why? Or, more assertively...stop that.
Contrary to popular belief, errors are user-friendly (at least in the long run). Errors are certainly developer-friendly. In almost every case, the latter begets the former, I've found.
The other night I had a need to restart Eclipse with the -clean flag. No big deal, I've done this a thousand times. Except - and didn't you just know there'd be one of those?...I've never done it on OS X (have I mentioned that I'm a new Mac user?). Hmmm.
Google is your friend.
I don't know where I've been hiding, but I only heard about Wesabe a few days ago and it looks really interesting. I don't know much right now. Hell, I know anything (or damn close to it). I don't even know how long they've been around.
Any input or experience would be appreciated. I'm thinking about giving it a try...
In spite of my previous rant, I'm not prepared to give up Firefox just yet - even in the face of blazing speed increases from the Safari camp. Now the Firefox team has given me one less reason to switch (albeit a superficial one). The new beta3 release is gorgeous, borrowing heavily (it's homage, right?) from the Safari UI, it seems to me.
I've only had it installed for a few minutes so I can't speak to any other improvements, but I like the look (a lot) and they appear to have fixed a bug that prevented me from editing blog posts in the beta2 version.
I keep trying to leave Firefox behind. And trying. And trying. Not behind, behind like feathered hair or roadkill, but behind as in dropping it as my primary browser. I haven't had much luck so far and it's pissing me off just a little bit. This I tell you this now because I just installed 3.0 b2 on my Mac hoping it would be better than 2.x and my bitterness is a bit more acute at the moment. Needless to say, it's not better. Not really, anyway. It doesn't even look that much better. I may even prefer the look of 2.x with one of Aronnax's outstanding grApple themes applied, to be honest.
So here I am. I've been fighting this for a long time now. I don't know why. I really don't. Probably laziness, really. Maybe I just didn't want to feel obliged to utter the phrase "blogsphere". And now I have. I'll endeavor to never do so again.
For a long time I've been slightly, maybe even moderately annoyed by the Courier New font in Windows. Not in general, mind you, just when I was coding. It's too wide and it sucks up a lot of real estate in my text editor(s) that I don't want to lose if I can avoid it. Unfortunately, there just weren't any decent monospace alternatives I could find. Not that I spent a lot of time looking.
I sat down in front of GMail this morning to compose a message to the CF-Talk mailing list and I had this vague sensation that something was amiss. I couldn't put my finger on it, but I honestly didn't think too much about it. After a minute or two, though, I think my neck started getting tired and it hit me. GMail's message composition window is no longer constrained. I've been turning my head to see what I'm typing. Although I've gotten used to it, I suppose, I always hated the wasted real estate that could've been used to keep the vertical scroll within a message to a minimum. As far as I could tell, there was no reason for the width to be constrained (ad space, perhaps?), it just was. Maybe not any more.
About a week ago, I wrote about a bookmarklet I had bastardized to facilitate my process for adding a new Google bookmark (GMark). Today I decided to take that same approach to automating a different process.
As many computers as I use in as many different locations, I've come to rely more and more on a central bookmark repository. Because I already use Google to manage my mail and calendar , King G was a natural selection to manage my bookmarks, too.
About two or three times a year I find myself in need of a background process that either needs to SSH or SCP into a remote machine . Since I do it so infrequently, I need to remind myself of the procedure each time so I've decided to lay it out here for anyone - but especially me - to reference.
This process will allow a user to access, via the SSH protocol, another server without being prompted for a password. This technique is tremendously useful if, for example, you want to run a cron job that creates a backup using rsync or one that simply needs to copy files from another server to be processed locally.
A couple of months ago I got a semi-panicked phone call from my mom. Seems she had allowed Windows Update to do its thing and now her Internet Explorer bookmarks, ahem Favorites, weren't there. I couldn't figure out what she was talking about until I remembered that IE7 had recently been unleashed upon the world. And the light bulb clicked on.
After a long morning of constant scowling while trying to write "performant" SQL against several tables containing hundreds of millions of records, I followed a feed link to this.
Todd Sharp just posted an entry on about the existence of Pi Day. Surprisingly not on the list of US Federal Holidays, but still. Get it? 3/14 -> 3.14? Yeah, me either. I mean I get it, but I don't get it. Even from a geek, saying anything at all just seems so anticlimactic.
xkcd offers a perspective that, at a glance, appears quirky and offbeat. About the time you finish reading, though, you realize that it's just so...on the nose. More than once I've been tempted to don the tin foil chapeau just to keep the author out of my head.
If you're not a subscriber, you're seriously missing out.
A friend sent me the URI to this video clip a while back and, in spite of the "boring manager Rob" part, it made me laugh. Loud. It's work-safe, but for maximum amusement, I recommend turning the volume up. If you still can't quite catch all of it, read the lyrics.
In light of Microsoft's plans (or is it just a proposal?) for browser version targeting, I decided to weigh-in on a more philosophical level. There are a lot of very smart people chiming in on this who are much closer to the situation than I am at a practical level. They are better equipped to speak to any implementation concerns. My concern rests at a higher (as in more abstract, not better) level.
A couple of months ago I got a semi-panicked phone call from my mom. Seems she had allowed Windows Update to do its thing and now her Internet Explorer bookmarks, ahem Favorites, weren't there. I couldn't figure out what she was talking about until I remembered that IE7 had recently been unleashed upon the world. And the light bulb clicked on.
Seems like an easy decision, right? I mean, it's just web application, right? It's not. I mean, it is just a web app, but it wasn't an easy decision. The evil geniuses behind InstantSpot have been really good to me and, frankly, it's just so damn easy to get started and to be productive. It took me a while to decide that I wanted to take on that burden myself. But I do. More on my reasons for leaving can be found at robwilkerson.org, but the reason for this post is to talk about what's next.
I've been a user - and a fan - of Prototype for about a year or so now, but in the last few months I've been hearing a lot of good things about jQuery so I've been looking for a reason to do something with it.
I recently took over the technical ownership of a site that needs a little love. It's a site for a county fair and the fair date is coming up. The folks who run the fair want to do a lot with the site moving forward, but for now they just needed some quick edits made. Of course I said it wouldn't be a problem.
I've been a user - and a fan - of Prototype for about a year or so now, but in the last few months I've been hearing a lot of good things about jQuery so I've been looking for a reason to do something with it.
I recently took over the technical ownership of a site that needs a little love. It's a site for a county fair and the fair date is coming up. The folks who run the fair want to do a lot with the site moving forward, but for now they just needed some quick edits made. Of course I said it wouldn't be a problem.
I've been looking forward to this for a long time now. SuperDuper, of course, is the outstanding backup software for Macs and this release offers compatibility with OS X Leopard. It's not free, sadly, but it's one of those apps that is far enough ahead of its free counterparts that I believe it's worth paying for. Yeah, I know Leopard ships with TimeMachine. Wonderful. Fantastic. Not good enough. Doesn't work for me.
I don't mean that it literally doesn't work for me. It probably functions just fine. My problem with it is that TimeMachine forces me to park a big ol' external hard drive on my desk and hard-wire it to my machine.
As an LSU alum, I'm an LSU fan (of course). There's nothing cooler than showing up to class on a Thursday morning during football season, parking in the shadow of Death Valley and right next to an RV (one of many) that's already started tailgating for the game on Saturday. Great atmosphere, great school and great people. I wish I could've been there last night.
After all of my bitching and moaning about how MAMP was affecting (read: preventing) my full development workflow, last night I downloaded v1.7.1 - I've been running 1.7.0. I knew 1.7.1 had been released recently and it was on my "short" list of things to do, but yesterday I did it to see if it would automagically fix all my problems. Sho'nuff...it did.
Having chosen MAMP as my Apache, MySQL & PHP stack of choice on the Mac, things have been rolling along pretty well. Well, until tonight. Tonight was the first time I've had a need to connect to a database since I started developing locally. I've been building out the domain model of a project for the past few weeks and now it's time to establish persistence. Since I've used PEAR::MDB2 for database abstraction in the past and am reasonably comfortable with doing so, I decided to just stick with it (one of these days I'll get around to trying out PHP's baked-in data objects). Using MDB2, though, means that I need a working installation of pear. MAMP comes with pear installed, but it's not necessarily configured and happily ready to run. Mine most certainly wasn't.
Reckon I just might've spoke too soon when I posted last night. Maybe. I thought I'd solved all of my issues with MAMP and had successfully bent it to my will when I got pear running. Alas, 'twould appear not. Today I tried to execute an Ant script and one of my Subversion tasks was failing.
I've been looking forward to this for a long time now. SuperDuper, of course, is the outstanding backup software for Macs and this release offers compatibility with OS X Leopard. It's not free, sadly, but it's one of those apps that is far enough ahead of its free counterparts that I believe it's worth paying for. Yeah, I know Leopard ships with TimeMachine. Wonderful. Fantastic. Not good enough. Doesn't work for me.
I don't mean that it literally doesn't work for me. It probably functions just fine. My problem with it is that TimeMachine forces me to park a big ol' external hard drive on my desk and hard-wire it to my machine.
As an LSU alum, I'm an LSU fan (of course). There's nothing cooler than showing up to class on a Thursday morning during football season, parking in the shadow of Death Valley and right next to an RV (one of many) that's already started tailgating for the game on Saturday. Great atmosphere, great school and great people. I wish I could've been there last night.
For a long time I've been slightly, maybe even moderately annoyed by the Courier New font in Windows. Not in general, mind you, just when I was coding. It's too wide and it sucks up a lot of real estate in my text editor(s) that I don't want to lose if I can avoid it. Unfortunately, there just weren't any decent monospace alternatives I could find. Not that I spent a lot of time looking.
Look, I was an early adopter of TiVo having received my first on Christmas morning, 2000. I was happy - ecstatic - to be able to pause when I needed to take a leak, rewind when a particularly amusing Super Bowl commercial was played and let someone (ahem, something) else worry about whether a show I wanted to record was changing time slots.
That is, until I could exercise my broadband connection and save my phone line and the hours of interminable download time it took to receive updates. Then I was happy.
I try to avoid reference posts, but the ex-paratrooper (peacetime) in me was struck by this. Articulating your own death must be an incredibly difficult thing to do on many levels. MAJ Andrew Olmsted did a hell of a job. I wish I'd known about his writing sooner.
Today, in the course of doing twelve other things, I happened onto a reference to Grey's Law which states that, " Any sufficiently advanced incompetence is indistinguishable from malice."
I wish I'd say that.
The other night I had a need to restart Eclipse with the -clean flag. No big deal, I've done this a thousand times. Except - and didn't you just know there'd be one of those?...I've never done it on OS X (have I mentioned that I'm a new Mac user?). Hmmm.
Google is your friend.
I don't know whether it's something I'm missing or something extra that I have, but I can never, and I mean never, remember the order of arguments when I need to create a new cron job.
With CronniX, this is no longer a problem.
As a long time Windows user, one of my frustrations has always been the lack of a decent date/time display. When I transitioned to the Mac a few months ago, I hoped that particular frustration would be alleviated. Although it was better, it still wasn't all it should be, in my mind.
A few weeks ago, I just got fed up with the display on my Windows machine and I went on a serious hunt for a better system clock. I found one that was close, but not quite good enough. I'll have to carry on with the paltry OS implementation. On the periphery of that search, though, I ran across a replacement for the OS X system clock that looked pretty solid so I decided to install it.
Having chosen MAMP as my Apache, MySQL & PHP stack of choice on the Mac, things have been rolling along pretty well. Well, until tonight. Tonight was the first time I've had a need to connect to a database since I started developing locally. I've been building out the domain model of a project for the past few weeks and now it's time to establish persistence. Since I've used PEAR::MDB2 for database abstraction in the past and am reasonably comfortable with doing so, I decided to just stick with it (one of these days I'll get around to trying out PHP's baked-in data objects). Using MDB2, though, means that I need a working installation of pear. MAMP comes with pear installed, but it's not necessarily configured and happily ready to run. Mine most certainly wasn't.
Anyone that's been building web applications (or doing anything else, for that matter) for any length of time has undoubtedly established a few operating principles that drive the way they work and the deliverables they produce. I have mine. Not too long ago, I sat down and made an effort to articulate the principles (well, at least the big ones) that drive my work and, after some thought, decided to publish them here. I'd be interested in hearing how others apply (or avoid) the principles that I follow.
- Keep It Simple, Stupid
- Separate Presentation from Content
- Separate Content from Behavior
- Prefer Extensibility to Performance
- Prefer Readability to Perforance
- Prefer Simplicity to Flexibility
- Less First, Then More
About a year ago I wrote a feed aggregator for a content management product. In doing so, I ran into a number of issues - some big, some small - that had me banging my head against a wall until i finally tracked them down. This morning, Bob Imperial asked a question on the CF-Talk mailing list related to one of those topics. I answered his question and went to work tracking down another, similar question that I knew I had responded to in the past. I thought it was the same question so my intent was to blog the solution in case anyone else was having the same problem.
Having chosen MAMP as my Apache, MySQL & PHP stack of choice on the Mac, things have been rolling along pretty well. Well, until tonight. Tonight was the first time I've had a need to connect to a database since I started developing locally. I've been building out the domain model of a project for the past few weeks and now it's time to establish persistence. Since I've used PEAR::MDB2 for database abstraction in the past and am reasonably comfortable with doing so, I decided to just stick with it (one of these days I'll get around to trying out PHP's baked-in data objects). Using MDB2, though, means that I need a working installation of pear. MAMP comes with pear installed, but it's not necessarily configured and happily ready to run. Mine most certainly wasn't.
Anyone that's been building web applications (or doing anything else, for that matter) for any length of time has undoubtedly established a few operating principles that drive the way they work and the deliverables they produce. I have mine. Not too long ago, I sat down and made an effort to articulate the principles (well, at least the big ones) that drive my work and, after some thought, decided to publish them here. I'd be interested in hearing how others apply (or avoid) the principles that I follow.
- Keep It Simple, Stupid
- Separate Presentation from Content
- Separate Content from Behavior
- Prefer Extensibility to Performance
- Prefer Readability to Perforance
- Prefer Simplicity to Flexibility
- Less First, Then More
As many computers as I use in as many different locations, I've come to rely more and more on a central bookmark repository. Because I already use Google to manage my mail and calendar , King G was a natural selection to manage my bookmarks, too.
About a week ago, I wrote about a bookmarklet I had bastardized to facilitate my process for adding a new Google bookmark (GMark). Today I decided to take that same approach to automating a different process.
Anyone that's been building web applications (or doing anything else, for that matter) for any length of time has undoubtedly established a few operating principles that drive the way they work and the deliverables they produce. I have mine. Not too long ago, I sat down and made an effort to articulate the principles (well, at least the big ones) that drive my work and, after some thought, decided to publish them here. I'd be interested in hearing how others apply (or avoid) the principles that I follow.
- Keep It Simple, Stupid
- Separate Presentation from Content
- Separate Content from Behavior
- Prefer Extensibility to Performance
- Prefer Readability to Perforance
- Prefer Simplicity to Flexibility
- Less First, Then More
Seems like an easy decision, right? I mean, it's just web application, right? It's not. I mean, it is just a web app, but it wasn't an easy decision. The evil geniuses behind InstantSpot have been really good to me and, frankly, it's just so damn easy to get started and to be productive. It took me a while to decide that I wanted to take on that burden myself. But I do. More on my reasons for leaving can be found at robwilkerson.org, but the reason for this post is to talk about what's next.
About a year ago I wrote a feed aggregator for a content management product. In doing so, I ran into a number of issues - some big, some small - that had me banging my head against a wall until i finally tracked them down. This morning, Bob Imperial asked a question on the CF-Talk mailing list related to one of those topics. I answered his question and went to work tracking down another, similar question that I knew I had responded to in the past. I thought it was the same question so my intent was to blog the solution in case anyone else was having the same problem.
In my last post, I talked about a few of the challenges I ran across when consuming an RSS feed using ColdFusion. The whole point of consuming the feed, though, at least in my case, was to display it in some way. That presented a few challenges of its own, although these were all technical in nature and easy to solve once I figured out the problem. The hard part for me was figuring it out. I spent more than a few hours on a couple of these.
About two or three times a year I find myself in need of a background process that either needs to SSH or SCP into a remote machine . Since I do it so infrequently, I need to remind myself of the procedure each time so I've decided to lay it out here for anyone - but especially me - to reference.
This process will allow a user to access, via the SSH protocol, another server without being prompted for a password. This technique is tremendously useful if, for example, you want to run a cron job that creates a backup using rsync or one that simply needs to copy files from another server to be processed locally.
About two or three times a year I find myself in need of a background process that either needs to SSH or SCP into a remote machine . Since I do it so infrequently, I need to remind myself of the procedure each time so I've decided to lay it out here for anyone - but especially me - to reference.
This process will allow a user to access, via the SSH protocol, another server without being prompted for a password. This technique is tremendously useful if, for example, you want to run a cron job that creates a backup using rsync or one that simply needs to copy files from another server to be processed locally.
Anyone that's been building web applications (or doing anything else, for that matter) for any length of time has undoubtedly established a few operating principles that drive the way they work and the deliverables they produce. I have mine. Not too long ago, I sat down and made an effort to articulate the principles (well, at least the big ones) that drive my work and, after some thought, decided to publish them here. I'd be interested in hearing how others apply (or avoid) the principles that I follow.
- Keep It Simple, Stupid
- Separate Presentation from Content
- Separate Content from Behavior
- Prefer Extensibility to Performance
- Prefer Readability to Perforance
- Prefer Simplicity to Flexibility
- Less First, Then More
Generally speaking, I do everything I can to avoid images in content. Simple text is easier, more maintainable, more accessible and, for added incentive, I'm a spectacularly inept designer. Predictably, though, there's always an exception. When an exception arises and I have to use an image, I still want the markup to be semantic and accessible.
The technique I use isn't revolutionary or even new, but I don't see it used very much where I work, so I thought I'd write it down. Who knows? Maybe it's less common than I've been assuming it is.
Anyone that's been building web applications (or doing anything else, for that matter) for any length of time has undoubtedly established a few operating principles that drive the way they work and the deliverables they produce. I have mine. Not too long ago, I sat down and made an effort to articulate the principles (well, at least the big ones) that drive my work and, after some thought, decided to publish them here. I'd be interested in hearing how others apply (or avoid) the principles that I follow.
- Keep It Simple, Stupid
- Separate Presentation from Content
- Separate Content from Behavior
- Prefer Extensibility to Performance
- Prefer Readability to Perforance
- Prefer Simplicity to Flexibility
- Less First, Then More
I've been looking forward to this for a long time now. SuperDuper, of course, is the outstanding backup software for Macs and this release offers compatibility with OS X Leopard. It's not free, sadly, but it's one of those apps that is far enough ahead of its free counterparts that I believe it's worth paying for. Yeah, I know Leopard ships with TimeMachine. Wonderful. Fantastic. Not good enough. Doesn't work for me.
I don't mean that it literally doesn't work for me. It probably functions just fine. My problem with it is that TimeMachine forces me to park a big ol' external hard drive on my desk and hard-wire it to my machine.
I keep trying to leave Firefox behind. And trying. And trying. Not behind, behind like feathered hair or roadkill, but behind as in dropping it as my primary browser. I haven't had much luck so far and it's pissing me off just a little bit. This I tell you this now because I just installed 3.0 b2 on my Mac hoping it would be better than 2.x and my bitterness is a bit more acute at the moment. Needless to say, it's not better. Not really, anyway. It doesn't even look that much better. I may even prefer the look of 2.x with one of Aronnax's outstanding grApple themes applied, to be honest.
As a long time Windows user, one of my frustrations has always been the lack of a decent date/time display. When I transitioned to the Mac a few months ago, I hoped that particular frustration would be alleviated. Although it was better, it still wasn't all it should be, in my mind.
A few weeks ago, I just got fed up with the display on my Windows machine and I went on a serious hunt for a better system clock. I found one that was close, but not quite good enough. I'll have to carry on with the paltry OS implementation. On the periphery of that search, though, I ran across a replacement for the OS X system clock that looked pretty solid so I decided to install it.
I don't know where I've been hiding, but I only heard about Wesabe a few days ago and it looks really interesting. I don't know much right now. Hell, I know anything (or damn close to it). I don't even know how long they've been around.
Any input or experience would be appreciated. I'm thinking about giving it a try...
I don't know whether it's something I'm missing or something extra that I have, but I can never, and I mean never, remember the order of arguments when I need to create a new cron job.
With CronniX, this is no longer a problem.
As an LSU alum, I'm an LSU fan (of course). There's nothing cooler than showing up to class on a Thursday morning during football season, parking in the shadow of Death Valley and right next to an RV (one of many) that's already started tailgating for the game on Saturday. Great atmosphere, great school and great people. I wish I could've been there last night.
About two or three times a year I find myself in need of a background process that either needs to SSH or SCP into a remote machine . Since I do it so infrequently, I need to remind myself of the procedure each time so I've decided to lay it out here for anyone - but especially me - to reference.
This process will allow a user to access, via the SSH protocol, another server without being prompted for a password. This technique is tremendously useful if, for example, you want to run a cron job that creates a backup using rsync or one that simply needs to copy files from another server to be processed locally.
In light of Microsoft's plans (or is it just a proposal?) for browser version targeting, I decided to weigh-in on a more philosophical level. There are a lot of very smart people chiming in on this who are much closer to the situation than I am at a practical level. They are better equipped to speak to any implementation concerns. My concern rests at a higher (as in more abstract, not better) level.
Generally speaking, I do everything I can to avoid images in content. Simple text is easier, more maintainable, more accessible and, for added incentive, I'm a spectacularly inept designer. Predictably, though, there's always an exception. When an exception arises and I have to use an image, I still want the markup to be semantic and accessible.
The technique I use isn't revolutionary or even new, but I don't see it used very much where I work, so I thought I'd write it down. Who knows? Maybe it's less common than I've been assuming it is.
Among the (many) things that I'm admittedly anal about with respect to code is nomenclature. I hate obfuscation, I detest ambiguity, I deplore obscure abbreviations. I'm also not a fan of misdirection.
Reckon I just might've spoke too soon when I posted last night. Maybe. I thought I'd solved all of my issues with MAMP and had successfully bent it to my will when I got pear running. Alas, 'twould appear not. Today I tried to execute an Ant script and one of my Subversion tasks was failing.
On the whole, I suppose, Ant is probably best known as a build automation tool for "traditional" software projects (particularly Java), but its usefulness for building and deploying web applications should not be dismissed. I've been using Ant since maybe 2003 or 2004 to do just that.
This entry offers a high-level view of how I use Ant to meet my own build and deployment needs. Subsequent posts will look at specific elements that are non-standard or that relate to how I integrate Ant into my end-to-end deployment process.
I've been looking forward to this for a long time now. SuperDuper, of course, is the outstanding backup software for Macs and this release offers compatibility with OS X Leopard. It's not free, sadly, but it's one of those apps that is far enough ahead of its free counterparts that I believe it's worth paying for. Yeah, I know Leopard ships with TimeMachine. Wonderful. Fantastic. Not good enough. Doesn't work for me.
I don't mean that it literally doesn't work for me. It probably functions just fine. My problem with it is that TimeMachine forces me to park a big ol' external hard drive on my desk and hard-wire it to my machine.
The other night I had a need to restart Eclipse with the -clean flag. No big deal, I've done this a thousand times. Except - and didn't you just know there'd be one of those?...I've never done it on OS X (have I mentioned that I'm a new Mac user?). Hmmm.
Google is your friend.
Among the (many) things that I'm admittedly anal about with respect to code is nomenclature. I hate obfuscation, I detest ambiguity, I deplore obscure abbreviations. I'm also not a fan of misdirection.
Look, I was an early adopter of TiVo having received my first on Christmas morning, 2000. I was happy - ecstatic - to be able to pause when I needed to take a leak, rewind when a particularly amusing Super Bowl commercial was played and let someone (ahem, something) else worry about whether a show I wanted to record was changing time slots.
That is, until I could exercise my broadband connection and save my phone line and the hours of interminable download time it took to receive updates. Then I was happy.
I write less code than I used to (particularly during the daylight hours), but I inherit a lot of code and I review a lot of code in addition to that which I still write. Today I read something that reminded me to write about a trend - or maybe it's an oversight - I've noticed in the last few years. It seems that a lot of developers are afraid of errors. Somewhere, somehow, it seems like it became the norm to create "bug-free" software by masking bugs and failing silently. Why? Or, more assertively...stop that.
Contrary to popular belief, errors are user-friendly (at least in the long run). Errors are certainly developer-friendly. In almost every case, the latter begets the former, I've found.
I don't know where I've been hiding, but I only heard about Wesabe a few days ago and it looks really interesting. I don't know much right now. Hell, I know anything (or damn close to it). I don't even know how long they've been around.
Any input or experience would be appreciated. I'm thinking about giving it a try...
Generally speaking, I do everything I can to avoid images in content. Simple text is easier, more maintainable, more accessible and, for added incentive, I'm a spectacularly inept designer. Predictably, though, there's always an exception. When an exception arises and I have to use an image, I still want the markup to be semantic and accessible.
The technique I use isn't revolutionary or even new, but I don't see it used very much where I work, so I thought I'd write it down. Who knows? Maybe it's less common than I've been assuming it is.
About a year ago I wrote a feed aggregator for a content management product. In doing so, I ran into a number of issues - some big, some small - that had me banging my head against a wall until i finally tracked them down. This morning, Bob Imperial asked a question on the CF-Talk mailing list related to one of those topics. I answered his question and went to work tracking down another, similar question that I knew I had responded to in the past. I thought it was the same question so my intent was to blog the solution in case anyone else was having the same problem.
In my last post, I talked about a few of the challenges I ran across when consuming an RSS feed using ColdFusion. The whole point of consuming the feed, though, at least in my case, was to display it in some way. That presented a few challenges of its own, although these were all technical in nature and easy to solve once I figured out the problem. The hard part for me was figuring it out. I spent more than a few hours on a couple of these.
In my last post, I talked about a few of the challenges I ran across when consuming an RSS feed using ColdFusion. The whole point of consuming the feed, though, at least in my case, was to display it in some way. That presented a few challenges of its own, although these were all technical in nature and easy to solve once I figured out the problem. The hard part for me was figuring it out. I spent more than a few hours on a couple of these.
