Slicing in Photoshop and Fireworks

19 Dec 2008

Last night, I put together a really quick screencast on exporting slices from Photoshop but decided this morning to put something together that I thought might be even more interesting: exporting slices from Photoshop and Fireworks. Over the years, I've been a fan of Fireworks and export any of my own work right from Fireworks but I've aso had to work with designers who use Photoshop. In order to...

Read it all » vs Entourage

11 Dec 2008

It's been a few weeks since I've been on this lovely MacBook Pro. It's a fabulous little laptop. And probably one of the tasks I've spent the most time doing is sending and receiving email. Keep in mind, this is from the point of view of a die-hard Windows user of many years. I've been using Microsoft Outlook and had really gotten to like the most recent version in Office 2007. My default view in...

Read it all »

Alpha PNGs in Internet Explorer 6

08 Dec 2008

That elephant in the room is losing some weight. The forever scorned IE6 has always had issues with alpha PNGs, those semi-transparent images of goodness. The market share of IE6 is surprisingly big, especially for more mainstream sites and web developers such as you and me are still left holding the bag to support them. Stoyan Stefanov, one of the people behind, has posted the fifth ins...

Read it all »

Rounded Corners in Internet Explorer

03 Dec 2008

You may remember my recent expirement with getting rounded corners in Internet Explorer to work with VML. I tried to come up with a way to mimic border-radius and to be able to implement simple rounded corners into a design. The first implementation I saw that tried to do this in a seamless way was Remiz of HTML Remix. The implementation uses an HTML control (ie: an htc file) that can be easily bo...

Read it all »

SidebarAds Expands

01 Dec 2008

It has been over six months since launching SidebarAds and there have been recent changes. The past six months have been somewhat of a rollercoaster ride when it comes to the success of SidebarAds. Now seems as good a time as any to provide a status report. For those unfamiliar with my ongoing saga in online advertising, be sure to read the announcement post from June, along with my previous disc...

Read it all »

HTTP Monitoring with Charles

27 Nov 2008

With Ajax applications, there's often a need to see what information is being transported back and forth. Am I sending what I'm supposed to? Am I getting back the right response? Most JavaScript developers have Firebug locked and loaded but its requirement to post data back to the server just to inspect the request isn't always a very pracitical solution. The information you get back may not alway...

Read it all »

Navicat for the Mac

24 Nov 2008

I like desktop GUI interfaces for database administration. When I developed for MS SQL Server, I used to use the query tool that came bundled. Then I switched to working mostly with MySQL and have bounced around various apps including the query browser and migration tools provided by MySQL. Eventually I had settled on SQLYog as it had provided one key feature: the ability to edit a query result. I...

Read it all »

The New Switcheroo

15 Nov 2008

I've been using a Microsoft operating system ever since I got a 386sx back in the day. First DOS, then any number of Windows iterations. From 95, to 2000, to XP. It's been a long streak that has finally come to an end. I have switched to a Mac as my primary machine. Why did it take so long? I jokingly say that I've harboured a grudge against Apple ever since they ditched the IIgs for the Mac. Tr...

Read it all »

The Ol' Switcheroo

05 Nov 2008

You have an element and within that element you want an item to be clicked on and set as active. Then you want to click on another item and have it to be set as active. Maybe it's navigation, maybe it's tabs. This is a common pattern. So much so, that I've rewritten this code a few times but keep losing track of it. This is a jQuery plugin that does the ol' switcheroo and is very simple. When yo...

Read it all »

Sidebar Workshops

20 Oct 2008

The Sidebar Creative crew are putting together a workshop! Come join us in Washington D.C. on November 12th as we step through the front-end development of an example project. We'll go from the design process through to implementation with plenty of take-home tricks along the way. This is an intermediate-level workshop targeted to those who already have some experience doing front-end developmen...

Read it all »

Using jQuery for Background Image Animations

22 Sep 2008

