Merry Christmas
I'm just about to head to bed after now that Santa has placed all the presents under the tree. My almost 4 year old son heard Santa's bells earlier and I don't think he'll have an easy time getting back to sleep. I'd like to wish everybody a very Merry Christmas. (Happy Festivus for the rest of ... you.)...
IE8 Expectations
Microsoft recently announced that the latest dev builds of Internet Explorer 8 pass the Acid2 test. The Acid 2 test is designed to test various scenarios of CSS compliance. What is significant about this is seeing a level of support that possibly matches or exceeds other browsers. Exceeds? Okay, it's hard to look at one little test and think that IE is going to surpass all the browsers. And in ma...
Learning about Adobe AIR
24ways is in full effect again this year and Drew was kind enough to ask me to write an article on AIR. Christmas is in the AIR steps you through building a simple desktop application using the HTML environment within AIR. The article could have easily been three times longer with all the stuff I wanted to cover. If you're interested in AIR, I invite you to check it out. ...
Mix'n'mash 2007
A couple months ago, I got asked by Microsoft to come out to a little event called Mix'n'mash. The goal of the event is to bring about 10-15 bloggers and "influentials" and see where Microsoft is going with a number of their products. More than that, it's a chance to provide feedback to Microsoft as to whether they're on track or if there's anything in particular they should be working o...
Web Directions North in two months
Having been to a few different conferences now, I'm getting a sense of what I like and don't like to see. So, with Web Directions North just under two months away, I have to say that I'm getting pretty excited. Meeting people First of all, I enjoy meeting new people which has traditionally been at odds with my personality. I tend to be shy and talk very little, especially in large crowds. Whil...
Web 2.0 has jumped the shark
I'm about as big a fan of "web 2.0" as anybody. I'm all about user generated content and Ajax-ified interfaces. I can't tell you how many times I've had potential clients approach me asking for a web 2.0 look. Or that they've got a wicked application idea....it's like Flickr meets YouTube meets Facebook. You want me to build that for you? Sure, why not. And yet, as I drove home today, ...
What does Accessibility mean?
If you were to ask people that question, I suspect most would say that accessibility is about making sure something — in our context, a web site or web application — that works for those who are physically disabled. Maybe they're blind or maybe they're a quadriplegic and unable to use a keyboard or mouse in the traditional sense. Accessibility is a spectrum That definition of acce...
Design Inspiration
There's the old saying, "Good artists copy, great artists steal." I still don't know what the difference is but I steal ideas all the time. More and more, I've been looking to architecture for inspiration. Buildings, skyscrapers in particular, share characteristics with the common web page. They're built and designed for a vertical space. As a result, many of the design elements that g...
Determining Next Date with Excel
Excuse me while I self-document something. I've been using Excel for years. I've done some crazy stuff with Excel. One of the more tame things that I've done is track my finances with it. I have a spreadsheet that I've entered all my bills and especially indicated all the ones that automatically withdraw from my bank account. However, I want to know the next time they're going to come out. I can...
Hacking in International Keyboard Support in AIR beta 2
Sometimes you have to get crazy to pull something off. This is one of those times. I'm putting this together to share with other developers but also to demonstrate just how hackish I can get. What's the problem? Adobe AIR beta 2 has a bug where only the US keyboard layout is recognized within the HTML control. To go back a little further, AIR is essentially a Flash-based runtime that lets you ...
CSS Animations in Safari
Safari is building in CSS animations. That's right. With a little bit of CSS, you'll be able to animate obects on the page. The transitions are built using a number of CSS declarations for declaring what properties should change, for how long, and even being able to transform the object like rotations. Sound cool? I don't think so. Not only does it make CSS more complicated, it makes JavaScript m...
The Joys of Application Development
These days, I'm really enjoying what time I can spend building my desktop application, Snitter. Not because it's released me from the frustration of using the web site but because of the joy it's brought to other people from using it. Creating Passionate Users One of the first unexpected things was seeing the support and passion from the early adopters. A post about some twitter tool would pop u...
Snitter on AIR Beta 2
A week ago, Adobe released a new version of the AIR runtime. Shortly thereafter, I released a new version of Snitter, my Twitter client that I built on top of the runtime. Since then, I've been adding in a bunch of new features, bug fixes and tweaks. Dan Rubin did the design on the new Snitter version and it's been very well received. That, along with themes, has proven to be very welcome additi...
Speaking at FOWD
Only four more weeks until the Future of Web Design conference hits New York City. I'll be there speaking on Ajax and Design. I promise not to be all technical... instead, I plan to talk about best practices when it comes to using Ajax to solve design problems. The conference is gearing up to be a lot of fun. While the workshops appear to be all sold out, conference tickets should still be availab...
Questions and Winners of Accelerated DOM Scripting
Wow. Over 230 people left a comment to win a copy of Accelerated DOM Scripting. Either people really want to get their hands on it or people just really like free stuff! A few people also had questions about the book and I figured now would be as good a time as any to reply to those. Questions Answered I'm thinking of writing a book, too. What software do you use? Most publishers have a Micro...
Accelerated DOM Scripting
Yippeee! My largest writing effort to date has finally come to fruition: Accelerated DOM Scripting with Ajax, APIs, and Libraries published by the fine folks over at Apress. The book was something that I started last summer after having met the senior editor at the time, Chris Mills, at SXSW. (Chris has since moved on to Opera...the browser, not the musical style!) The writing was slow going and...
Recap of Webmaster Jam Session 2007
I'd be remiss if I didn't talk about what a fantastic event WJS2007 was. Simply put, it was a blast. Lots of fun with lots of great people. Everybody was super happy (both speakers and attendees) and there was plenty of great content. All of the sessions I managed to check out were very interesting and I walked away with something new from every one of them. J Cornelius and the folks at Coffe...
Determining Offsets with Scrolling Overflow
In drag and drop situations, there's often a time where an area of the page is within an element with the overflow set to scroll. This is common to display a list of items that would be longer than the rest of the elements on the page. If you're dragging from Section A to Section B, you don't want the user to have to scroll down the page to access the drop point. JPG Magazine is a prime example o...
When Advocacy Loses its Edge
In our society, I believe we tend to put greater value into the opinions of those who have a neutral standing in the matter. It's why film critics have the careers they do. They are impartial to the entire film-making process. If comments of disdain come from a competing studio, you cast the opinions aside. "Of course they think it's crap. They don't want the competition to be successful,&quo...
Adobe AIR and HTML
Adobe AIR is currently in beta (with a second beta version rumoured to be released in October) and I thought it a good time to take a deeper look into things and see how easy it would be to develop an application with it. To do so, I decided to build Snitter. Building for the web and desktop My original goal was to build an application that could work well on the web and as a desktop applicati...
Snitter Alpha
Snitter is "Snook's Twitter": an Adobe AIR-powered application for twittering. If you haven't heard of Twitter, they are the bastards who beat me in the Blog category of last years SXSW Web Awards fine folks who build an interesting little app best described as 'micro-blogging'. Twitter allows you to send messages of up to 140 characters. You can follow what other people are doing and th...
Snook++
Things have been crazy busy for the past couple weeks and for good reason. I've mentioned before that my wife and I were in the process of adopting. Last Wednesday, the day we've been working towards for almost two years had finally arrived: to be parents once again. Lucas Adam James has become the latest addition to the Snook clan and we couldn't be happier. Our deepest gratitude to the birthmo...
6 Keys to Understanding Modern CSS-based Layouts
Much of CSS is pretty straightforward and, I suspect, quite easy for most people to grasp. There's font styles, margin, padding, color and what not. But there's a wall that people will run into... that point where a number of key elements need to come together to create a solid CSS-based layout that is consistent cross-browser. These are the six things that will help people get over the hump. ...
Creating a Page Break
The folks over at 37signals have a blog post today about print style sheets. Basically, just add everything you don't want to print into one statement and set it to display:none. I do the same thing here on Snook.ca. I have an extra little tip that's also very applicable to those who run blogs: force a page break before the comments. #comments {page-break-before:always;} I do this so that...
Summer Update
I've been in a creative rut and haven't eeked out a blog post in over two weeks. But I haven't been idle... I've been wrapping up a number of projects that I've had on the go, which is nice. A bunch more are also starting up but smaller stuff at the moment. If there's one thing that I enjoy about the freelance, it's the fact that I can adjust the type of projects I take on to give myself differe...
Review: Web Development Solutions
There is a recent book out by Friends of Ed called Web Development Solutions: Ajax, APIs, libraries and Hosted Services Made Easy. Web Development Solutions is a good book for those looking to learn how to build their own web site. It covers the popular stuff going into blogs these days. This book, by Yahoo employees Christian Heilmann and Mark 'Norm!' Norman Francis, covered a...
Three Interviews
Three recent interviews if you feel like gaining some additional insight on me. First up is an interview with JavaScriptWorkshop.com where I oddly talk about JavaScript. Second, is Devlounge talking about some recent sites. Lastly, I chat with Adii from South Africa about freelance....
Zend Framework: First Impressions
Last week, the first production release of the Zend Framework was released. I've taken some time to read through the documentation to understand what each of the components do. And you know what? I think I like it. What is it? A powerful high-quality open-source framework focused on developing modern Web Applications and Web Services That's how Zend describes the framework. What's interes...
Understanding Pseudo-elements
In CSS, there are certain selectors you can use that act like you've injected new HTML into the page and have the flexibility to style those new imaginary elements. These are known as pseudo-elements. CSS 2.1 has four of them: :first-line allows you to style the first line of a block element :first-letter allows you to style the first letter of a block element :before allows you ...
Track Comments with Co.mments
I've been using for months now and Co.mments is by far my favourite way to track comments on a site. How does it work? Through the use of a bookmarklet, I just hit a button on a page whose comments I wish to track. It doesn't matter if the site uses WordPress, Movable Type or a custom home-grown solution. And you don't have to leave a comment in order to continually track the page. Even better...
Google makes FeedBurner Pro free
Google, after its acquisition of FeedBurner, has now made the pro features free for everyone....
Zend Framework Releases 1.0
Zend Framework hits 1.0. It's a PHP5 MVC framework. I haven't had a chance to play with it yet but I want to....
Using Math object to shorten scripts
Christian Heilmann talks of using the Math object in JavaScript in some very nice ways. In particular, using the min and max methods to save extraneous if/else logic and even normalising property values like scrollTop. ...
Focus Clouds
Focus clouds. It's like a tag cloud but with more focus. With PHP source code. Makes tag clouds just a little more interesting....
Elemental: Conditional Content with CakePHP
I finally got around to implementing conditional content here on Snook.ca. I've wanted to do this since I moved to the new design just over a month and a half ago. The left sidebar has a number of elements like the projects I've worked, quick links, etc. As some people have noticed, if the article was particularly short, the comments would often overlap the rather lengthy content. I didn't wa...
Google Universal Search
Google is slowly integrating their verticals into one massive search. From an SEO/SEM perspective, I find this interesting....
IE6 Memory Leaks Fixed
Mark Wubben reports that Microsoft has fixed the memory leaks in IE6 and pushed the security update out to XP users. Happy days!...
Webmaster Jam Session 2007
Remember when I said that I was going to be more proactive in going after speaking opportunities? The approach has already paid off as I'll be speaking at the Webmaster Jam Session in Dallas, Texas. It's on Septermber 21 and 22 and I hope to see you there. I keep hearing from everybody that was there last year that it's plenty of fun. I'm definitely looking forward to meeting plenty of new peopl...
Private JavaScript
With JavaScript, you can create private methods and properties using what Yahoo describes as the module pattern. Here's the basic construct, including a private method: MyObject = function(){ var privateMethod = function(){ /* do stuff */ }; var obj = { publicProperty:5, publicMethod:function(){ /* do stuff */ }; }; return obj; }(); // run it right away If you're...
Incremental Leading
Mark Boulton, who's covered some great typography and grid design on his site now covers incremental leading. Because vertical rhythym can look bad....
IE Fires Onresize When Body Resizes
When a user resizes the browser window, I wanted to resize some elements on the page. So, I attached an onresize event handler to the window. I noticed it rather peculiar when Internet Explorer 6 kept locking up on me. Turns out, IE6 fires the event even when the document body changes in size. Here's a quick example to demonstrate: <script type="text/javascript"> var currheight...
Unicode for CSS Class Names
In doing some research, I discovered that you could use Unicode for CSS class names. Okay, nothing earth shattering by any means. But think of the ideograms that exist within and how applicable they might actually be. Take for example a common rounded corner HTML setup: <div class="container"> <div class="left-top"> <div class="right-top"> ...
Why Safari for Windows?
A common question that seems to be heard now that Apple has released Safari for Windows is "Why?" And while I don't know the real reasons, I have my opinion on the matter. For Web Site Developers When asked why Safari is being released for Windows, a few people have said that it is intended for developers to be able to check their sites without having to own a Mac. It'll definitely be...
Spiekermann Interview
This interview with designer Erik Spiekermann is fascinating; especially all the tidbits on professional life. (via)...
SnookSurvey #2: To Link or Not?
The discussion on this should prove interesting. So, you're ajaxifying an interface and you've got some JavaScript injecting new elements into the DOM for the purpose of enabling interaction. For example, you've got an FAQ with a series of questions and answers. Questions are marked up with H2's (or maybe you prefer definition lists for your FAQ, whatever, this is just for argument's sake). You hi...
SnookSurvey Recap: Element Attributes in JavaScript
So, in the first edition of this survey I asked whether people thought they should use element.attribute or element.getAttribute('attribute'). In the end, it came out pretty much 50/50 although some people tended to switch depending on the situation since some scenarios present some gotchas. It took until the 20th comment before someone mentioned the fact that, indeed, element.attribute is part o...
A Closer Look at Movable Type 4 beta
After being a little mean in my quick link (and being called out for it), I decided to take a closer look at the newly released Movable Type 4 beta to see if this is a monumental shift that could rattle those WordPressians or ExpressionEnginites into switching over. Installation The first thing I noticed in downloading the beta was file size. It weighed in at a hefty 4MB compared to under 1MB fo...
Movable Type 4 beta released
Movable Type 4 beta is released and I have to ask myself if any of their users are still around to care....
Toggler v0.1
I decided to put together a little proof of concept. The idea is to mimic the functionality found in desktop applications like Adobe Photoshop where a user can click on a checkbox and while continuing to hold the mouse down, can move over other checkboxes and have them toggle as well. I've put together a demo page for Toggler that you can check out and play around with. Because this is a proof o...
Firebug 1.05 Profiling Bug
I just reported this little nugget to the Firebug bug report. Basically, the problem I ran into was in trying to do some profiling using Firebug to see where my code bottlenecks were occuring. Little did I realize that I was being led astray. If you're not familiar with using the profile feature, you should be. It's a handy way to see how much time is getting spent in each function. (Maybe I'll d...
The Untapped Power of Design Galleries
There's a love-hate relationship that many designers have with design galleries like CSS Remix. They offer decent traffic when we get listed. Traffic hopefully leads to sales leads. Stuff we all like, of course. But we hate them for the (usually) useless comments and the voting that does a good job of narrowing down sites to a number between 3.0 and 3.5. But there's an untapped source of data he...
Why I Left 9rules
With all of my preamble on sharing ones side of the story, I felt the need to share why I left 9rules. I wanted to share it because a few people have asked about why I left. I want to avoid and correct any misconceptions. Whether or not this was the right thing to do remains to be seen. In the beginning Like any story, we need to start at the beginning. I joined 9rules back in 2005. I asked to...
Telling Your Side of the Story
I watched with some fascination as the story of Derek Powazek's departure from 8020 Publishing unfolded. Basically, Derek and Paul hit an impasse and Derek left the company. Of course, that simplifies things greatly and leaves out much (if not all) of the subtlety of the debate. This raises a slew of questions and ones that I don't think I have the answer for. Should this debate have been aired p...
SnookSurvey: Element Attributes in JavaScript
I'd be interested to hear what the general consensus is on something. Consider this like a SimpleQuiz but not really simple and not really a quiz. More like a survey. SnookSurvey. And survey says... I've got an element that I'm working with in JavaScript and I wish to get and set an attribute. How do you do it? Using element.attribute E.g. mylink.src = '/path/to/image.gif' Using element....
So you want to be a speaker?
The fame. The glory. The joys of galavanting across the planet presenting at conferences around the world. Sounds exciting doesn't it? Let me tell you, it's not as easy as it sounds to break into the speaking circuit. In fact, let me impart my experience and viewpoint on the matter. New Blood Talk to a conference organizer and one of the many things they'll talk about is getting new blood. Tal...
Anonymous Functions in PHP
Anonymous functions to make their way into PHP? I'd like it. (via)...
V8: Supercharger
Version 8 is launched. Oh crap. Well, I've decided to have some fun and call this "Supercharger". It's been months in the making. Seriously. It's gone through iteration after iteration but I finally think it was good enough to launch. It's been tweaked and prodded all the way to the finish line. And this isn't even done yet (as is probably obvious in a few places). This isn't even a l...
Can running your own advertising be worthwhile?
The short answer is yes, running my own advertising has been worthwhile, and it's been a good learning experience. In talking with those that advertised, the response has been good with many saying that it resulted in additional business. Let's take a look at some of the lessons I've learned. Good design Running your own advertising gives you the benefit of having ads fit into the overall look ...
Managing Style and State
Even on the simplest of web pages, we have to handle different states that parts of our document may be in at any time. Probably the most common of which is the simple rollover. Move your mouse over an element and the image changes. This was traditionally done with images and JavaScript until CSS came along and gave us the :hover pseudo class. What happens when a state needs a little more perman...
Tracking Project Profitabilty
With today being the last day to file taxes here in Canada, I had the enjoyment of going over all my financial information for last year. It's been enlightening to say the least and has reinforced the fact that I really need to get this under control. First and foremost my biggest mistake is not keeping track of things. For each project, this is what I should be tracking: Time. All hours on ...
Hosted Subversion
In setting up a dedicated server for a client, I was looking into setting up a Subversion repository. For those not familiar with Subversion, it is a version control system. Basically you check files in and out of a repository (repo) and it'll keep track of all the changes that have been made. Any quality software development process should include some form of versioning. Mine to date has merely...
Dailypixel.ca nominated for CNMA
A client of mine, dailypixel.ca, whose site I designed last year, is a finalist for the Canadian New Media Awards. Cool....
The Death of Comments
It's sad and disappointing but the death of blog comments may be near. It's getting harder and harder to fight against the hordes of spammers and mediocrity and animosity out there. Now, I do have to say that for the most part, I've been lucky. I've managed to escape much of it. I have a custom built spam filter that does a decent job of keeping out the blatant stuff. It's interesting just how pr...
Shorter XHR Abstraction
Ajaxian posted about Nicolas Faugout's approach to abstract the XMLHttpRequest object. if (!XMLHttpRequest) { function XMLHttpRequest() { return new ActiveXObject('Microsoft.XMLHTTP'); } } The problem, as pointed out in the comments of that article is that Internet Explorer declares the function before it runs the code. In Firefox (and possibly others), it doesn't. Therefore, it s...
The Art and Science of CSS
I have been keeping this under wraps but no longer: The Art & Science of CSS is out! I first got a peek at the book when the Sitepoint folks were at SXSW and it looks really nice. Luckily, I now have my own copy which I promptly pull out whenever someone comes over to the house. I also make sure to walk around the house with my pipe and smoking jacket saying "indubitably" quite frequ...
How I Found My Niche
On running your own business, an interesting piece of advice that I read was to market to a niche audience. Considering myself a jack of all trades, I decided to ignore that advice. In the beginning When I first went freelance, I tried to market myself as a man of many talents. "Everything you need in one package," as the tagline on my site said. I've developed projects in a bunch of ...
Quick Link: Freelance Switch
Freelance Switch is a blog about freelancing. Absolutely great content....
WithCake.com Revamp
Sometimes you have to try something a few different ways to get it right. When I originally launched WithCake.com, I had used it as a blog to talk about anything I ran into with CakePHP development. However, I quickly found that some posts bordered on the edge of general PHP stuff. Plus, many regular readers of Snook.ca seemed interested in following along even though they might not develop in C...
Quick Link: CakePHP and Flickr
Create a photo gallery using CakePHP and Flickr. An article I wrote for Sitepoint has gone live....
Reworked.
Everybody kept saying that my logo looked like a Macromedia product so I thought I'd have my hand at reworking the logo and make it a little more bulletproof. I've tried to keep the familiar S but work within a framework that gave me more flexibility and seemed to speak to the kind of stuff that I do. I also integrated more green into the logo to really emphasize the brand. I'm confident that I've...
Abundance Mentality
Something that I was reaffirmed by at SXSW was the community of sharing that exists. It's a really powerful force that makes the web a great place to be and makes me happy to have a career involving the web. I just finished reading the 7 Habits of Highly Effective People and one of the things the author talks about is the abundance mentality. As explained in the book, it's understanding that ther...
Recent Podcasts
Although I haven't mustered up the courage to put together my own podcast, I have managed to get into a couple others. The Art Institute of Atlanta Aaron Walter graciously asked me to speak to his class at the Art Institute of Atlanta. I basically ramble on for way too long on design and freelance. The first 13 minutes has me talking about how I got into the industry. The next 17 minutes, I ta...
The Remote Worker
It's great to be able to work from home. The Internet gives us a great deal of flexibility to do that. What with webcams, voice over IP, email and IM, we're almost as connected as when we work in the company office. In fact, even in an office, we usually just IM'd each other anyways. No need to get up from your desk to see if something is done. And yet, many companies are reluctant to allow their...
BarCampOttawa3
Just over a week away is the third iteration of BarCamp in Ottawa. I attended the first and thoroughly enjoyed it but had to miss the second. Luckily, I should be able to make it this time and it should be a good event. The last BarCamp I went to attracted a different crowd than what you might see at something like SXSW. It's got more of a business-casual feel to it with people seemingly having a...
Quick Link: Rules and Context
Andy Rutledge talks of Rules and Context in art and design and sums up the difference between art and design quite nicely, too....
CodeIgniter vs. CakePHP
I almost fear putting this kind of post together as it's bound to pull the fanatics (in the negative sense of the word) out of the woodworks. Right off the bat, let me just say that I've tried to be as fair and honest in this assessment and I've tried to keep it just to the facts while interjecting what my preferences are. I'm pitting these two frameworks against each other but there really isn't...
Building English360
For over just a year now, I've been working on an e-learning application for English360. You may have heard of them as the site made it into Stylegala having been designed by Cameron Moll. I had originally intended to only work on the project for a few months to work on designing the application. However, once we got to the development stage, I decided to stay on board to develop the applicatio...
SXSW'07: After the Storm
I thought I'd be diligent and blog each day with vim and vigor. Alas, the lack of free internet access in my hotel and the lack of desire to drag my behemoth of a laptop around meant I didn't do that. Now, I have to summarize it all into one massive post. Uniting the Holy Trinity First off, I have to say kudos to Dustin, Sally and Cameron for the panel. I felt really good about it and think we ...
SXSW'07:The Home Version
"That's right! You, too, can play along with the home version!" It's friday morning and I'm sitting here in the hotel room after about five hours of sleep (my usual, these days). I arrived last night around 9:00 and touched base with Anton Peck as planned. We both arrived to our respective hotels within minutes of each other. I walked the two short blocks to his hotel and met his "boss" and co...
Refresh Ottawa
Derek Featherstone and I have chatted about the events within the Ottawa region and how there didn't really seem to be anything directly targetted to us. BarCamp comes the closest but it doesn't happen very often. To fill that void, we've decided to initiate Refresh Ottawa. In the words of the Refreshing Cities web site: Refresh is a community of designers and developers working to refresh t...
position:relative and overflow in Internet Explorer
I've been working on this layout that had a relatively positioned element inside a container with overflow. Everything looked good until I switched to IE7 and noticed that my positioned element remained fixed. Here's some code to demonstrate the problem: <div id="container"> <div id="a"></div> <div id="b"></div> </div> ...
One week
That's right. Only one week left until SXSW Interactive. I must say, I'm getting excited. I went through and loaded my calendar up with all the stuff I want to see. Of course, you all have to come to Uniting the Holy Trinity of Web Design panel. It looks like they put us in the big room so we need to fill those seats! Besides, with the likes of Cameron Adams, Sally Carson and Dustin Diaz, you can'...
Agency: the new four letter word
Nobody seems to want to run an agency anymore. Many see it simply as a means to an end: running a software company. "Do what you can to do what you love." Many point to 37signals as a successful example of a company who has managed to transcend the traditional agency model of client work and been able to sustain themselves off the revenue generated from the services they offer. I,...
Be Library Agnostic
One of the slides in my presentation at Webvisions last year was titled "Avoid Library Calls". The idea behind this was to try and build your code in a way that it didn't need to be tied so deeply to one particular library. Here's the example I used: function makeBlack(elementname){ $(elementname).style.color = '#000'; } function makeBlack(element){ element.style.color = '#0...
Close your tags
This has bitten me a couple times now and I feel like an idiot every time it happens. If you don't close your tags properly and you need to access elements via the DOM, expect trouble in Internet Explorer. I do most of my testing in Firefox which has been very forgiving and as a result, I'll get to the point where when I switch to test in IE, the browser throws an error and worse, won't even ren...
Handling Onscroll
Way back when I first implemented the fixed comments, I used JavaScript to duplicate the effect in Internet Explorer 6. It was really choppy but it worked. This type of script has been around since the Age of DHTML but I still get the occasional person asking how this was done. So here's the original code I had: function window_onscroll() { var el = document.getElementById('postcomment'); ...
Symfony 1.0 Released
Symfony is an open-source PHP web framework, much in the same vein as CakePHP (which I use), and it hit 1.0 yesterday. I hopped in to take a closer look at things by poring over the documentation and comparing it to what I know about CakePHP. Very similar yet very different Symfony and CakePHP take very similar paths when it comes to how they approach things. It's the typical MVC approach wit...
Debug Flash with Firebug
Debug Flash with Firebug. Aaron Bassett created a cool actionscript object which can log info into the Firebug console. Sweet....
Feed Subscriber Rates
Google appears to be the new champ when it comes to feedreaders. Bloglines for a long time had been my number one feedreader. It got bumped off the block by Netvibes, although they've both held fairly steadily. However, with Google now broadcasting subscriber totals, it seems they have a 50% lead over either. Happy days for me as I'd been itching to hit the 5000 mark, only to wake up today to ...
Self-referencing in VBScript
Does anybody actually develop in VBScript anymore? If you did ASP development, you likely did so in VBScript. ASP was the first server-side language I got into heavily. It took me learning Java and all the object-oriented programming concepts that go with it before I looked to see if the same thing could be accomplished with VBScript. While the OOP features in VBScript are pretty minimal, you ca...
WDN'07 Recap
Let me just say that it's been quite a week. In fact, right now, I'd be happy if I didn't have to get on another plane for awhile (oh, for about three weeks or so). The week started off with two plane cancellations and getting put up in a hotel in Cincinnati called the Drawbridge Inn. Classy place, I tell you. They had these engraved plaques that look like they've been in place since the place was...
SXSW 07 Web Awards
This was revealed a few days ago but I'm only just getting around to mentioning it. This very blog, Snook.ca, got nominated for this year's SXSW Web Awards! I'm in the Blog category with: April Zero BuzzFeed Superfluous Banter Twitter I have no clue how they determine a winner (I think they flip a coin...that's how I'd do it) so it's anybody's ball game. Interestingly enou...
Making a Good Favicon
If ever there was a pet peeve of mine, missing or crappy favicons probably ranks pretty high (undoubtedly, higher than it should). "A favicon (short for "favorites icon"), also known as a page icon, is an icon associated with a particular website or webpage. " ~ Wikipedia Tied into my usual rants about personal branding, having a favicon is yet another way to establis...
Clean Up Debugging
I've come to depend on Firebug so much that I left behind a couple console.log messages while testing a project. Problem was, with Firebug disabled (or not installed as was the case with a client), the application was failing. Looking at the code, nothing seemed out of place. I tried disabling Firebug and true enough, it stopped working. Took me a couple minutes to realize the debug code was getti...
Pay to Upgrade?
I'm curious why people expect certain things for free. For example, the new version of Mint is out. I've read of a few people who expected to receive the new version for free. EXPECTED. Why is that? When I buy a car, I don't expect free upgrades for life. When I buy Microsoft Office, I don't expect free upgrades for life. When I buy any piece of software or hardware I simply don't expect to get ...
Review: PHP Solutions
The folks at Friend of Ed were kind enough to send me a copy of PHP Solutions, by David Powers. This book is solely intended for someone who hasn't used PHP before but approaches it in a way that is different than most books I've seen. The cover describes itself as a way to "create dynamic websites with PHP and MySQL, quickly and painlessly" and presents itself like a recipe book for ...
Sidebar Creative
A new collective is born: Sidebar Creative! Sidebar Creative is the combined talents of Steve Smith, Dan Rubin (aka Superfluous Banter), Bryan Veloso (aka Avalonstar) and myself. We put the Creative together as a way to pool our resources on larger projects and to have a company from which to expand our reach. It's nice to know that I have a great team who has my back and whom I can readily r...
Ages of the Web
James Bennett puts an amusing tale together chronicling the Ages of the Web...
The JavaScript Environmentalist
As a JavaScript developer, you are in many ways an environmentalist. JavaScript is a language unlike most other languages. For when it comes to JavaScript development, we must consider the mantra of the environmentalist: Reduce, reuse, recycle. Reduce When developing server-side, we have flexibility. For the most part, whatever code isn't executed, is simply hard drive filler. It doesn't affect ...
Prototype 1.5.0 Released
Hot on the heels of the recent jQuery release, Prototype has hit 1.5.0 and now has it's own site. Not only that, but a whole team has been working on documentation. That's right, official documentation! Go on and read the official announcement. That's right, they even have a blog!...
Web Directions North 2007
Only three weeks from now on February 6th, Web Directions hits Vancouver in what should be a fun event. First, it's in Canada, and there doesn't seem to be enough quality web conferences here so seeing Dave Shea and Derek Featherstone along with Maxine Sherrin and John Allsopp help organize something like this is very nice. This will be a more intimate affair than something like SXSW and should ...
Tips for a Better Design Review Process
D. Keith Robinson offers his Tips for a Better Design Review Process. My favourite: don't be afraid to show a client some rough work to make sure you're on the right track....
And the winner is...
Congratulations go to Teevio! His winning entry has won him an Interactive Pass for SXSW 2007. Many thanks to everybody that took the time to put in an entry. Putting this little contest together was fun and was a nailbiter right to the end. It demonstrated that my wife and I are diametrically opposite when it comes to what we were looking for. She, being ever so smart, thought of a point sys...
jQuery 1.1 Released
jQuery 1.1 released. Congrats John and the rest of the team. Probably one of the smallest yet fast and robust libraries out there....
Mootools r.83 Cheat Sheet
In the same vein as the Prototype Cheat Sheet, I decided to go through and detail the Mootools library, as well. In comparison to Prototype, Mootools is definitely smaller and it's obvious they've put more focus on interactivity and decent DOM traversing. I've colour-coded this one to match the four main categories that are in the download section of the web site and within the documentation. Th...
Prototype 1.5.0 Cheat Sheet
I've gone through and detailed the methods and properties of each of the modules within the Prototype JavaScript library. I decided to revisit the cheat sheet. A couple people had been asking about it and with the final release of 1.5.0 just around the corner, now seemed as a good a time as any. I've done things a little differently this time. The first time around, I really just wanted to see ...
Mid-week Update
I had a few things I wanted to mention and separate posts about each didn't seem warranted so here it is: 3 days left! The SXSW 2007 Interactive Pass Contest was off to a strong start with a bunch of really good entries. It should be fun coming up with a winner. My wife will be assisting in the judging so who knows what direction the final results will lean towards! Remember, the deadline is th...
Getting Help from CHM
If you're a developer on a Windows machine (which my stats would seem to say is likely!) then you may be interested to know that most languages offer compiled help files that you can download to your machine. Almost every application for Windows comes with a help file. Do a search on your drive for *.CHM and you'll uncover a whole collection of these help files on your system. I prefer the CH...
Have a Mint
Shaun Inman released Mint well over a year ago and I've only just caved in and purchased a copy. I never felt it was worth the $30 when so many other free alternatives were available. However, one thing I've discovered is that I like stats. I like them very much. As a result of all the rave reviews I've heard elsewhere, I decided to pay for a copy myself. As it turns out, Mint is pretty darned c...
Review: Pro CSS Techniques
I have to say, I was looking forward to getting this book. Pro CSS Techniques is as the tagline says, "real-world CSS techniques for real-world CSS professionals." It contains very practical approaches to the issues and considerations we run into every day. The book is well structured for the most part, starting off with a bit of a refresher on introductory CSS topics and then moving i...
Delete Cached Models in CakePHP
This seems to bite me in the ass more often than not but any time you add a new model or adjust your associations, be sure to delete the cached ones from the /app/tmp/ folder. I'll get inexplicable errors about missing models and it always takes me a couple minutes to figure it out....
Is Digg Too U.S.-centric?
That may seem like an extremely obvious statement to some but in taking a look at some numbers after an article got dugg, I was surprised by just how much. First, lets take a look at the country breakdown of the visitors for this site: As you can see, the US is a huge chunk of that and this is fairly average from month to month. Nothing too surprising, really. Four of the top five countries ar...
SXSW 2007 Interactive Pass Contest
That's right folks, just a little over two months to go until 'south-by' kicks off. The interactive component is, of course, what many of us will be heading down for but I know a few people sticking around for the music. (Incidentally, it's really easy to tell the music attendees from the interactive attendees from the film attendees.) So, I've got an Interactive Pass up for grabs but I'll get t...
Finding Business
A common question I get is, "Where do you find your clients?" The fact of the matter is, I don't. They find me. That's right. I invest no money in sales or advertising. I don't even have a portfolio. Yet, it's not uncommon to get a couple requests a week for work. I believe that there are three good reasons why this is: I network I have a blog I write in places other than ...
Sergio's Prototype 1.5.0rc2 Documentation
Sergio Pereira updates his Prototype documentation for 1.5.0_rc2....
Use of ADDRESS Element
After seeing it mentioned in Transcending CSS and then again in Pro CSS Techniques, I think there may be a general misconception as to how the ADDRESS element should be used. In neither case did the authors explain how or why the element should be used. In fact, it seemed implied that it should be used to mark up any postal address that might find its way onto a web page. In the argument of sema...
TIPS, TRICKS & BOOKMARKS
I'm Jonathan Snook and I write about web design and development. I 