After reading Dave Shea's article on CSS Sprites using jQuery to produce animation effects, I felt like playing around with things to see what could be done but accomplish it with a simpler HTML structure (no need for adding superfluous tags) and simpler code, too. Changing the position of the background image felt to be the best approach to creating the type of effect we're looking for (and I'm...

Read it all »

Book Review: CakePHP Application Development

19 Sep 2008

CakePHP has been around for awhile with the final 1.2 just around the corner. Despite that, we hadn't seen any books come out focused on the framework. Thankfully, not one but two books came out recently including CakePHP Application Development by Packt Publishing. The folks at Packt were kind enough to send me a copy and it turned out to be a fairly quick read. It's 300 pages of good starting k...

Read it all »

Tiling Backgrounds in Internet Explorer

18 Sep 2008

With tables becoming less popular, this particular problem doesn't crop up nearly as often anymore but for when those data tables could use a little spice, it'd be nice sometimes to be able to set an image on the table row. The problem is that Internet Explorer 6 and 7 have this little problem: the background image specified in the TR gets displayed as if set for each TD. In other words, a backgro...

Read it all »

A Web Developer's Personal Projects

09 Sep 2008

It's interesting to note that many web developers go through a similar process over the course of their careers. One of those rights of passage is the building of a particular application type. Cutting your teeth on building a larger scale application (at least, larger than a contact form that emails somebody and larger than hacking up an install of WordPress) seems to inevitably involve developin...

Read it all »

The Shelf Life of a Web Site

06 Sep 2008

In relation to some of the conversation surrounding the still prevalent Internet Explorer 6 and why it's still around, I am reminded of some of my past work. There is a CMS that I developed for a former employer back in 2002. It's been six years since then. It was sold to a handful of organizations of which I know at least one, and I suspect more, who still use it. Six years? That's a long tim...

Read it all »

Book Review: Practical Prototype and

05 Sep 2008

In this next installment of Review Fridays, we have a new book from Apress titled, Practical Prototype and by Andrew Dupont. Andrew is one of the core developers of the Prototype library. Prototype is the library that helped open up a new world of techniques for me and, likely, many other JavaScript developers with its Ruby-inspired approach. Prototype is automatically bundled wit...

Read it all »

Broken Promises

30 Aug 2008

Over at The Register, Hakon Lie feels that Microsoft has broken their promise to ship Internet Explorer in standards mode. There are two issues at play here and I'm not sure either is really that big of a deal. Or rather more interesting, if you were Microsoft, what would you do? (Actually, better to think yourself not Microsoft since many are biased against them.) Intranets The dirty secre...

Read it all »

Service Review: W3 Markup

29 Aug 2008

In an effort to force a more regular schedule of posts, this will be the first in an official series of review posts where I'll review books, products and services that I manage to get my hands on. Every Friday I'll try and post a new review. First up is W3 Markup. W3 Markup is an HTML slicing company that can take a Photoshop or Fireworks file and produce the HTML and CSS to go with it. I've use...

Read it all »

An Experiment in Rounded Corners

18 Aug 2008

An idea had struck me this afternoon that there might be some technology deep in the depths of Internet Explorer that might unlock the secret to easy rounded corners. Unfortunately, my initial idea fell flat and I was left in the same place I was before. However, bouncing from idea to idea, I thought to try VML. VML is an XML-based approach that Microsoft came up with and proposed it to the W3C. A...

Read it all »

Don't bring me down

12 Aug 2008

Designers have blogs for a number of reasons. Often they want to show off their portfolio, maybe to expound theory, or whatever tickles their fancy. But as designers are creationists, they often have the desire to recreate their vision for their web site. Take it all down and build it back up again! The other thing that designers often want is some noteriety. It's not about being some A-list web...

Read it all »

Multiple Validation as Behavior in CakePHP 1.2

30 Jul 2008

After some inspiration from a recently published Bakery article, I decided to convert my multiple validation function into a Behavior. Even better, I've thrown it into my plugin collection to make it super easy to drop into any project. Using the new behavior is much like using the script as it was before. You can name the validation properties to include the action name and it'll automatically s...

Read it all »

Creating a Contact Form in CakePHP 1.2

24 Jul 2008

Most contact forms take a name and feedback from a user and mail it off to the administrator but don't store any information in the database. This tutorial will show how to use CakePHP's models, even when no table is being used. CakePHP is great in that you set up a database table, define an empty class file for the Model and suddenly you're halfway there. The Form helper can automatically displa...

Read it all »

Multiple Validation Sets in CakePHP 1.2

23 Jul 2008

In CakePHP, you define how your data should be validated by setting parameters on the validate property of your model. In version 1.2, there is an on option that can be set on a specific rule that, when set, is either create or update. This allows you to define different rules depending on the type of action being performed. That, in combination with the required and allowEmpty properties, give yo...

Read it all »

CakePHP Debug Styles

10 Jul 2008

I just wanted to document this somewhere but whenever I work on a CakePHP project, there's always the debug info that sits at the bottom of the page. It's big and bulky and once I'm off the default CakePHP styles, it's usually pretty ugly. I've done various stylings but I finally took a moment to implement a really simple idea: Fixed position the table and then use hover styles to toggle the vis...

Read it all »

Easier Static Pages for CakePHP 1.2 Update

04 Jul 2008

So it seems that the old code I had didn't work in debug mode, although on the current CakePHP 1.2 RC2, I'm not even sure it works at all. However, I decided to take some time to revisit the code. Last time, I simply hacked up the missingAction and missingController calls and it felt kludgy. It looked kludgy. This time I took a closer look at how the dispatch was being handled. Daniel Hofstetter...

Read it all »

Why Twitter Survives

30 Jun 2008

...or why I think Mashable is wrong. Mashable has an interesting article that places Twitter's popularity purely on its simplicity. Even more bold, it believes that people haven't left Twitter because of its simplicity. Its competitors are simply too complex. I contend that Twitter has succeeded and continues to succeed because no other service matches its breadth of distribution. Avenues of ...

Read it all »

Don't Listen to the Hecklers

26 Jun 2008

This is my response to James Bennett's post on the Designer vs Developer debate but I thought it worth sharing my view point here. So it’s high time we all got over our little internecine feuds and started acting like the professionals we claim to be. That means learning to work with with our colleagues, no matter where they fall on the spectrum of specialized industry knowledge. ...

Read it all »

@media 2008 Wrapup

16 Jun 2008

I know it's been a couple weeks since @media but I did want to document my thoughts and, of course, point people to some resources. First of all, I thoroughly enjoyed the conference. It's certainly on a much smaller scale, probably closer to something like Web Directions North. What I'm finding is that the two track smaller conference seems to be a great size. It gives you plenty of content to ab...

Read it all »


09 Jun 2008

If there's ever a quintessential application to build when you first dive into a framework, it's the blog. That's what I did with when I first got into CakePHP. Then for a recent client project, also built using CakePHP, I was asked to integrate a blog. I took this opportunity to take a chunk of the code I used to build my own site and break it out into its own blog plugin: Snogs. Snog...

Read it all »

An Evolution of Advertising: SidebarAds

08 Jun 2008

It's been over a year since I've last talked about adding advertising to my site. It has come time to provide an update and fill you in on how things are changing. Automation Once again, my biggest downfall was the lack of automation. Campaigns would end and I'd fail to do a followup. In one particularly awkward case, I double booked a spot because I had forgotten that an advertiser had prepaid....

Read it all »

Snape Basic

30 May 2008

Sometimes inspiration strikes when you don't even expect it. While at the @media conference, I was discussing the benefits of Adobe AIR and when it might be advantageous to use it. Certainly not every site or web application requires a desktop component. Sites that have a level of stickiness — sites that you never close the window Muxtape. *bing* goes the light bulb. Why not ma...

Read it all »

Socializing for the Freelancer

21 May 2008

As a freelancer, especially working from home as I do, you might find yourself a little detached from the world. If not for my wife and kids, it might be entirely possible to go days without ever leaving the house and experiencing any in-person social interaction. However, even with family forcing me out into sunlight on a daily basis, I still find myself separated from a larger community. Here ...

Read it all »

Are Freelance Developers a Recipe for Poor Software?

02 May 2008

I recently read the Fast Company article, They Write the Right Stuff, and instantly began thinking of my situation as a freelance developer and what that ultimately means to my clients. The article talks about NASA and the quality control that goes into the software that drives the shuttle. It's fascinating and impressive stuff. “Consider these stats : the last three versions of the p...

Read it all »

Project Management via Email

21 Apr 2008

Hearing the news that Basecamp now supports the ability to reply to messages and comments via email reminded me of an idea for a project I had once. This was a few years ago now but, at the place I used to work, I tried to think of how most of the office worked with clients and with each other. A project would be set in the web-based project management app, people would get assigned to the proje...

Read it all »

No CSS Reset

17 Apr 2008

When asked recently about using a CSS reset stylesheet, I readily admitted that I don't use them. I don't use them for my blog or for any project that I work on. Admitting such can raise an eyebrow or two. Reset stylesheets are definitely becoming commonplace — as you'd expect with companies like Yahoo and industry leaders like Eric Meyer actively using them. So, why haven't I jumped on b...

Read it all »

Adobe AIR Resources for the Ajax Developer

15 Apr 2008

I've been doing a fair amount of writing and developing with Adobe AIR over the past few months and just thought I'd take a moment to wrap up some of the resources I've put together. These resources are mainly for the Ajax developer, since that's what I like to develop with. It doesn't get as much air time (pardon the pun) as using Flex or Flash. Christmas is in the AIR Written for la...

Read it all »

Frustrating Typos with JavaScript

15 Apr 2008

Sometimes it's the small things that can frustrate you. A missing semi-colon, an extra comma. This afternoon, I ran into the invalid script type: <script type="text/javscript" src="example.js"></script> If you're more observant than I you'll notice that the second A is missing in javascript. Without a proper MIME type, browsers don't process the script leaving y...

Read it all »

PHP header can only be called once

11 Apr 2008

I hate spending too much time just trying to solve one little problem. This was seriously one of those times. To give some background on what I was trying to do, I needed to have a user log into one system and have it automatically authenticate against another site on the same server. Your usual "single sign-on" functionality. The problem was, I didn't want to duplicate a lot of cod...

Read it all »

Sidebar Creative: State of the Union

09 Apr 2008

An idea was spawned over two years ago to form a small collective of freelance developers to have the opportunity to work on larger projects. What's happened since then? A number of people have looked at the collective to see if the idea would work. Could you bring together four people, each living in different cities, and have a system that works? Client Work ... or not The original idea wa...

Read it all »

Building Findable Websites

31 Mar 2008

Often times, the term SEO is mentioned in derogatory terms. With many of the poor techniques people use to garner site traffic, it's not hard to see why. However, Aaron Walter has recently finished a book entitled Building Findable Websites which casts a wide net on the concept of building a quality web site that goes well beyond just the mere topic of SEO. The concept of "findable websites&...

Read it all »

Content Overlay with CSS

26 Mar 2008

Here's the problem: you have a container with some content in it like an image along with some initial descriptive text. Then, when users hover their mouse over the container, a hidden container is revealed to present additional information over top of the current information but in a way that retains content from the original container. This was essentially the problem presented to me by Anton P...

Read it all »

Review: PSD2HTML

18 Mar 2008

I got the opportunity to try out the services of PSD2HTML. They're one of the larger design slicers around and was interested to see what I would get. Full disclosure: PSD2HTML advertises on this site and offered up their services in exchange for this review. I'm always hesitant to outsource work but luckily when it comes to HTML/CSS I've had one or two people that I can rely on. So I was a lit...

Read it all »

Maintaining your Personal Brand Online

17 Mar 2008

This seems like a really subtle thing but it's something that I've tried to do and that is establish a personal brand and maintain it throughout all of my online activities. Maintaining a personal brand using your own name or alias can actually be easier than maintaining a corporate brand, especially when it comes to social networks or blog comments. Using a company name within blog comments or s...

Read it all »

Live Chat

04 Mar 2008

Tomorrow (Wednesday) at 10:00am EST (15:00 GMT), I'll be on to do a live chat, open to answer any questions that you might have. Just hop into the snookca channel. I've wanted to do the live chat thing for some time now and have debated between doing it in Campfire, using UStream and Y!Live. I've been hanging out on Y!Live from time to time but it has some issues to work out before I ...

Read it all »

Snoto Photo

29 Feb 2008

In my tradition of coming up with application names that start with "sn", I introduce to you, Snoto Photo. Snoto Photo is a Flickr application built on Adobe AIR using Mootools. It loads up your latest photos, allowing you to view larger versions of them, do a slideshow, or load up the photos from any of your contacts. The goal of this is not to create a Flickr client that "does ...

Read it all »

Snitter for AIR 1.0

25 Feb 2008

Unfortunately, I haven't had much time to work on Snitter the past few weeks but with the relase of Adobe AIR 1.0 today, I've pushed live a new version that'll work. Head on over and check it out if you haven't already. Snitter started out as a hobby project, done in my spare time, which has made it hard to respond to bug reports, feature requests, and other general help requests. It sucks as ple...

Read it all »

Using setTimeout to Solve DOMContentLoaded

14 Feb 2008

Stuart Colville pondered the potential for using setTimeout to solve the DOMContentLoaded problem in browsers that don't support it, namely anything but Opera and Mozilla. His code is deceivingly simple: function DOMReady(f){ if (/(?!.*?compatible|.*?webkit)^mozilla|opera/i.test(navigator.userAgent)){ // Feeling dirty yet? document.addEventListener("DOMContentLoaded", f, false); }else...

Read it all »


09 Feb 2008

“CommandShift3 is like Hot or Not. Except, instead of clicking on hot babes, you click on hot websites.” A very straightforward concept and one that has definitely caught on with a bunch of people. One of the neat things they've done that I like, is the video you see when you submit your site. They've conveniently compiled a list of all the videos for your perusal. Ben Brown and Taylo...

Read it all »

How I built an effective blog comment spam blocker

05 Feb 2008

Mention comment spam and most people, in particular those crazy WordPress users, mention Akismet. Great tool and I have nothing against it but I wanted to build my own, avoiding the external call to the Akismet service. What has been interesting to see, is just how effective it is. Turns out, my spammers are quite obvious. As you might see, I don't use CAPTCHAs and I don't use JavaScript detectio...

Read it all »

Easier Static Pages for CakePHP 1.2

04 Feb 2008

This page is out of date. Please read the update. Traditionally in a CakePHP application, to do static pages you have two options: Use the built-in Pages controller and either have all static pages reside in /pages/pagename or set up custom routes. Set up an empty action in a controller. I didn't like either of those options. With Nate Abele's help, I wrote up a custom error class th...

Read it all »

WDN08: Working with Ajax Frameworks

02 Feb 2008

As I mentioned in my recap, I was a little under the weather but despite that, I was really pleased with my own presentation. Timing was pretty good, if a little rushed at the end, and I felt like there was plenty of good information included. Lots of people came up to me afterwards said they enjoyed it, which made me feel even better. (If you didn't like it, don't be shy to let me know...or post ...

Read it all »

Web Directions North 2008 Recap

02 Feb 2008

Web Directions North has wrapped up its second year and I think the lineup this year was even better than the last (and not because I was in it...I'm not that egotistical!). I was impressed by the presentations, especially Indi Young's Mental Models. For her session, I started somewhat disinterested but the more I listened, the more I became engaged. So much so, that now I want to buy her book o...

Read it all »

Password Protecting Admin Functions in CakePHP

29 Jan 2008

I just wanted to document this for easy future reference but if you don't want to hook up a complex user adminstration with authorization components, you can simply specify that the admin path be password protected in either your .htaccess file or in your httpd.conf. Many thanks to Dragos. (This actually applies to password protecting any folder and not specific to CakePHP, I just happen to be u...

Read it all »

Review: Pro CSS and HTML Design Patterns

25 Jan 2008

Michael Bowers takes an interesting approach with his book, Pro CSS and HTML Design Patterns, by having created what I'd consider an encyclopedia approach. A number of different layout and design patterns are presented with their HTML and CSS solutions. Because the book is very referential, it's unlikely that you'll pick it up and read it from beginning to end. It is, however, a great book to h...

Read it all »

Developing a jQuery Plugin

24 Jan 2008

Sometimes we get it in our heads that a task is too complex that we just ignore doing it. That's been my mindset when thinking about developing a plugin for jQuery. I've always thought that some of the code I developed would make more sense as a plugin but I just didn't have time to figure it out. After finally pushing myself into learning about jQuery plugins, I was left saying, "That's it...

Read it all »

The Importance of Being HTML5

23 Jan 2008

You'll have to excuse my reference to Oscar Wilde but I just learned something very interesting. But before I get into that, some background on HTML5. HTML5 reached Working Draft status at the W3C yesterday (although is dated today). Originally spec'd by the WHATWG, HTML5 is intended to replace HTML4, XHTML1 and DOM2 HTML specifications. There's plenty of new functionality being offered up, from ...

Read it all »

IE8 to include version targeting

22 Jan 2008

I so called it. Back in December, I gave my predictions and on the list was version targeting using the meta element. I even said it'd be using http-equiv. Aaron Gustafson has an article on A List Apart entitled Beyond DOCTYPE that talks about a Internet Explorer's new approach to targeting rendering engines. Like a charset declaration, the X-UA-Compatible declaration can be declared using a me...

Read it all »

Contributing to InsideRIA

21 Jan 2008

O'Reilly and Adobe have teamed up to develop a blog focused on Rich Internet Applications (RIA). It's aptly titled InsideRIA. RIA is a term that Macromedia came up with a few years ago to describe web-based applications with the power and features of a desktop application. We've certainly seen RIAs become very popular over the last few years and technologies like Adobe AIR continue to blur the l...

Read it all »

Microsoft's XMLHttpRequest ActiveX Objects

21 Jan 2008

This is an excerpt from my book, Accelerated DOM Scripting available at Amazon and other fine retailers. Although it's only a small section of the book, it's one of my favourite pieces because it had always been a mystery to me. If you’ve scoured through any number of Ajax solutions, you might have noticed different XMLHttpRequest objects being referred to. Microsoft’s XML implemen...

Read it all »

GridIron Flow

16 Jan 2008

GridIron Software is a local Ottawa company who's coming out with a pretty cool product. It's called Flow and it's essentially an application to track your workflow. I had a chance a couple months ago to get a sneak peek at what they were working on and I'm pretty sure I had a smile on my face the entire time they were showing me what it can do. It's impressive how unobtrusive it is. There's no ne...

Read it all »

Refresh Ottawa, finally

07 Jan 2008

After announcing it 10 months ago, Derek Featherstone and I will finally kick off the first Refresh Ottawa. If you're unfamiliar with Refresh, it's "a community of designers and developers working to refresh the creative, technical, and professional culture of New Media endeavors in the Ottawa region." We'll be holding our inaugural event downstairs at the Clock Tower Brew Pub on Bank...

Read it all »

Evaluating the past year

06 Jan 2008

Another new year is here and is customary by many at this time of year, I'm evaluating how things have changed from a year ago, what worked and what didn't. Personal Personally speaking, this turned out to be a fantastic year. My wife and I got to adopt again, this time from Kansas. We now have two healthy and happy boys and we couldn't be happier about it. I'd like to think we're done having ki...

Read it all »